summaryrefslogtreecommitdiff
path: root/mkcompile
diff options
context:
space:
mode:
authorRobert de Bath <rdebath@poboxes.com>1996-12-01 16:58:31 +0100
committerLubomir Rintel <lkundrak@v3.sk>2013-10-23 23:34:16 +0200
commitf8de35da65c5d93bb733073cf40da154bc1c0748 (patch)
treed28c7644739a24402376d24cb0020ea410a9ccff /mkcompile
parentc218c617b5be443b7968308506969ad2b726d73c (diff)
downloaddev86-f8de35da65c5d93bb733073cf40da154bc1c0748.tar.gz
Import Dev86src-0.0.9.tar.gzv0.0.9
Diffstat (limited to 'mkcompile')
-rw-r--r--mkcompile103
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
+