mkcompile 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/bin/sh
  2. SRC_BCC='bcc.c'
  3. SRC_CPP='main.c cpp.c hash.c token1.c token2.c'
  4. SRC_UPR='unproto.c error.c hash.c strsave.c symbol.c tok_clas.c tok_io.c
  5. tok_pool.c unproto.c vstring.c'
  6. SRC_CC1='bcc-cc1.c assign.c codefrag.c debug.c declare.c express.c exptree.c
  7. floatop.c function.c gencode.c genloads.c glogcode.c hardop.c input.c
  8. label.c loadexp.c longop.c output.c preproc.c preserve.c scan.c
  9. softop.c state.c table.c type.c'
  10. SRC_AS=' alloc.c as.c assemble.c errors.c express.c genbin.c genlist.c genobj.c
  11. gensym.c keywords.c macro.c mops.c pops.c readsrc.c scan.c table.c
  12. typeconv.c'
  13. SRC_LD=' ld.c dumps.c io.c linksyms.c readobj.c table.c typeconv.c
  14. writebin.c writex86.c'
  15. SRC_UP=' unproto.c tok_io.c tok_class.c tok_pool.c vstring.c symbol.c error.c
  16. hash.c strsave.c'
  17. main() {
  18. echo '@echo off'
  19. CFLAGS='-nologo -O'
  20. LDFLAGS='%LIB%\setargv.obj -link /NOE'
  21. ARCH=-Ms
  22. build bcc bcc bin $SRC_BCC
  23. CFLAGS='-nologo -O -DPOSIX_HEADERS_MISSING'
  24. LDFLAGS=
  25. ARCH=-Ml
  26. build cpp bcc-cpp lib $SRC_CPP
  27. build bcc bcc-cc1 lib $SRC_CC1
  28. build as as86 bin $SRC_AS
  29. build ld ld86 bin $SRC_LD
  30. build unproto unproto lib $SRC_UPR
  31. echo "echo Compile complete."
  32. echo ":exit_now"
  33. }
  34. build() {
  35. DIR="$1" ; shift
  36. PRG="$1" ; shift
  37. BIN="$1" ; shift
  38. OBJ=
  39. BOBJ=
  40. COBJ=
  41. LOBJ=
  42. SRC="$*"
  43. for i in $SRC
  44. do
  45. j=`basename $i .c`
  46. echo "cl $ARCH $CFLAGS -c -Fo%TMP%\\$j.obj $DIR\\$i"
  47. if [ "$BOBJ" = "" ]
  48. then BOBJ="%TMP%\\$j.obj"
  49. else LOBJ="$LOBJ +%TMP%\\$j.obj"
  50. fi
  51. COBJ="$COBJ %TMP%\\$j.obj"
  52. OBJ="$OBJ $j.obj"
  53. echo "if errorlevel 1 goto exit_now"
  54. done
  55. echo
  56. if [ `echo $COBJ | wc -c` -lt 50 ]
  57. then
  58. echo "cl $ARCH -o $BIN\\$PRG.exe$COBJ $LDFLAGS"
  59. echo "if errorlevel 1 goto exit_now"
  60. else
  61. echo "if exist %TMP%\\doslib.lib del %TMP%\\doslib.lib"
  62. echo $LOBJ | fmt -62 | \
  63. sed "s/\(.*\)/lib %TMP%\\\\doslib.lib \1; /" |
  64. sed 's/$/@if errorlevel 1 goto exit_now/' |
  65. tr '@' '\012'
  66. echo
  67. echo "cl $ARCH -o $BIN\\$PRG.exe $BOBJ %TMP%\\doslib.lib $LDFLAGS"
  68. echo "if errorlevel 1 goto exit_now"
  69. fi
  70. echo
  71. }
  72. main "$@" | sed 's/$/ /' > compile.bat