|
|
1.1 ! root 1: #! /bin/sh ! 2: # ! 3: # Somewhat horrible shell script to convert GCC style options into Watcom ! 4: # style. ! 5: # ! 6: # I put this into the public domain - if you think you can use it for ! 7: # anything, use it. ! 8: # ! 9: # Written 1998 Bernd Schmidt ! 10: ! 11: realdirname () { ! 12: tmp_save_dir=`pwd` ! 13: cd $@ ! 14: result=`pwd -P` ! 15: cd $tmp_save_dir ! 16: result=`echo $result |sed 's,/,\\\\,g'` ! 17: } ! 18: ! 19: realfilename () { ! 20: case $@ in ! 21: */*) ! 22: tmp_save_dir=`pwd` ! 23: cd `echo $@ | sed 's,/[^/]*$,,'` ! 24: result=`pwd -P`/`basename $@` ! 25: cd $tmp_save_dir ! 26: ;; ! 27: *) ! 28: result=$@ ! 29: ;; ! 30: esac ! 31: result=`echo $result |sed 's,/,\\\\,g'` ! 32: } ! 33: ! 34: gcc_wsysinc1=`echo $INCLUDE | sed 's,;, ,g' | sed 's,.:,;\\0,g' |sed -e 's,;,//,g' -e 's,:,/,g' -e 's,\\\\,/,g'` ! 35: for foo in $gcc_wsysinc1; do ! 36: gcc_wsysinc2="$gcc_wsysinc2 -I$foo" ! 37: done ! 38: gcc_spcdefs="-undef -U__GNUC__ -U__GNUC_MINOR__ -D_WIN32 -D__WATCOMC__ -D_STDCALL_SUPPORTED=1 -D__X86__ -D__386__=1 -DM_I386=1 -D_M_I386 -D_M_IX86=500 -D__NT__=1" ! 39: ! 40: mode=link ! 41: options= ! 42: srcfiles= ! 43: asmfiles= ! 44: objfiles= ! 45: resfiles= ! 46: outputfile= ! 47: libraries= ! 48: gnudefines= ! 49: wccdefines= ! 50: includes= ! 51: gnuincludes= ! 52: ! 53: next_is_output=no ! 54: next_is_include=no ! 55: ! 56: for arg in $@; do ! 57: ! 58: if test $next_is_output = yes; then ! 59: outputfile=$arg ! 60: next_is_output=no ! 61: else if test $next_is_include = yes; then ! 62: includes="$includes $arg" ! 63: gnuincludes="$gnuincludes -I$arg" ! 64: next_is_include=no ! 65: else ! 66: case $arg in ! 67: # Passing /xxx options directly may be too risky - they could be confused for ! 68: # file names - so use this escape. ! 69: --/--*) ! 70: options="$options `echo $arg |sed s,^--/--,/,`" ! 71: ;; ! 72: ! 73: -I) next_is_include=yes ! 74: ;; ! 75: ! 76: -I*) ! 77: includes="$includes `echo $arg | sed 's,^-I,,'`" ! 78: gnuincludes="$gnuincludes $arg" ! 79: ;; ! 80: ! 81: -D*=*) ! 82: gnudefines="$gnudefines $arg" ! 83: wccdefines="$wccdefines `echo $arg |sed 's,^-D,/d,'`" ! 84: ;; ! 85: ! 86: -D*) ! 87: gnudefines="$gnudefines $arg" ! 88: wccdefines="$wccdefines `echo $arg |sed 's,^-D,/d,'`=" ! 89: ;; ! 90: ! 91: -c) if [ "$mode" != "link" ]; then ! 92: echo "Bad argument" ! 93: exit 10 ! 94: fi ! 95: mode=compile ! 96: ;; ! 97: ! 98: -S) if [ "$mode" != "link" ]; then ! 99: echo "Bad argument" ! 100: exit 10 ! 101: fi ! 102: mode=assemble ! 103: ;; ! 104: ! 105: -E) if [ "$mode" != "link" ]; then ! 106: echo "Bad argument" ! 107: exit 10 ! 108: fi ! 109: mode=preprocess ! 110: ;; ! 111: ! 112: -g) options="$options /d2" ! 113: ;; ! 114: ! 115: -o) next_is_output=yes ! 116: if [ "x$outputfile" != "x" ]; then ! 117: echo "Multiple output files!" ! 118: exit 10 ! 119: fi ! 120: ;; ! 121: ! 122: -l*) libraries="$libraries `echo $arg | sed 's,^-l,,'`" ! 123: ;; ! 124: ! 125: *.c) ! 126: srcfiles="$srcfiles $arg" ! 127: ;; ! 128: ! 129: *.S) ! 130: asmfiles="$asmfiles $arg" ! 131: ;; ! 132: ! 133: *.res) ! 134: realfilename $arg ! 135: resfiles="$resfiles $result" ! 136: ;; ! 137: ! 138: *.o) ! 139: realfilename $arg ! 140: objfiles="$objfiles $result" ! 141: ;; ! 142: ! 143: *) echo "Bad argument: $arg" ! 144: ;; ! 145: esac ! 146: fi ! 147: fi ! 148: done ! 149: ! 150: #echo "Source files: $srcfiles" ! 151: #echo "Object files: $objfiles" ! 152: #echo "Output files: $outputfile" ! 153: #echo "Libraries: $libraries" ! 154: echo "Mode: $mode" ! 155: #echo "Options: $options" ! 156: ! 157: if [ "$mode" != "link" -a "x$libraries" != "x" ]; then ! 158: echo "Libraries specified in non-link mode!" ! 159: exit 10 ! 160: fi ! 161: ! 162: prefiles= ! 163: srccount=0 ! 164: for foo in $srcfiles; do ! 165: bar=wccsh-tmppre$srccount.i ! 166: prefiles="$prefiles $bar" ! 167: echo "gcc -E -nostdinc $gnuincludes $gcc_wsysinc2 $gcc_spcdefs $gnudefines $foo -o $bar" ! 168: if gcc -E -nostdinc $gnuincludes $gcc_wsysinc2 $gcc_spcdefs $gnudefines $foo -o $bar; then ! 169: ! 170: else ! 171: exit 10 ! 172: fi ! 173: if [ ! -f $bar ]; then ! 174: exit 10 ! 175: fi ! 176: srccount=`expr $srccount + 1` ! 177: done ! 178: ! 179: tmpobjs= ! 180: if test $mode = compile -o $mode = link; then ! 181: tmpcnt=0 ! 182: for foo in $asmfiles; do ! 183: bar=wccsh-tmpobj$tmpcnt.o ! 184: tmpcnt=`expr $tmpcnt + 1` ! 185: tmpobjs="$tmpobjs $bar" ! 186: echo "gcc -c $foo -o $bar" ! 187: gcc -c $foo -o $bar ! 188: srccount=`expr $srccount + 1` ! 189: done ! 190: for foo in $prefiles; do ! 191: bar=wccsh-tmpobj$tmpcnt.o ! 192: tmpcnt=`expr $tmpcnt + 1` ! 193: tmpobjs="$tmpobjs $bar" ! 194: sed -e '/^# [0123456789]*/s,^# ,#line ,' -e '/^#line/s,"[^"]*$,",' <$foo> wccsh_tmpsrc.c ! 195: echo "wcc386 $foo $options /fo=$bar" ! 196: wcc386 wccsh_tmpsrc.c $options /fo=wcc_tmp.o >&2 ! 197: mv -f wcc_tmp.o $bar ! 198: if [ ! -f $bar ]; then ! 199: rm -f $prefiles $tmpobjs ! 200: exit 10 ! 201: fi ! 202: done ! 203: fi ! 204: ! 205: case $mode in ! 206: preprocess) ! 207: for foo in $prefiles; do ! 208: if [ "x$outputfile" = "x" ]; then ! 209: cat $foo ! 210: else ! 211: mv -f $foo $outputfile ! 212: fi ! 213: done ! 214: ;; ! 215: ! 216: compile) ! 217: if [ "$srccount" != "1" -a "x$outputfile" != "x" ]; then ! 218: echo "cannot specify -o and -c with multiple compilations" >&2 ! 219: exit 10 ! 220: fi ! 221: if [ "x$outputfile" != "x" ]; then ! 222: echo Moving "'" $tmpobjs "'" to "'" $outputfile "'" ! 223: if mv $tmpobjs $outputfile 2>/dev/null; then ! 224: fi ! 225: fi ! 226: ;; ! 227: ! 228: assemble) ! 229: ;; ! 230: ! 231: link) ! 232: if [ "x$outputfile" = "x" ]; then ! 233: outputfile=a.out ! 234: fi ! 235: FILES= ! 236: for foo in $objfiles $tmpobjs; do ! 237: if [ "x$FILES" = "x" ]; then ! 238: FILES=$foo ! 239: else ! 240: FILES="$FILES,$foo" ! 241: fi ! 242: done ! 243: for foo in $resfiles; do ! 244: FILES="$FILES op resource=$foo" ! 245: done ! 246: for foo in $libraries; do ! 247: FILES="$FILES LIB $foo" ! 248: done ! 249: # echo Files: $FILES ! 250: # echo "wlink SYSTEM nt FIL $FILES NAME $outputfile" ! 251: wlink SYSTEM nt FIL $FILES NAME $outputfile >wccsh-linkerror.log ! 252: if grep "cannot open.*No such file or" wccsh-linkerror.log; then ! 253: # rm wccsh-linkerror.log ! 254: rm $outputfile ! 255: exit 10 ! 256: fi ! 257: # rm wccsh-linkerror.log ! 258: if [ ! -f $outputfile ]; then ! 259: rm -f $prefiles $tmpobjs ! 260: exit 10 ! 261: fi ! 262: ;; ! 263: esac ! 264: ! 265: rm -f $prefiles $tmpobjs ! 266: exit 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.