diff options
author | Robert de Bath <rdebath@poboxes.com> | 1996-12-01 16:58:31 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2013-10-23 23:34:16 +0200 |
commit | f8de35da65c5d93bb733073cf40da154bc1c0748 (patch) | |
tree | d28c7644739a24402376d24cb0020ea410a9ccff /mkcompile | |
parent | c218c617b5be443b7968308506969ad2b726d73c (diff) | |
download | dev86-f8de35da65c5d93bb733073cf40da154bc1c0748.tar.gz |
Import Dev86src-0.0.9.tar.gzv0.0.9
Diffstat (limited to 'mkcompile')
-rw-r--r-- | mkcompile | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/mkcompile b/mkcompile new file mode 100644 index 0000000..6995880 --- /dev/null +++ b/mkcompile @@ -0,0 +1,103 @@ +#!/bin/sh + +SRC_BCC='bcc.c' +SRC_CC1='bcc-cc1.c assign.c codefrag.c debug.c declare.c express.c exptree.c + floatop.c function.c gencode.c genloads.c glogcode.c hardop.c input.c + label.c loadexp.c longop.c output.c preproc.c preserve.c scan.c + softop.c state.c table.c type.c' +SRC_AS=' as.c assemble.c error.c express.c genbin.c genlist.c genobj.c gensym.c + keywords.c macro.c mops.c pops.c readsrc.c scan.c table.c typeconv.c' +SRC_LD=' ld.c dumps.c io.c linksyms.c readobj.c table.c typeconv.c + writebin.c writex86.c' + +HDR_BCC='' +HDR_CC1='align.h byteord.h condcode.h const.h gencode.h input.h label.h os.h + output.h parse.h proto.h reg.h sc.h scan.h sizes.h table.h type.h + types.h' +HDR_AS=' address.h byteord.h const.h file.h flag.h globvar.h macro.h opcode.h + proto.h scan.h source.h syshead.h type.h' +HDR_LD=' align.h ar.h bindef.h byteord.h config.h const.h globvar.h obj.h + syshead.h type.h x86_aout.h' + +main() { + echo '@echo off' + echo -n 'if not exist later.exe ' + echo 'cl -nologo -O later.c %LIB%\setargv.obj -link /NOE' + echo + + CFLAGS='-nologo -O' + LDFLAGS='%LIB%\setargv.obj -link /NOE' + ARCH=-Ml + build bcc bcc bin "$HDR_BCC" $SRC_BCC + + CFLAGS='-nologo -O -DPOSIX_HEADERS_MISSING' + LDFLAGS= + ARCH=-Ml + build bcc bcc-cc1 lib "$HDR_CC1" $SRC_CC1 + build as as86 bin "$HDR_AS" $SRC_AS + build ld ld86 lib "$HDR_LD" $SRC_LD + echo ":exit_now" +} + +build() { + DIR="$1" ; shift + PRG="$1" ; shift + BIN="$1" ; shift + HDR="$1" ; shift + OBJ= + BOBJ= + COBJ= + LOBJ= + SRC="$*" + + for i in $SRC + do + j=`basename $i .c` + check_time $DIR/$j.obj $i $HDR + echo -n "if errorlevel 1 " + + echo "cl $ARCH $CFLAGS -c -Fo$DIR\\$j.obj $DIR\\$i" + if [ "$BOBJ" = "" ] + then BOBJ="$DIR\\$j.obj" + else LOBJ="$LOBJ +$DIR\\$j.obj" + fi + COBJ="$COBJ $DIR\\$j.obj" + OBJ="$OBJ $j.obj" + + echo "if errorlevel 1 goto exit_now" + done + + if [ `echo $COBJ | wc -c` -lt 50 ] + then + check_time $BIN/$PRG.exe $OBJ + echo -n "if errorlevel 1 " + echo "cl $ARCH -o $BIN\\$PRG.exe$COBJ $LDFLAGS" + echo "if errorlevel 1 goto exit_now" + else + check_time $BIN/$PRG.exe $OBJ + echo "if not errorlevel 1 goto done_$PRG" + echo "if exist doslib.lib del doslib.lib" + echo $LOBJ | fmt -62 | \ + sed 's/\(.*\)/lib doslib.lib \1; >NUL/' + echo "cl $ARCH -o $BIN\\$PRG.exe $BOBJ doslib.lib $LDFLAGS" + echo "if errorlevel 1 goto exit_now" + echo "if exist doslib.lib del doslib.lib" + echo "if exist doslib.bak del doslib.bak" + echo ":done_$PRG" + fi + echo +} + +check_time() { + TARG="$1" ; shift + + for i + do echo "$DIR/$i" + done | fmt -70 | \ + sed -e "s;\(.*\);later $TARG \1@if errorlevel 3 goto exit_now;" \ + -e '2,$s/^/if not errorlevel 1 /' | \ + tr '@' '\012' +} + +main "$@" | sed 's/$/
/' > compile.bat + |