home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / nethack-3.1 / sys / msdos / MakeMSC.src < prev    next >
Encoding:
Text File  |  1993-01-20  |  23.0 KB  |  723 lines

  1. # SCCS Id: @(#)MakeMSC.src    3.1    93/01/18
  2. # Copyright (c) NetHack PC Development Team 1992, 1993
  3. # PC NetHack 3.1 Makefile for Microsoft(tm) "C" >= 6.0ax
  4. #
  5. # Nota Bene:    Before you get to here you should have already read
  6. #         the Install.dos file located in the sys/msdos directory.
  7.  
  8. # This Makefile supports two different overlay management schemes.
  9. # You must select either the one that supports Microsoft C
  10. # version 6 or version 7.  By default this Makefile is set up
  11. # for version 7 or greater.  Certain sections particular to
  12. # each compiler are marked either MSC7 or MSC6.  If you are
  13. # using Microsoft C version 7, make sure that all the MSC6
  14. # sections are commented out and pay particular attention
  15. # to all sections marked MSC7, uncommenting all the variables.
  16. # Do the same thing for MSC6 if you are using that version of
  17. # the compiler.
  18. #
  19. # MSC6 Notes:
  20. #    As it is set up, this makefile requires that exesmurf (the
  21. #    NetHack overlay-aware .exe header editor) be on your path or in the
  22. #    $(SRC) directory. If you wish to change the path or use Microsoft
  23. #    EXEMOD instead, see the symbols EXEPATCH and EXEFLAGS.
  24. #
  25.  
  26. #
  27. # Game Installation Variables.
  28. # NOTE: Make sure GAMEDIR exists before make is started.
  29. #
  30.  
  31. GAME    = NetHack
  32. GAMEDIR = c:\games\nethack
  33. default: $(GAME)
  34.  
  35. #
  36. #    Source code and data file directories.
  37. #
  38.  
  39. DAT    = ..\dat
  40. INCL    = ..\include
  41. SRC    = .
  42. OBJ    = $(SRC)\o
  43. SYS    = ..\sys\msdos
  44. SSYS    = ..\sys\share
  45. UTL    = ..\util
  46. WIN    = ..\win\tty
  47.  
  48. #
  49. #    Exe File Info.
  50. #    ($(MAKE) macro is often predefined, so we use $(MAKEBIN) instead.)
  51. #
  52.  
  53. ASM    = masm        # Assembler
  54. CC    = cl        # Compiler
  55. LINK    = link        # Linker
  56. MAKEBIN = make45l    # Make Utility
  57.  
  58. #
  59. # Make the necessary changes in *one* of the two sections below.
  60. #
  61.  
  62.  
  63. #### MSC7 Section Only #####
  64. # MSC7 Compiler Flags are set up in the setup.bat file using
  65. # the CL environment variable as the total lenth of the compiler
  66. # command line exceeds the MSDOS 128 character limit.
  67. #
  68. CFLAGS    = /c
  69. LFLAGS    = /noi /seg:512 /map /st:5120 /DYNAMIC:1100 /INFO
  70. OVLMUCKING =    # None required
  71. MSC6MUCK =     # None required
  72. ############################
  73.  
  74.  
  75. #### MSC6 Section Only #####
  76. #
  77. # First comment out the MSC7 section.  And uncomment much of what is below.
  78. #
  79.  
  80. #
  81. # CC    There was a register bug, to be safe remove stack probes.
  82. # /Gt18 is currently about the largest value that keeps the initialised
  83. #    data segment below 64K (and keeps the linker happy).
  84. # /G2    286 or higher machines can use the /G2 CFLAG option for better
  85. #    performance.
  86. #
  87. #CFLAGS    = /AL /c /Os /Gs /Gt18 /Zp1 /W0 /I$(INCL)
  88. #LFLAGS    = /noi /seg:512 /map /st:4096
  89. #EXEPATCH = exesmurf    # Executable Massager
  90. #EXEFLAGS = /max4500 /min4500
  91. #OVLMUCKING = $(EXEPATCH) ovlmgr.obj
  92. #MSC6MUCK = msc6muck
  93.  
  94. #
  95. # For Microsoft C version <= 6.00ax, we use a custom overlay
  96. # manager, which requires the lower line to be uncommented.
  97. OVLMGR    =
  98. #OVLMGR    = ovlmgr.obj
  99.  
  100. #
  101. # Switch the following $(OBJ)\$(OVLMGR): lines if you don't have a
  102. # MASM compatible assembler.
  103. $(OBJ)\$(OVLMGR):
  104. # $(OBJ)\$(OVLMGR): ; copy $(SYS)\$(OVLMGR) $(OBJ)\$(OVLMGR)
  105.  
  106. #
  107. # If you need to recompile ovlmgr.asm you may want to change
  108. # some of the flags.
  109. AFLAGS = /MX
  110. # /Di386    = Use 386 specific enhancements
  111. # /DNOEMS    = Do not use EMS memory
  112. # /DDEBUG    = Report memory usage on startup
  113. # /DNOSPLIT    = EXE file is not split out to OVL files
  114.  
  115. #
  116. # Uncomment these sections.
  117. #
  118. #$(EXEPATCH): $(EXEPATCH).exe
  119. #$(EXEPATCH).exe: $(OBJ)\$(EXEPATCH).o
  120. #    $(LINK) $(OBJ)\$*.o, $*.exe;
  121.  
  122. #
  123. #$(OBJ)\$(EXEPATCH).o: $(SYS)\$(EXEPATCH).c
  124. #    $(CC) /W0 /Fo$(OBJ)\$*.o $(SYS)\$*.c
  125. ############################
  126.  
  127. #
  128. #    Optional high-quality BSD random number generation routines
  129. #    (see pcconf.h).    Set to nothing if not used.
  130. #
  131.  
  132. RANDOM    = $(OBJ)\random.o
  133. # RANDOM    =
  134.  
  135. #
  136. # If TERMLIB is NOT #defined in the source, comment out the
  137. # lower line and uncomment the upper.  Make sure that TERMLIB
  138. # contains the full pathname to the termcap library.
  139.  
  140. #TERMLIB =
  141. TERMLIB = $(SSYS)\termcap.lib
  142.  
  143. #
  144. #    Nothing below this line should have to be changed.
  145. #
  146.  
  147. #
  148. #    Make Roolz dude.
  149. #    Due to an NDMake inadequacy these must accord with a topological
  150. #    sort of the generated-from relation... output on the left, input
  151. #    on the right. Trust me.
  152. #
  153.  
  154. .SUFFIXES: .exe .0 .0-1 .0-2 .0-3 .1 .1-2 .1-3 .1-b .2 .2-3 .2-b .3 .3-b .b \
  155.        .o .c .y .l .obj .asm
  156.  
  157. .c.o:
  158.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $*.c
  159. .c.0:
  160.     $(CC) $(CFLAGS) /DOVL0 /NT$*.0 /Fo$(OBJ)\$*.0 $*.c
  161. .c.0-1:
  162.     $(CC) $(CFLAGS) /DOVL0 /DOVL1 /NT$*.0-1 /Fo$(OBJ)\$*.0-1 $*.c
  163. .c.0-2:
  164.     $(CC) $(CFLAGS) /DOVL0 /DOVL1 /DOVL2 /NT$*.0-2 /Fo$(OBJ)\$*.0-2 $*.c
  165. .c.0-3:
  166.     $(CC) $(CFLAGS) /DOVL0 /DOVL1 /DOVL2 /DOVL3 /NT$*.0-3 /Fo$(OBJ)\$*.0-3 $*.c
  167. .c.1:
  168.     $(CC) $(CFLAGS) /DOVL1 /NT$*.1 /Fo$(OBJ)\$*.1 $*.c
  169. .c.1-2:
  170.     $(CC) $(CFLAGS) /DOVL1 /DOVL2 /NT$*.1-2 /Fo$(OBJ)\$*.1-2 $*.c
  171. .c.1-3:
  172.     $(CC) $(CFLAGS) /DOVL1 /DOVL2 /DOVL3 /NT$*.1-3 /Fo$(OBJ)\$*.1-3 $*.c
  173. .c.1-b:
  174.     $(CC) $(CFLAGS) /DOVL1 /DOVL2 /DOVL3 /DOVLB /NT$*.1-b /Fo$(OBJ)\$*.1-b $*.c
  175. .c.2:
  176.     $(CC) $(CFLAGS) /DOVL2 /NT$*.2 /Fo$(OBJ)\$*.2 $*.c
  177. .c.2-3:
  178.     $(CC) $(CFLAGS) /DOVL2 /DOVL3 /NT$*.2-3 /Fo$(OBJ)\$*.2-3 $*.c
  179. .c.2-b:
  180.     $(CC) $(CFLAGS) /DOVL2 /DOVL3 /DOVLB /NT$*.2-b /Fo$(OBJ)\$*.2-b $*.c
  181. .c.3:
  182.     $(CC) $(CFLAGS) /DOVL3 /NT$*.3 /Fo$(OBJ)\$*.3 $*.c
  183. .c.3-b:
  184.     $(CC) $(CFLAGS) /DOVL3 /DOVLB /NT$*.3-b /Fo$(OBJ)\$*.3-b $*.c
  185. .c.b:
  186.     $(CC) $(CFLAGS) /DOVLB /NT$*.b /Fo$(OBJ)\$*.b $*.c
  187. .asm.obj:
  188.     $(ASM) $(AFLAGS) $(SYS)\$*.asm, $(OBJ)\$*.obj ;
  189.  
  190. #
  191. #    Header Objects.
  192. #
  193.  
  194. CONFIG_H   = $(GLOBAL_H)    $(INCL)\tradstdc.h    $(INCL)\config.h
  195. DECL_H       = $(YOU_H)        $(INCL)\spell.h        $(INCL)\color.h    \
  196.          $(INCL)\obj.h    $(INCL)\onames.h    $(INCL)\pm.h \
  197.          $(INCL)\decl.h
  198. DGN_FILE_H = $(INCL)\align.h    $(INCL)\dgn_file.h
  199. DISPLAY_H  = $(MONDATA_H)    $(INCL)\vision.h    $(INCL)\display.h
  200. DUNGEON_H  = $(INCL)\align.h    $(INCL)\dungeon.h
  201. EMIN_H       = $(DUNGEON_H)    $(INCL)\emin.h
  202. EPRI_H       = $(DUNGEON_H)    $(INCL)\align.h        $(INCL)\epri.h
  203. ESHK_H       = $(DUNGEON_H)    $(INCL)\eshk.h
  204. GLOBAL_H   = $(PCCONF_H)    $(INCL)\coord.h        $(INCL)\global.h
  205. HACK_H       = $(CONFIG_H)    $(DUNGEON_H)        $(DECL_H) \
  206.          $(DISPLAY_H)    $(INCL)\monsym.h    $(INCL)\mkroom.h \
  207.          $(INCL)\objclass.h    $(INCL)\trap.h        $(INCL)\flag.h    \
  208.          $(RM_H)        $(INCL)\vision.h    $(INCL)\wintype.h \
  209.          $(INCL)\engrave.h    $(INCL)\rect.h \
  210.          $(INCL)\trampoli.h    $(INCL)\hack.h
  211. MONDATA_H  = $(INCL)\align.h    $(INCL)\mondata.h
  212. MONST_H       = $(INCL)\align.h    $(INCL)\monst.h
  213. PCCONF_H   = $(INCL)\micro.h    $(INCL)\system.h    $(INCL)\pcconf.h
  214. PERMONST_H = $(INCL)\monattk.h    $(INCL)\monflag.h    $(INCL)\align.h    \
  215.          $(INCL)\permonst.h
  216. RM_H       = $(INCL)\align.h    $(INCL)\rm.h
  217. SP_LEV_H   = $(INCL)\align.h    $(INCL)\sp_lev.h
  218. VAULT_H       = $(DUNGEON_H)    $(INCL)\vault.h
  219. YOU_H       = $(MONST_H)        $(YOUPROP_H)        $(INCL)\align.h    \
  220.          $(INCL)\attrib.h    $(INCL)\you.h
  221. YOUPROP_H  = $(PERMONST_H)    $(MONDATA_H)        $(INCL)\prop.h    \
  222.          $(INCL)\pm.h    $(INCL)\youprop.h
  223.  
  224. #
  225. #    Overlay Objects.
  226. #
  227.  
  228. ROOT =    $(OBJ)\main.o $(OBJ)\msdos.0 $(OBJ)\dungeon.0 \
  229.     $(OBJ)\alloc.o $(OBJ)\random.o $(OBJ)\decl.o $(OBJ)\dbridge.0 \
  230.     $(OBJ)\objects.o $(OBJ)\invent.0 $(OBJ)\mkobj.0 $(OBJ)\mkroom.0 \
  231.     $(OBJ)\rnd.0 $(OBJ)\termcap.0 $(OBJ)\mondata.0 $(OBJ)\muse.o \
  232.     $(OBJ)\engrave.0 $(OBJ)\explode.o $(OBJ)\display.o $(OBJ)\vision.o \
  233.     $(OBJ)\attrib.0 $(OBJ)\rect.o $(OBJ)\vis_tab.o $(OBJ)\hacklib.0 \
  234.     $(OBJ)\monst.o $(OBJ)\hack.3 $(OBJ)\topl.0 $(OBJ)\trap.0 \
  235.     $(OBJ)\wintty.o $(OBJ)\monmove.0 $(OBJ)\dogmove.0
  236.  
  237. # These could use to go in root, but are in OLV1 to make
  238. # the game loadable in under 512 free ram.
  239. # rhack and friends
  240. OVL01 = $(OBJ)\allmain.0 $(OBJ)\artifact.0 $(OBJ)\attrib.1 $(OBJ)\cmd.1 \
  241.     $(OBJ)\do.1 $(OBJ)\do.3 $(OBJ)\eat.0 $(OBJ)\engrave.2 \
  242.     $(OBJ)\getline.0-1 $(OBJ)\hack.1-2 \
  243.     $(OBJ)\botl.1 $(OBJ)\sounds.0 $(OBJ)\timeout.0 \
  244.     $(OBJ)\track.1 $(OBJ)\vault.0 $(OBJ)\wizard.0 $(OBJ)\hacklib.1
  245. # startup
  246. OVL02 = $(OBJ)\dungeon.1 $(OBJ)\files.o $(OBJ)\pcsys.o \
  247.     $(OBJ)\monstr.o $(OBJ)\msdos.b
  248. # main monster code
  249. OVL03 = $(OBJ)\cmd.0 $(OBJ)\engrave.1 $(OBJ)\mondata.1 \
  250.     $(OBJ)\mthrowu.0 $(OBJ)\priest.0 $(OBJ)\track.0 \
  251.     $(OBJ)\trap.1 $(OBJ)\were.0
  252. # monster movement
  253. OVL04 = $(OBJ)\mon.0-1 $(OBJ)\monmove.1
  254. # pet monster movement
  255. OVL05 = $(OBJ)\dog.1 $(OBJ)\dogmove.1-b
  256. # advanced monsters
  257. OVL06 = $(OBJ)\minion.o $(OBJ)\mcastu.o
  258. OVL07 = $(OBJ)\priest.1-b $(OBJ)\shk.1-b
  259. OVL08 = $(OBJ)\were.1-b
  260. OVL09 = $(OBJ)\wizard.1-b
  261. OVL10 = $(OBJ)\worm.o
  262. # 11-15 around the movement loop
  263. # domove and friends
  264. OVL11 = $(OBJ)\hack.0 $(OBJ)\apply.0 $(OBJ)\do_wear.1 $(OBJ)\lock.0 \
  265.     $(OBJ)\cmd.2
  266. OVL12 = $(OBJ)\detect.o
  267. OVL13 = $(OBJ)\attrib.2-b $(OBJ)\exper.o
  268. OVL14 = $(OBJ)\eat.1 $(OBJ)\invent.1
  269. OVL15 = $(OBJ)\makemon.0-2 $(OBJ)\mkobj.1
  270. OVL16 = $(OBJ)\makemon.b $(OBJ)\mplayer.o $(OBJ)\mkobj.2-b
  271. OVL17 = $(OBJ)\mhitm.1-b
  272. OVL18 = $(OBJ)\mthrowu.1
  273. OVL19 = $(OBJ)\mthrowu.2-b
  274. OVL20 = $(OBJ)\allmain.1 $(OBJ)\mhitm.0 $(OBJ)\mhitu.0-1 $(OBJ)\rnd.1 \
  275.     $(OBJ)\weapon.0-1
  276. OVL21 = $(OBJ)\mon.2-b
  277. OVL22 = $(OBJ)\artifact.1 $(OBJ)\uhitm.o $(OBJ)\weapon.2-b
  278. OVL23 = $(OBJ)\do_wear.0 $(OBJ)\mhitu.2-b
  279. OVL24 = $(OBJ)\steal.0-1
  280. OVL25 = $(OBJ)\monmove.2-b $(OBJ)\steal.2-b
  281. OVL26 = $(OBJ)\rnd.2-b
  282. OVL27 = $(OBJ)\do_wear.2 $(OBJ)\mondata.2 $(OBJ)\objnam.0-1 \
  283.     $(OBJ)\polyself.0-1
  284. OVL28 = $(OBJ)\do_name.0
  285. OVL29 = $(OBJ)\objnam.2-b $(OBJ)\hacklib.2-b
  286. OVL30 = $(OBJ)\pager.o
  287. OVL31 = $(OBJ)\botl.0
  288. OVL32 = $(OBJ)\botl.b $(OBJ)\topl.b $(OBJ)\termcap.1 $(OBJ)\windows.o
  289. OVL33 = $(OBJ)\topl.1-2
  290. OVL34 = $(OBJ)\pline.o
  291. OVL35 = $(OBJ)\termcap.2-b
  292. OVL36 = $(OBJ)\quest.o $(OBJ)\questpgr.o
  293. OVL37 = $(OBJ)\invent.b
  294. OVL38 = $(OBJ)\hack.b
  295. OVL39 = $(OBJ)\mondata.b $(OBJ)\timeout.1-b $(OBJ)\dog.b $(OBJ)\sounds.1-b
  296. OVL40 = $(OBJ)\do.0 $(OBJ)\invent.3
  297. OVL41 = $(OBJ)\cmd.b $(OBJ)\getline.2 $(OBJ)\write.o
  298. OVL42 = $(OBJ)\apply.2-b
  299. OVL43 = $(OBJ)\do.b $(OBJ)\drawing.o
  300. OVL44 = $(OBJ)\dokick.o
  301. OVL45 = $(OBJ)\dothrow.o
  302. OVL46 = $(OBJ)\eat.2-b
  303. OVL47 = $(OBJ)\invent.2 $(OBJ)\pickup.o
  304. OVL48 = $(OBJ)\lock.1-b
  305. OVL49 = $(OBJ)\polyself.2-b
  306. OVL50 = $(OBJ)\potion.o
  307. OVL51 = $(OBJ)\pray.o
  308. OVL52 = $(OBJ)\read.1-b $(OBJ)\spell.o
  309. OVL53 = $(OBJ)\ball.o
  310. # clothing stuff
  311. OVL54 = $(OBJ)\do_wear.b $(OBJ)\wield.o $(OBJ)\worn.o
  312. # Zappage
  313. OVL55 = $(OBJ)\zap.o
  314. OVL56 = $(OBJ)\dbridge.1-b
  315. OVL57 = $(OBJ)\trap.b
  316. # Unusual circumstances
  317. OVL58 = $(OBJ)\artifact.b $(OBJ)\do_name.1-b $(OBJ)\fountain.o $(OBJ)\music.o \
  318.     $(OBJ)\rumors.o $(OBJ)\sit.o $(OBJ)\vault.1-b
  319. # Uppers and Downers
  320. OVL59 = $(OBJ)\apply.1 $(OBJ)\bones.o $(OBJ)\mklev.o
  321. OVL60 = $(OBJ)\save.o $(OBJ)\restore.o
  322. OVL61 = $(OBJ)\mkmaze.o $(OBJ)\mkroom.1-b $(OBJ)\mkmap.o
  323. # Note: version.o is in OVL62, but in a special way.  See below.
  324. OVL62 = $(OBJ)\allmain.2-b $(OBJ)\end.o $(OBJ)\engrave.b \
  325.     $(OBJ)\o_init.o $(OBJ)\options.o $(OBJ)\rip.o \
  326.     $(OBJ)\shknam.o $(OBJ)\topten.o $(OBJ)\tty.o \
  327.     $(OBJ)\u_init.o $(OBJ)\unix.1-b
  328. # Levelling
  329. OVL63 = $(OBJ)\do.2 $(OBJ)\dog.2 $(OBJ)\extralev.o \
  330.     $(OBJ)\sp_lev.o $(OBJ)\track.2-b
  331.  
  332. #
  333. #    Make Objects.
  334. #
  335.  
  336. MOBJ = $(OVL01) $(OVL02) $(OVL03) $(OVL04) $(OVL05) $(OVL06) $(OVL07) $(OVL08)\
  337.        $(OVL09) $(OVL10) $(OVL11) $(OVL12) $(OVL13) $(OVL14) $(OVL15) $(OVL16)\
  338.        $(OVL17) $(OVL18) $(OVL19) $(OVL20) $(OVL21) $(OVL22) $(OVL23) $(OVL24)\
  339.        $(OVL25) $(OVL26) $(OVL27) $(OVL28) $(OVL29) $(OVL30) $(OVL31) $(OVL32)\
  340.        $(OVL33) $(OVL34) $(OVL35) $(OVL36) $(OVL37) $(OVL38) $(OVL39) $(OVL40)\
  341.        $(OVL41) $(OVL42) $(OVL43) $(OVL44) $(OVL45) $(OVL46) $(OVL47) $(OVL48)\
  342.        $(OVL49) $(OVL50) $(OVL51) $(OVL52) $(OVL53) $(OVL54) $(OVL55) $(OVL56)\
  343.        $(OVL57) $(OVL58) $(OVL59) $(OVL60) $(OVL61) $(OVL62) $(OVL63)
  344.  
  345. VOBJ = $(ROOT)    $(MOBJ)
  346.  
  347. HOBJ = $(VOBJ)    $(OBJ)\version.o
  348.  
  349. OVERLAYS = ($(OVL01)) ($(OVL02)) ($(OVL03)) ($(OVL04)) ($(OVL05)) ($(OVL06)) \
  350.        ($(OVL07)) ($(OVL08)) ($(OVL09)) ($(OVL10)) ($(OVL11)) ($(OVL12)) \
  351.        ($(OVL13)) ($(OVL14)) ($(OVL15)) ($(OVL16)) ($(OVL17)) ($(OVL18)) \
  352.        ($(OVL19)) ($(OVL20)) ($(OVL21)) ($(OVL22)) ($(OVL23)) ($(OVL24)) \
  353.        ($(OVL25)) ($(OVL26)) ($(OVL27)) ($(OVL28)) ($(OVL29)) ($(OVL30)) \
  354.        ($(OVL31)) ($(OVL32)) ($(OVL33)) ($(OVL34)) ($(OVL35)) ($(OVL36)) \
  355.        ($(OVL37)) ($(OVL38)) ($(OVL39)) ($(OVL40)) ($(OVL41)) ($(OVL42)) \
  356.        ($(OVL43)) ($(OVL44)) ($(OVL45)) ($(OVL46)) ($(OVL47)) ($(OVL48)) \
  357.        ($(OVL49)) ($(OVL50)) ($(OVL51)) ($(OVL52)) ($(OVL53)) ($(OVL54)) \
  358.        ($(OVL55)) ($(OVL56)) ($(OVL57)) ($(OVL58)) ($(OVL59)) ($(OVL60)) \
  359.        ($(OVL61)) ($(OVL62)    $(OBJ)\version.o) ($(OVL63))
  360.  
  361. #
  362. #    Primary make targets.
  363. #
  364.  
  365. GAMEFILE = $(GAMEDIR)\$(GAME).exe
  366.  
  367. all: install
  368.  
  369. install: $(DAT)\sp_lev.tag    $(GAMEFILE)    $(MSC6MUCK)    install.tag
  370.     @echo Don't forget to check HACKDIR in $(GAMEDIR)\NetHack.cnf.
  371.     @echo Done.
  372.  
  373. install.tag: $(GAMEFILE) $(MSC6MUCK)
  374.     copy $(SSYS)\termcap        $(GAMEDIR)
  375.     copy $(DAT)\*.?            $(GAMEDIR)
  376.     copy $(DAT)\*.dat        $(GAMEDIR)
  377.     copy $(DAT)\*.lev        $(GAMEDIR)
  378.     copy $(SSYS)\NetHack.cnf    $(GAMEDIR)
  379.     copy $(UTL)\recover.exe        $(GAMEDIR)
  380.     del  $(GAMEDIR)\makefile
  381.     echo install done > install.tag
  382.  
  383. $(GAME): $(GAMEFILE) $(MSC6MUCK)
  384.  
  385. $(GAME).exe: $(GAMEFILE) $(MSC6MUCK)
  386.  
  387. $(GAMEFILE): $(UTL)\utility.tag $(OBJ) $(OVLMUCKING) $(HOBJ)
  388.     @echo Loading....
  389.     $(LINK) $(LFLAGS) $(ROOT) $(OVERLAYS),$(GAMEFILE),$(GAME),$(TERMLIB);
  390.     @del $(GAMEDIR)\$(GAME).bak > NUL
  391.     @echo $(GAME) is up to date.
  392.  
  393. msc6muck:
  394.     $(EXEPATCH) $(GAMEFILE) $(EXEFLAGS)
  395.     $(EXEPATCH) $(GAMEFILE) 1 40
  396.  
  397. #
  398. #    Secondary Targets.
  399. #
  400.  
  401. clean:
  402.     del $(OBJ)\*.o
  403.     del $(OBJ)\*.0
  404.     del $(OBJ)\*.0-1
  405.     del $(OBJ)\*.0-2
  406.     del $(OBJ)\*.0-3
  407.     del $(OBJ)\*.1
  408.     del $(OBJ)\*.1-2
  409.     del $(OBJ)\*.1-3
  410.     del $(OBJ)\*.1-b
  411.     del $(OBJ)\*.2
  412.     del $(OBJ)\*.2-3
  413.     del $(OBJ)\*.2-b
  414.     del $(OBJ)\*.3
  415.     del $(OBJ)\*.3-b
  416.     del $(OBJ)\*.b
  417.     del $(OBJ)\*.obj
  418.     rmdir $(OBJ)
  419.  
  420. spotless: clean
  421.     del *.exe
  422.     del *.bak
  423.     del *.tag
  424.     del *.map
  425.     del *.obj
  426.     del *.lib
  427.     del *.txt
  428.  
  429. $(OBJ):
  430.     if not exist $(OBJ)\*.* mkdir $(OBJ)
  431.  
  432. #
  433. # I'm not too fond of using this `attrib .foo` command to stop make,
  434. # but I can't think of any better generic way to do it.
  435. # It works for DOS 3.3, 4.00, & 5.0.
  436. # If you find a better one please feel free to implement it.
  437. #
  438. $(UTL)\utility.tag: monst.c    alloc.c            objects.c \
  439.     $(UTL)\makedefs.c    $(UTL)\panic.c        $(UTL)\recover.c \
  440.     $(UTL)\dgn_main.c    $(UTL)\dgn_comp.l    $(UTL)\dgn_comp.y \
  441.     $(UTL)\lev_main.c    $(UTL)\lev_comp.l    $(UTL)\lev_comp.y \
  442.     $(HACK_H)
  443.     @echo You must first "$(MAKEBIN) all" in the $(UTL) directory.
  444.     @attrib .foo
  445.  
  446. $(DAT)\sp_lev.tag: $(UTL)\utility.tag
  447.     @echo You must first "$(MAKEBIN) all" in the $(DAT) directory.
  448.     @attrib .foo
  449.  
  450. #
  451. # Other dependencies
  452. #
  453.  
  454. $(INCL)\date.h: $(VOBJ)
  455.     $(UTL)\makedefs -v
  456.  
  457. #
  458. #    Overlay/PC source code dependencies.
  459. #
  460.  
  461. #
  462. #    $(SYS) files.
  463. #
  464.  
  465. $(OBJ)\msdos.0: $(HACK_H) $(INCL)\termcap.h $(SYS)\msdos.c
  466.     $(CC) $(CFLAGS) /DOVL0 /NT$*.0 /Fo$(OBJ)\$*.0 $(SYS)\$*.c
  467.  
  468. $(OBJ)\msdos.b: $(HACK_H) $(INCL)\termcap.h $(SYS)\msdos.c
  469.     $(CC) $(CFLAGS) /DOVLB /NT$*.b /Fo$(OBJ)\$*.b $(SYS)\$*.c
  470.  
  471. $(OBJ)\trampoli.o: $(HACK_H)    $(SYS)\trampoli.c
  472.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SYS)\$*.c
  473.  
  474. #
  475. #    $(SSYS) files.
  476. #
  477.  
  478. $(OBJ)\main.o: $(HACK_H)    $(SSYS)\pcmain.c
  479.     $(CC) $(CFLAGS) /Fo$(OBJ)\main.o $(SSYS)\pcmain.c
  480.  
  481. $(OBJ)\pcsys.o:    $(HACK_H)    $(INCL)\wintty.h    $(SSYS)\pcsys.c
  482.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SSYS)\$*.c
  483.  
  484. $(OBJ)\random.o: $(SSYS)\random.c
  485.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SSYS)\$*.c
  486.  
  487. $(OBJ)\tty.o: $(HACK_H)        $(INCL)\wintty.h    $(SSYS)\pctty.c
  488.     $(CC) $(CFLAGS) /Fo$(OBJ)\tty.o    $(SSYS)\pctty.c
  489.  
  490. $(OBJ)\unix.0: $(HACK_H)    $(SSYS)\pcunix.c
  491.     $(CC) $(CFLAGS) /DOVL0 /Fo$(OBJ)\unix.0 $(SSYS)\pcunix.c
  492.  
  493. $(OBJ)\unix.1-b: $(HACK_H)    $(SSYS)\pcunix.c
  494.     $(CC) $(CFLAGS) /DOVL1 /DOVL2 /DOVL3 /DOVLB /Fo$(OBJ)\unix.1-b $(SSYS)\pcunix.c
  495.  
  496. #
  497. #    $(WIN) files.
  498. #
  499.  
  500. $(OBJ)\getline.0-1: $(HACK_H)    $(INCL)\wintty.h    $(INCL)\func_tab.h \
  501.     $(WIN)\getline.c
  502.     $(CC) $(CFLAGS) /DOVL0 /DOVL1 /NT$*.0-1 /Fo$(OBJ)\$*.0-1 $(WIN)\$*.c
  503.  
  504. $(OBJ)\getline.2: $(HACK_H)    $(INCL)\wintty.h    $(INCL)\func_tab.h \
  505.     $(WIN)\getline.c
  506.     $(CC) $(CFLAGS) /DOVL2 /NT$*.2 /Fo$(OBJ)\$*.2 $(WIN)\$*.c
  507.  
  508. $(OBJ)\getline.b: $(HACK_H)    $(INCL)\wintty.h    $(INCL)\func_tab.h \
  509.     $(WIN)\getline.c
  510.     $(CC) $(CFLAGS) /DOVLB /NT$*.b /Fo$(OBJ)\getline.b $(WIN)\$*.c
  511.  
  512. $(OBJ)\termcap.0: $(HACK_H)    $(INCL)\wintty.h    $(INCL)\termcap.h \
  513.     $(WIN)\termcap.c
  514.     $(CC) $(CFLAGS) /DOVL0 /NT$*.0 /Fo$(OBJ)\$*.0 $(WIN)\$*.c
  515.  
  516. $(OBJ)\termcap.1: $(HACK_H)    $(INCL)\wintty.h    $(INCL)\termcap.h \
  517.     $(WIN)\termcap.c
  518.     $(CC) $(CFLAGS) /DOVL1 /NT$*.1 /Fo$(OBJ)\$*.1 $(WIN)\$*.c
  519.  
  520. $(OBJ)\termcap.2-b: $(HACK_H)    $(INCL)\wintty.h    $(INCL)\termcap.h \
  521.     $(WIN)\termcap.c
  522.     $(CC) $(CFLAGS) /DOVL2 /DOVLB /NT$*.2-b /Fo$(OBJ)\$*.2-b $(WIN)\$*.c
  523.  
  524. $(OBJ)\topl.0: $(HACK_H)    $(INCL)\termcap.h    $(INCL)\wintty.h \
  525.     $(WIN)\topl.c
  526.     $(CC) $(CFLAGS) /DOVL0 /NT$*.0 /Fo$(OBJ)\$*.0 $(WIN)\$*.c
  527.  
  528. $(OBJ)\topl.1-2: $(HACK_H)    $(INCL)\termcap.h    $(INCL)\wintty.h \
  529.     $(WIN)\topl.c
  530.     $(CC) $(CFLAGS) /DOVL1 /DOVL2 /NT$*.1-2 /Fo$(OBJ)\$*.1-2 $(WIN)\$*.c
  531.  
  532. $(OBJ)\topl.b: $(HACK_H)    $(INCL)\termcap.h    $(INCL)\wintty.h \
  533.     $(WIN)\topl.c
  534.     $(CC) $(CFLAGS) /DOVLB /NT$*.b /Fo$(OBJ)\$*.b $(WIN)\$*.c
  535.  
  536. $(OBJ)\wintty.o: $(HACK_H)    $(INCL)\wintty.h    $(INCL)\termcap.h \
  537.     $(WIN)\wintty.c
  538.     $(CC) $(CFLAGS) /DOVL0 /DOVL1 /DOVL2 /DOVLB /Fo$(OBJ)\$*.o $(WIN)\$*.c
  539.  
  540. #
  541. #    $(SRC) files.
  542. #
  543. # DO NOT DELETE THIS LINE
  544. #
  545.  
  546. $(OBJ)\allmain.0:    $(HACK_H)
  547. $(OBJ)\allmain.1:    $(HACK_H)
  548. $(OBJ)\allmain.2-b:    $(HACK_H)
  549. $(OBJ)\alloc.o:        $(CONFIG_H)
  550. $(OBJ)\apply.0:        $(HACK_H)    $(INCL)\edog.h
  551. $(OBJ)\apply.1:        $(HACK_H)    $(INCL)\edog.h
  552. $(OBJ)\apply.2-b:    $(HACK_H)    $(INCL)\edog.h
  553. $(OBJ)\artifact.0:    $(HACK_H)    $(INCL)\artifact.h  $(INCL)\artilist.h
  554. $(OBJ)\artifact.1:    $(HACK_H)    $(INCL)\artifact.h  $(INCL)\artilist.h
  555. $(OBJ)\artifact.2:    $(HACK_H)    $(INCL)\artifact.h  $(INCL)\artilist.h
  556. $(OBJ)\artifact.b:    $(HACK_H)    $(INCL)\artifact.h  $(INCL)\artilist.h
  557. $(OBJ)\attrib.0:    $(HACK_H)
  558. $(OBJ)\attrib.1:    $(HACK_H)
  559. $(OBJ)\attrib.2-b:    $(HACK_H)
  560. $(OBJ)\ball.o:        $(HACK_H)
  561. $(OBJ)\bones.o:        $(HACK_H)
  562. $(OBJ)\botl.0:        $(HACK_H)
  563. $(OBJ)\botl.1:        $(HACK_H)
  564. $(OBJ)\botl.2:        $(HACK_H)
  565. $(OBJ)\botl.b:        $(HACK_H)
  566. $(OBJ)\cmd.0:        $(HACK_H)    $(INCL)\func_tab.h
  567. $(OBJ)\cmd.1:        $(HACK_H)    $(INCL)\func_tab.h
  568. $(OBJ)\cmd.b:        $(HACK_H)    $(INCL)\func_tab.h
  569. $(OBJ)\dbridge.0:    $(HACK_H)
  570. $(OBJ)\dbridge.1-b:    $(HACK_H)
  571. $(OBJ)\decl.o:        $(HACK_H)    $(INCL)\quest.h
  572. $(OBJ)\detect.o:    $(HACK_H)    $(INCL)\artifact.h
  573. $(OBJ)\display.o:    $(HACK_H)
  574. $(OBJ)\do.0:        $(HACK_H)    $(INCL)\lev.h
  575. $(OBJ)\do.1:        $(HACK_H)    $(INCL)\lev.h
  576. $(OBJ)\do.2:        $(HACK_H)    $(INCL)\lev.h
  577. $(OBJ)\do.3:        $(HACK_H)    $(INCL)\lev.h
  578. $(OBJ)\do.b:        $(HACK_H)    $(INCL)\lev.h
  579. $(OBJ)\do_name.0:    $(HACK_H)
  580. $(OBJ)\do_name.1-b:    $(HACK_H)
  581. $(OBJ)\do_wear.0-1:    $(HACK_H)
  582. $(OBJ)\do_wear.2:    $(HACK_H)
  583. $(OBJ)\do_wear.b:    $(HACK_H)
  584. $(OBJ)\dog.0:        $(HACK_H)    $(INCL)\edog.h
  585. $(OBJ)\dog.1:        $(HACK_H)    $(INCL)\edog.h
  586. $(OBJ)\dog.2:        $(HACK_H)    $(INCL)\edog.h
  587. $(OBJ)\dog.b:        $(HACK_H)    $(INCL)\edog.h
  588. $(OBJ)\dogmove.0:    $(HACK_H)    $(INCL)\mfndpos.h    $(INCL)\edog.h
  589. $(OBJ)\dogmove.1-b:    $(HACK_H)    $(INCL)\mfndpos.h    $(INCL)\edog.h
  590. $(OBJ)\dokick.o:    $(HACK_H)    $(ESHK_H)
  591. $(OBJ)\dothrow.o:    $(HACK_H)
  592. $(OBJ)\drawing.o:    $(HACK_H)    $(INCL)\termcap.h
  593. $(OBJ)\dungeon.o:    $(HACK_H)    $(DGN_FILE_H)
  594. $(OBJ)\eat.0:        $(HACK_H)
  595. $(OBJ)\eat.1:        $(HACK_H)
  596. $(OBJ)\eat.2-b:        $(HACK_H)
  597. $(OBJ)\end.o:        $(HACK_H)    $(ESHK_H)
  598. $(OBJ)\engrave.0-1:    $(HACK_H)    $(INCL)\lev.h
  599. $(OBJ)\engrave.2:    $(HACK_H)    $(INCL)\lev.h
  600. $(OBJ)\engrave.b:    $(HACK_H)    $(INCL)\lev.h
  601. $(OBJ)\exper.o:        $(HACK_H)
  602. $(OBJ)\explode.o:    $(HACK_H)
  603. $(OBJ)\extralev.o:    $(HACK_H)
  604. $(OBJ)\files.o:        $(HACK_H)
  605. $(OBJ)\fountain.o:    $(HACK_H)
  606. $(OBJ)\hack.0:        $(HACK_H)
  607. $(OBJ)\hack.1:        $(HACK_H)
  608. $(OBJ)\hack.2:        $(HACK_H)
  609. $(OBJ)\hack.b:        $(HACK_H)
  610. $(OBJ)\hacklib.0:    $(HACK_H)
  611. $(OBJ)\hacklib.1:    $(HACK_H)
  612. $(OBJ)\hacklib.2-b:    $(HACK_H)
  613. $(OBJ)\invent.0:    $(HACK_H)    $(INCL)\artifact.h
  614. $(OBJ)\invent.1:    $(HACK_H)    $(INCL)\artifact.h
  615. $(OBJ)\invent.2:    $(HACK_H)    $(INCL)\artifact.h
  616. $(OBJ)\invent.3:    $(HACK_H)    $(INCL)\artifact.h
  617. $(OBJ)\invent.b:    $(HACK_H)    $(INCL)\artifact.h
  618. $(OBJ)\lock.0:        $(HACK_H)
  619. $(OBJ)\lock.1-b:    $(HACK_H)
  620. $(OBJ)\mail.0:        $(HACK_H)    $(INCL)\mail.h
  621. $(OBJ)\mail.1-b:    $(HACK_H)    $(INCL)\mail.h
  622. $(OBJ)\makemon.0-2:    $(HACK_H)    $(EPRI_H)    $(EMIN_H)
  623. $(OBJ)\makemon.b:    $(HACK_H)    $(EPRI_H)    $(EMIN_H)
  624. $(OBJ)\mcastu.o:    $(HACK_H)
  625. $(OBJ)\mhitm.0:        $(HACK_H)    $(INCL)\artifact.h    $(INCL)\edog.h
  626. $(OBJ)\mhitm.1-b:    $(HACK_H)    $(INCL)\artifact.h    $(INCL)\edog.h
  627. $(OBJ)\mhitu.0-1:    $(HACK_H)    $(INCL)\artifact.h    $(INCL)\edog.h
  628. $(OBJ)\mhitu.2-b:    $(HACK_H)    $(INCL)\artifact.h    $(INCL)\edog.h
  629. $(OBJ)\minion.o:    $(HACK_H)    $(EMIN_H)
  630. $(OBJ)\mklev.o:        $(HACK_H)
  631. $(OBJ)\mkmaze.o:    $(HACK_H)    $(SP_LEV_H)
  632. $(OBJ)\mkobj.0:        $(HACK_H)    $(INCL)\artifact.h    $(INCL)\prop.h
  633. $(OBJ)\mkobj.1:        $(HACK_H)    $(INCL)\artifact.h    $(INCL)\prop.h
  634. $(OBJ)\mkobj.2-b:    $(HACK_H)    $(INCL)\artifact.h    $(INCL)\prop.h
  635. $(OBJ)\mkroom.0:    $(HACK_H)
  636. $(OBJ)\mkroom.1-b:    $(HACK_H)
  637. $(OBJ)\mon.0-1:        $(HACK_H)    $(INCL)\mfndpos.h    $(INCL)\edog.h
  638. $(OBJ)\mon.2-b:        $(HACK_H)    $(INCL)\mfndpos.h    $(INCL)\edog.h
  639. $(OBJ)\mondata.0-1:    $(HACK_H)    $(ESHK_H)    $(EPRI_H)
  640. $(OBJ)\mondata.2:    $(HACK_H)    $(ESHK_H)    $(EPRI_H)
  641. $(OBJ)\mondata.b:    $(HACK_H)    $(ESHK_H)    $(EPRI_H)
  642. $(OBJ)\monmove.0-1:    $(HACK_H)    $(INCL)\mfndpos.h $(INCL)\artifact.h
  643. $(OBJ)\monmove.2-b:    $(HACK_H)    $(INCL)\mfndpos.h $(INCL)\artifact.h
  644. $(OBJ)\monst.o:        $(CONFIG_H)    $(PERMONST_H)    $(INCL)\monsym.h \
  645.             $(ESHK_H)    $(VAULT_H)    $(EPRI_H) \
  646.             $(INCL)\color.h
  647. $(OBJ)\monstr.o:    $(CONFIG_H)
  648. $(OBJ)\mplayer.o:    $(HACK_H)
  649. $(OBJ)\mthrowu.0:    $(HACK_H)
  650. $(OBJ)\mthrowu.1:    $(HACK_H)
  651. $(OBJ)\mthrowu.2-b:    $(HACK_H)
  652. $(OBJ)\muse.o:        $(HACK_H)
  653. $(OBJ)\music.o:        $(HACK_H)
  654. $(OBJ)\o_init.o:    $(HACK_H)
  655. $(OBJ)\objects.o:    $(CONFIG_H)    $(INCL)\obj.h    $(INCL)\objclass.h \
  656.             $(INCL)\prop.h    $(INCL)\color.h
  657. $(OBJ)\objnam.0-1:    $(HACK_H)
  658. $(OBJ)\objnam.2-b:    $(HACK_H)
  659. $(OBJ)\options.o:    $(HACK_H)    $(INCL)\termcap.h
  660. $(OBJ)\pager.o:        $(HACK_H)
  661.     $(CC) $(CFLAGS) /Od /Fo$(OBJ)\$*.o $*.c
  662. $(OBJ)\pickup.o:    $(HACK_H)
  663. $(OBJ)\pline.o:        $(HACK_H)    $(EPRI_H)
  664. $(OBJ)\polyself.0-1:    $(HACK_H)
  665. $(OBJ)\polyself.2-b:    $(HACK_H)
  666. $(OBJ)\potion.o:    $(HACK_H)
  667. $(OBJ)\pray.o:        $(HACK_H)    $(EPRI_H)
  668. $(OBJ)\priest.0:    $(HACK_H)    $(INCL)\mfndpos.h    $(ESHK_H) \
  669.             $(EPRI_H)    $(EMIN_H)
  670. $(OBJ)\priest.1-b:    $(HACK_H)    $(INCL)\mfndpos.h    $(ESHK_H) \
  671.             $(EPRI_H)    $(EMIN_H)
  672. $(OBJ)\quest.o:        $(HACK_H)    $(INCL)\quest.h    $(INCL)\qtext.h
  673. $(OBJ)\questpgr.o:    $(HACK_H)    $(INCL)\qtext.h
  674. $(OBJ)\read.0:        $(HACK_H)
  675. $(OBJ)\read.1-b:    $(HACK_H)
  676. $(OBJ)\rect.o:        $(HACK_H)
  677. $(OBJ)\restore.o:    $(HACK_H)    $(INCL)\lev.h    $(INCL)\termcap.h \
  678.             $(INCL)\quest.h
  679. $(OBJ)\rip.o:        $(HACK_H)
  680. $(OBJ)\rnd.0:        $(HACK_H)
  681. $(OBJ)\rnd.1:        $(HACK_H)
  682. $(OBJ)\rnd.2-b:        $(HACK_H)
  683. $(OBJ)\rumors.o:    $(HACK_H)
  684. $(OBJ)\save.o:        $(HACK_H)    $(INCL)\lev.h    $(INCL)\quest.h
  685. $(OBJ)\shk.0:        $(HACK_H)    $(ESHK_H)
  686. $(OBJ)\shk.1-b:        $(HACK_H)    $(ESHK_H)
  687. $(OBJ)\shknam.0:    $(HACK_H)    $(ESHK_H)
  688. $(OBJ)\shknam.1-b:    $(HACK_H)    $(ESHK_H)
  689. $(OBJ)\sit.o:        $(HACK_H)    $(INCL)\artifact.h
  690. $(OBJ)\sounds.0:    $(HACK_H)    $(INCL)\edog.h    $(ESHK_H)
  691. $(OBJ)\sounds.1-b:    $(HACK_H)    $(INCL)\edog.h    $(ESHK_H)
  692. $(OBJ)\sp_lev.o:    $(HACK_H)    $(SP_LEV_H)    $(INCL)\rect.h
  693. $(OBJ)\spell.o:        $(HACK_H)
  694. $(OBJ)\steal.0-1:    $(HACK_H)
  695. $(OBJ)\steal.2-b:    $(HACK_H)
  696. $(OBJ)\timeout.0:    $(HACK_H)
  697. $(OBJ)\timeout.1-b:    $(HACK_H)
  698. $(OBJ)\topten.o:    $(HACK_H)
  699. $(OBJ)\track.0:        $(HACK_H)
  700. $(OBJ)\track.1:        $(HACK_H)
  701. $(OBJ)\track.2-b:    $(HACK_H)
  702. $(OBJ)\trap.0-1:    $(HACK_H)    $(INCL)\edog.h
  703. $(OBJ)\trap.2:        $(HACK_H)    $(INCL)\edog.h
  704. $(OBJ)\trap.b:        $(HACK_H)    $(INCL)\edog.h
  705. $(OBJ)\u_init.o:    $(HACK_H)
  706. $(OBJ)\uhitm.o:        $(HACK_H)    $(INCL)\artifact.h
  707. $(OBJ)\vault.0:        $(HACK_H)    $(VAULT_H)
  708. $(OBJ)\vault.1-b:    $(HACK_H)    $(VAULT_H)
  709. $(OBJ)\version.o:    $(HACK_H)    $(INCL)\date.h    $(INCL)\patchlev.h
  710. $(OBJ)\vision.o:    $(HACK_H)    $(INCL)\vis_tab.h
  711. $(OBJ)\vis_tab.o:    $(HACK_H)    $(INCL)\vis_tab.h
  712. $(OBJ)\weapon.0-1:    $(HACK_H)
  713. $(OBJ)\weapon.2-b:    $(HACK_H)
  714. $(OBJ)\were.0:        $(HACK_H)
  715. $(OBJ)\were.1-b:    $(HACK_H)
  716. $(OBJ)\wield.o:        $(HACK_H)
  717. $(OBJ)\wizard.0:    $(HACK_H)    $(INCL)\qtext.h
  718. $(OBJ)\wizard.1-b:    $(HACK_H)    $(INCL)\qtext.h
  719. $(OBJ)\worm.o:        $(HACK_H)    $(INCL)\lev.h
  720. $(OBJ)\worn.o:        $(HACK_H)
  721. $(OBJ)\write.o:        $(HACK_H)
  722. $(OBJ)\zap.o:        $(HACK_H)
  723.