|
|
1.1 ! root 1: #!/bin/perl ! 2: # ! 3: # This is a small perl script that emulates gcc with the ! 4: # SAS/C compiler. It is mainly created to compile UAE ! 5: # with SAS/C to test 68060 optimisations. ! 6: # ! 7: # (c) 1997 by Samuel Devulder. ! 8: # ! 9: ! 10: # dir used so that links are properly handled by SAS/C ! 11: $LNDIR = "scc-idir"; ! 12: ! 13: # replace all filenames that actually are links ! 14: for($i=0;$i<=$#ARGV;++$i) { ! 15: $_ = $ARGV[$i]; ! 16: if(/\/[^\/]+$/ && -l $`) { ! 17: $_=readlink($`).$&; ! 18: } ! 19: $ARGV[$i] = $_; ! 20: } ! 21: ! 22: # create link-dir so that SAS/C can handle header files stored ! 23: # in linked directories. ! 24: if(! -d $LNDIR) { ! 25: mkdir($LNDIR,0777); ! 26: while(<*>) { ! 27: next if ! -l $_; ! 28: $linkname = $_; ! 29: $realname = readlink($_); $realname =~ s/[.][.]//g; ! 30: if(-d $linkname) { ! 31: mkdir("$LNDIR/$linkname",0777); ! 32: while(<$linkname/*.h>) { ! 33: open(OUT,">$LNDIR/$_"); ! 34: s/^.*\///; ! 35: print OUT "#include \"$realname/$_\"\n"; ! 36: close OUT; ! 37: } ! 38: } else { ! 39: open(OUT,">$LNDIR/$linkname"); ! 40: print OUT "#include \"$realname\"\n"; ! 41: close OUT; ! 42: } ! 43: } ! 44: } ! 45: ! 46: # build general command-line ! 47: $_ = " @ARGV"; ! 48: ! 49: # if preprocess, then use gnu/cpp since pponly in SAS/C ! 50: # does not signal missing .h files. ! 51: if(/\s+-E/) { ! 52: exit system("cpp -DAMIGA -nostdinc -I\/include -D__SASC$_"); ! 53: } ! 54: ! 55: # fast but not perfect unix-to-amiga path translation ! 56: s/[.][.]//g; ! 57: s/[.][\/]//g; ! 58: ! 59: # if no destination, then assume a.out ! 60: $_ .= " -o a.out" if !/\s-[cEo]/; ! 61: ! 62: # command-line modification ! 63: s/\s+-I\s*/ IDIR=/g; # process include dirs ! 64: s/\s+-o/ OBJNAME/g; # process output file ! 65: s/\s+-g/ DBG FF/g; # process debug ! 66: s/\s+-lm/ MATH=STD/g; # math library ! 67: s/\s+-l\s*(\w+)/ LIB=LIB:$1.lib/g; # other librarys ! 68: s/\s+-D\s*/ DEF=/g; # preprocessor defines ! 69: s/\s+-traditional-cpp//g; # ! 70: s/\s+-m(\w+)/ CPU=$1/g; # specific cpu code generation ! 71: s/\s+-O./ OPT OPTSCHED OPTTIME/g; # optimize ? ! 72: ! 73: # use NOLINK (-c was found) or LINK TO ? ! 74: !s/\s+-E/ PPONLY/g && !s/\s+-c/ NOLINK/g && s/OBJNAME/LINK TO/; ! 75: ! 76: # build amigaos command-line with extra defs ! 77: $_ = "sc IDIR=$LNDIR$_ DEF=AMIGA DEF=_OFF_T DATA=FAR CODE=FAR PARAM=B NOSTKCHK NOICON NOVERBOSE IGN=64,84,85,93,100,181,306,315,316 BATCH"; ! 78: ! 79: # if -d is present, display the executed command-line ! 80: s/\s+-d//g && print STDERR "=> $_\n"; ! 81: ! 82: # call SAS/C ! 83: $res = system("$_")/256; ! 84: ! 85: # Link failed, say something so that configure script can ! 86: # see it. ! 87: if($res == 3) {print STDERR "link failed\n";$res=21;} ! 88: ! 89: exit $res;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.