makefile.qbs
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:7k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. #--------------------------------------------------------------------
  2. # File: $(QB5)qbmakefile:
  3. #
  4. # This makefile contains make information for all QBI version dependent
  5. # BASIC Interpreter Source
  6. #
  7. # The following macros are expected to be set up:
  8. #   TL path to toolsbin directory
  9. #   QB path to qb root
  10. #   QB5  path to qb5 root
  11. #   UIBLD directory to build .obj files to
  12. #   CC cl command line switches
  13. #   MASM masm command line switches
  14. #
  15. # This file is used in conjunction with:
  16. #   qb5testmakefile root qb5 makefile (also qb5releasemakefile)
  17. #   qbirmakefile version independent interpreter source
  18. #   ..irmakefile QB5 specific interpreter source
  19. #   ..qbmaketwin twin user interface code
  20. #   ..uimakefile cow user interface code
  21. #--------------------------------------------------------------------
  22. TWINLIB = twin.lib
  23. HELPLIB = mhelph.lib
  24. KKIFLIB = kkif.lib
  25. !IFDEF ROMBASIC
  26. COWLIB = cow.lib ibmtandy.lib
  27. !ELSE
  28. COWLIB = cow.lib cowtandy.lib
  29. !ENDIF
  30. #------------------------------------------------------------------
  31. #   Macros for masm and cl command line switches specific to this
  32. # module, and include search paths.
  33. #
  34. CC_MOD = -Zp -Fo$@ $(UIFLAGS)
  35. CC_INCL = -I. -I$(QB5)hd -I$(QB)hd -I$(TL)..inc
  36. MASM_MOD =
  37. MASM_INCL = -E -I. -I$(QB5)hd -I$(QB)hd -I$(TL)..inc
  38. #------------------------------------------------------------------
  39. # DMOBJ are Quick BASIC 4.0 "direct mode" object files
  40. # This includes these runtime modules which are essential to
  41. # direct mode: bdmgr.obj bddebug.obj
  42. #
  43. DMOBJ = bdmgr.obj bddebug.obj binsav.obj binxlat.obj conmisc.obj condebug.obj 
  44. context.obj debug.obj dshstubc.obj dshcmd.obj dshstrng.obj init.obj 
  45. lsid.obj lsmain.obj lsrules.obj lsutil.obj lsoptab.obj 
  46. nammgr.obj namdebug.obj opnamatr.obj 
  47. prsmain.obj prsid.obj prsctl.obj prsnt.obj prscg.obj prslex.obj 
  48. prsexp.obj prsutil.obj prsstate.obj prsrwt.obj prsdebug.obj 
  49. prsstmt.obj prsnt1.obj qbimsgs.obj qbidata.obj rsalpha.obj rterror.obj 
  50. txtdata.obj txtdeb.obj txtdir.obj txtload.obj 
  51. txtmove.obj txtmgr.obj txtsave.obj 
  52. txtutil.obj txtfind.obj txtthr.obj txtdebug.obj typmgr.obj 
  53. uiutil.obj util.obj varmgrc.obj vardebug.obj vardbg.obj varutil.obj
  54. #------------------------------------------------------------------
  55. # SSEXOBJ are Quick BASIC 4.0 scanner/executor object files.
  56. #
  57. SSEXOBJ = sscase.obj ssdata.obj ssdo.obj ssfor.obj ssif.obj 
  58. ssbos.obj ssid.obj ssscan.obj ssstmts.obj ssaid.obj ssmisc.obj 
  59. ssrude.obj ssrules.obj ssoperat.obj sslit.obj sstxutil.obj 
  60. ssdeclar.obj ssdescan.obj ssoptab.obj ssrec.obj ssproc.obj 
  61. ssrefarg.obj excase.obj excontxt.obj exconv.obj exdebug.obj 
  62. exevent.obj exfor.obj 
  63. exfnmisc.obj exgoto.obj 
  64. exgraph.obj exmathop.obj exid.obj exif.obj exio.obj exos.obj 
  65. exstmisc.obj exstring.obj exarray.obj 
  66. exaryutl.obj exaid.obj exprint.obj exmisc.obj exlit.obj 
  67. exrec.obj exrefarg.obj extort.obj exproc.obj bfpsig.obj
  68. #------------------------------------------------------------------
  69. # RTOBJ are temporary runtime-specific objects
  70. #
  71. RTOBJ = rttemp.obj
  72. qedit.obj   : $(QB5)irqedit.asm
  73. $(TL)szscrn "Assembling qedit.asm"
  74. $(TL)masm $(MASM) $(QB5)irqedit;
  75. help.obj   : $(QB5)irhelp.asm
  76. $(TL)szscrn "Assembling help.asm"
  77. $(TL)masm $(MASM) $(QB5)irhelp;
  78. qbi0.obj: $(QB5)qbqbi0.asm
  79. $(TL)szscrn "Assembling qbi0.asm:"
  80. $(TL)masm $(SSFLAGS) $(MASM) $(QB5)qbqbi0;
  81. dshstubc.obj: $(QB5)qbdshstubc.c version.h 
  82. $(QB)hdparser.h 
  83. $(QB)hdpsint.h 
  84. $(QB)hdheap.h
  85. $(TL)szscrn "Compiling  dshstubc.c:"
  86. if exist dshstubc.obj del dshstubc.obj
  87. $(TL)cl $(UIFLAGS) -W3 -Zip -c -X -I. -I$(QB)hd -I$(TL)..inc -AM -FPa -Gcs -NT UI $(QB5)qbdshstubc.c
  88. uirstubc.obj: $(QB5)qbuirstubc.c
  89. $(TL)szscrn "Compiling  uirstubc.c"
  90. if exist uirstubc.obj del uirstubc.obj
  91. $(TL)cl $(UIFLAGS) -W3 -Zip -c -I$(QB)hd -I$(TL)..inc -AM -FPa -Gs -NTUI -Fo$@ $(QB5)qbuirstubc.c
  92. uimisc.obj: $(QB5)qbuimisc.asm $(VERSION_INC) 
  93. $(QB5)hdtwinwindow.inc 
  94. $(QB)hdarchitec.inc 
  95. qbimsgs.inc 
  96. $(QB5)hduiint.inc
  97. $(TL)szscrn "Assembling uimisc.asm"
  98. $(TL)masm $(MASM) $(QB5)qbuimisc,$(@R);
  99. #==============================================================
  100. # exe file definitions
  101. #==============================================================
  102. # HELP files used by qbasic.exe (COW version)
  103. #
  104. HELP: qbasic.hlp edit.hlp help.hlp
  105. echo "Help files up to date."
  106. qbimsgs.rpl: $(QB5)irmakehelp.sed qbimsgs.h
  107. $(TL)sed -n -f $(QB5)irmakehelp.sed qbimsgs.h > qbimsgs.rpl
  108. uihelpid.rpl: $(QB5)irmakehelp.sed $(QB5)hdcwuihelpid.h
  109. $(TL)sed -n -f $(QB5)irmakehelp.sed $(QB5)hdcwuihelpid.h > uihelpid.rpl
  110. qbasic.hlp: uihelpid.rpl qbimsgs.rpl $(QB5)irqbasic.qh $(TL)..binbhlpmake2.exe
  111. $(TL)szscrn "making qbasic.hlp"
  112. if exist qbasic.hlp del qbasic.hlp
  113. $(TL)..binbreplace qbimsgs.rpl uihelpid.rpl < $(QB5)irqbasic.qh > qbn.qh
  114. -$(TL)..binbhlpmake2 /e /A: /oqbasic.hlp /S2 /W78 qbn.qh
  115. REM del qbn.qh
  116. edit.hlp: qbimsgs.rpl uihelpid.rpl $(QB5)iredit.qh $(TL)..binbhlpmake2.exe
  117. $(TL)szscrn "making edit.hlp"
  118. if exist edit.hlp del edit.hlp
  119. $(TL)..binbreplace qbimsgs.rpl uihelpid.rpl < $(QB5)iredit.qh > qbn.qh
  120. -$(TL)..binbhlpmake2 /e /A: /oedit.hlp /S2 /W78 qbn.qh
  121. REM del qbn.qh
  122. help.hlp: qbimsgs.rpl uihelpid.rpl $(QB5)irhelp.qh $(TL)..binbhlpmake2.exe
  123. $(TL)szscrn "making help.hlp (takes 10min 35sec on 386/33, with 628kb free,"
  124. $(TL)szscrn "and a 3Mb SmartDrv 4.0 write-behind disk cache!)"
  125. if exist help.hlp del help.hlp
  126. $(TL)..binbreplace qbimsgs.rpl uihelpid.rpl < $(QB5)irhelp.qh > qbn.qh
  127. -$(TL)..binbhlpmake2 /e /A: /ohelp.hlp /S2 /W78 qbn.qh
  128. REM del qbn.qh
  129. # qb is the "latest/current" version of QBASIC
  130. #
  131. # Link order constraints:
  132. # - math: math errors in executors are handled differently than math errors
  133. #         in the runtime (diff in how the oTx of the error is found).
  134. #         __bfpsignal must be defined between executors and $(RTLIB)+$(MATHLIB)
  135. #         __bfpsignal is in bfpsig.obj in ex.lnk.
  136. #
  137. qb.exe: $(SSEXOBJ) $(RTOBJ) $(DMOBJ) $(UIOBJ) $(COWLIB) $(RTLIB) $(HELPLIB) 
  138. $(UIBLD)shell.lnk uirstubc.obj qbi0.obj
  139. $(TL)szscrn "linking qb"
  140. if exist qb.exe del qb.exe
  141. if exist qbasic.exe del qbasic.exe
  142. copy $(QB5)qbopt.lnk+$(QB5)qbmisc.lnk+$(QB5)qbrtint.lnk+$(QB5)qbls.lnk+$(QB5)qbprs.lnk dm1.lnk
  143. copy dm1.lnk+$(QB5)qbvar.lnk+$(QB5)qbctx.lnk+$(QB5)qbtxt.lnk dm.lnk
  144. copy $(UIBLD)shell.lnk+$(QB5)qbrt.lnk+dm.lnk+$(QB5)qbss.lnk+$(QB5)qbex.lnk j.lnk
  145. $(TL)..binblk $(LINK_USR) qbi0+@j.lnk+$(RTLIB),qb,$(MAPNAME),$(MATHLIB)+$(COWLIB)+$(CLIB)+$(HELPLIB)/NOD;
  146. $(TL)mapsym qb
  147. !IFDEF ROMBASIC
  148.   $(TL)szscrn "creating IBM version of QB.EXE"
  149.   .rompatch
  150. !ENDIF
  151. $(TL)szscrn "creating qbasic.exe"
  152. copy qb.exe qbasic.exe
  153. $(TL)szscrn "Done."
  154. edit.com : qedit.obj
  155. $(TL)szscrn "linking qedit.com"
  156. $(TL)..binblink510 qedit, edit.com /tiny;
  157. help.com : help.obj
  158. $(TL)szscrn "linking help.com"
  159. $(TL)..binblink510 help, help.com /tiny;