home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / nethack-3.1 / sys / os2 / Makefile.os2 < prev    next >
Encoding:
Makefile  |  1993-01-25  |  36.6 KB  |  1,300 lines

  1. #    SCCS Id: @(#)Makefile.os2    3.1    93/01/24
  2. #    OS/2 NetHack 3.1 Makefile for OS/2 versions 1.x and 2.x
  3. #    Copyright (C) 1990, 1991, 1992, 1993 Timo Hakulinen
  4. #
  5. #    Supported compilers: Microsoft C 5.1 and 6.0A, GCC emx 0.8f,
  6. #    IBM C Set/2 1.00 with Toolkit/2 2.00.
  7. #
  8. #    NDMAKE ver 4.5, Microsoft/IBM NMAKE, or Dennis Vadura's DMAKE is
  9. #    required; old MS-MAKE will not work.  To enable the appropriate
  10. #    make utility, uncomment the respective make-specific macros.  If
  11. #    you plan to cross-compile in DOS, your best bet is NDMAKE, since
  12. #    it requires less memory than NMAKE.  To compile in OS/2 use NMAKE,
  13. #    DMAKE or something compatible.  Remember to set $(RLIBS) to real mode
  14. #    libraries if cross-compiling in DOS, and to protected mode libraries
  15. #    for compilation in OS/2.
  16. #
  17. #    Copy this file into $(SRC) directory, rename it to "makefile"
  18. #    (important, many targets rely on it), compile and link inside
  19. #    $(SRC).  If required, termcap library can be built from termcap
  20. #    sources using makefile.lib in "sys\share" directory.
  21. #
  22. #    "MSC" in this makefile refers to Microsoft C 5.1 and 6.0A.
  23. #    Whenever the distinction is significant, it is indicated.
  24. #
  25. #    "GCC" refers to GCC emx 0.8f only.  No other ports of
  26. #    GCC are supported.
  27. #
  28. #    "CSet/2" is the IBM 32 bit C compiler for OS/2 2.0.  CSet/2
  29. #    support courtesy Jeff Urlwin (jurlwin@gandalf.umcs.maine.edu).
  30. #
  31. #    "OMF" is short for "Object Module Format" and refers to the
  32. #    standard OS/2 object format, which e.g. link386 uses.  MSC and
  33. #    CSet/2 always produce OMF object files, and GCC can be instructed
  34. #    to produce them with proper switches (see below).
  35. #
  36. #    "a.out" refers to Unix object file format, which is used by GCC
  37. #    in its default compilation mode.  These object files must be
  38. #    linked using GCC's own linker to produce a proper OS/2 executable.
  39. #    GDB debugger shipped with GCC can only be used with a.out object
  40. #    format.
  41. #
  42. #    Note that the default setup in this makefile is my personal setup,
  43. #    which you will have to adapt to your configuration.
  44. #
  45.  
  46. #
  47. #    Compiler and linker selection.
  48. #
  49.  
  50. CC    = cl        # MSC
  51. #CC    = gcc        # GCC
  52. #CC    = icc        # CSet/2
  53.  
  54. LINK    = link        # MSC
  55. #LINK    = link386    # GCC OMF, CSet/2
  56.  
  57. #
  58. #    Make syntax peculiarities.
  59. #
  60. #    Enable the uppermost eight lines for NDMAKE, the middle eight
  61. #    for NMAKE (MSC, CSet/2), and the lowermost eight for DMAKE.
  62. #
  63.  
  64. #MAKEB    = ndmake    # Executable name
  65. #CMD    =        # Command processor name if required
  66. #AB    = $*.c        # Base name of the target in target action
  67. #CB    = $*.c        #               - " -               dependent
  68. #B    = (        # Command line begin in shell one-liners
  69. #E    = )        #   - " -      end   - " -
  70. #S    = ;        # Command separator  - " -
  71. #P    = %        # Literal percent sign
  72. MAKEB    = nmake
  73. CMD    =
  74. AB    = $(@B).c
  75. CB    = $$(@B).c
  76. B    = (
  77. E    = )
  78. S    = &
  79. P    = %%
  80. #MAKEB    = dmake
  81. #CMD    = cmd /C
  82. #AB    = $(@:B).c
  83. #CB    = $$(@:B).c
  84. #B    = $(CMD) "
  85. #E    = "
  86. #S    = &
  87. #P    = %
  88.  
  89. #
  90. #    Most makes execute actions automatically inside a subshell,
  91. #    which makes even the shell internals work ok.  This applies
  92. #    for NDMAKE and NMAKE.  DMAKE wants it spelled out for it.
  93. #
  94.  
  95. ECHO    = $(CMD) @echo
  96. RM    = $(CMD) del
  97. CP    = $(CMD) copy
  98.  
  99. #
  100. #    For those of us who have these on PC.
  101. #
  102.  
  103. #YACC    = yacc
  104. #LEX    = lex
  105. YACC    = bison -y
  106. LEX    = flex
  107.  
  108. #
  109. #    For extracting NetHack icon.
  110. #
  111.  
  112. UUDECODE = uudecode
  113.  
  114. #
  115. #    For people with TeX and LaTeX.
  116. #
  117.  
  118. LATEX    = latex
  119.  
  120. #
  121. #    Standard file naming for LEX and YACC output may vary in PC
  122. #    installations.  These three are probably the most generally used
  123. #    names.
  124. #
  125.  
  126. YTABC    = y_tab.c
  127. YTABH    = y_tab.h
  128. LEXYYC    = lexyy.c
  129.  
  130. #
  131. #    Source tree base directory.
  132. #
  133.  
  134. NHSRC    = \nh31
  135.  
  136. #
  137. #    Source directories.  Makedefs hardcodes these, don't change them.
  138. #
  139.  
  140. INCL    = $(NHSRC)\include    # NetHack include files
  141. DAT    = $(NHSRC)\dat        # NetHack data files
  142. DOC    = $(NHSRC)\doc        # NetHack documentation files
  143. UTIL    = $(NHSRC)\util        # Utility source
  144. SRC    = $(NHSRC)\src        # Main source
  145. WIN    = $(NHSRC)\win\tty    # Window system specific source
  146. SYS    = $(NHSRC)\sys\os2    # System specific source
  147. SSYS    = $(NHSRC)\sys\share    # Shared system files
  148.  
  149. #
  150. #    Modifiable directories.  Set these according to your setup and
  151. #    preferences.  They must all be present prior to compilation.
  152. #    OBJ, TEMP and GAMEDIR should all preferably be separate and,
  153. #    in particular, not the same as any of the source directories.
  154. #    Note that DMAKE may dislike drive designators in paths because
  155. #    it misinterprets the colon as being part of a make rule.  In this
  156. #    case, all directories have to reside in the same drive.
  157. #
  158.  
  159. OBJ    = \tmp\obj        # Object files
  160. TEMP    = \tmp\bin        # Temporary files during make process
  161. GAMEDIR = \games\nh31        # Game directory
  162. PLIBP    = d:\c6\lib        # Protected mode C libraries
  163. RLIBP    = d:\c6\lib        # Possible real mode C libraries
  164.  
  165. TLIBP    = \toolkt20\os2lib    # CSet/2 Toolkit libpath (OS2386.LIB)
  166.  
  167. #
  168. #    The game name and description.
  169. #
  170.  
  171. GAME    = nethack
  172. GAMEDES = "NetHack 3.1"
  173.  
  174. #
  175. #    The uppermost two lines for MSC, the middle two for GCC, and
  176. #    the lowermost two for CSet/2.
  177. #
  178. #    MSC: compile only, compiler id, large memory model, optimization level,
  179. #    remove stack probes, 80286 instruction set, dedicated datasegment for
  180. #    items >= 10 bytes, pack structures on 1 byte boundaries, generate code
  181. #    for 8087 coprocessor, compiler warning level, include file path, invoke
  182. #    large model compiler, debug flags, ANSI conformance.
  183. #
  184. #    GCC: compile only, compiler id, object format selection, warnings,
  185. #    include file path, ANSI conformance.
  186. #
  187. #    CSet/2: compile only, compiler id, migration lib, remove stack probes,
  188. #    force intra 64K alignment for data, force optlink linkage on function
  189. #    calls, warning level, include files, ANSI conformance.
  190. #
  191.  
  192. CFLAGS    = /c /DOS2_MSC /AL /O /Gs /G2 /Gt10 /Zp1 /FPi $(WARN) /I$(INCL) $(BIGC) $(CDFLAGS) $(STDC)
  193. O    = /Fo
  194. #CFLAGS    = -c -DOS2_GCC $(GCCO) $(WARN) -I$(INCL) $(CDFLAGS) $(STDC)
  195. #O    = -o
  196. #CFLAGS    = /c /DOS2_CSET2 /Sm /Gs /Gt+ /Mp $(WARN) /I$(INCL) $(CDFLAGS) $(STDC)
  197. #O    = /Fo
  198.  
  199. #
  200. #    Compiler warning levels.  These are really for development, so
  201. #    they are commented out in general distribution to save the user
  202. #    from masses of benign warnings.  If any problems arise, however,
  203. #    they may help in finding the trouble.
  204. #
  205. #    MSC: warning level 3 is highest in 5.1, second highest in 6.0.
  206. #    Cries a lot, but for no real cause.  Warning level 0 for distribution.
  207. #
  208. #    GCC: max. reasonable GCC warning levels.  Can't use -Wall, because then
  209. #    it would whine about all the zillions of unused declarations etc.
  210. #    Even with these switch you'll get a lot of warnings, but they should
  211. #    all be benign.
  212. #
  213. #    CSet/2: warning level 3.  The second optional parameter gives
  214. #    lots of extra warnings.
  215. #
  216.  
  217. WARN    = /W0 #/W3        # MSC
  218. #WARN    = #-W -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -DGCC_WARN # GCC
  219. #WARN    = #/W3 #/Kbper    # CSet/2
  220.  
  221. #
  222. #    GCC object format selection.  Upper line for standard OS/2 OMF
  223. #    object format, lower for Unix style a.out format.
  224. #
  225.  
  226. #GCCO    = -Zomf -Zsys    # GCC OMF
  227. GCCO    =        # GCC a.out
  228.  
  229. #
  230. #    MSC 5.1 needs the large model first pass of the compiler.
  231. #    Not needed for later versions.
  232. #
  233.  
  234. BIGC    =
  235. #BIGC    = /B1 d:\binb\c1l.exe    # MSC 5.1
  236.  
  237. #
  238. #    Unset CL to avoid troubles with conflicting switches in MSC 6.0.
  239. #
  240.  
  241. CL    =
  242.  
  243. #
  244. #    MSC, CSet/2: don't ignore case in symbols, no default lib search, stack
  245. #    8KB, allow max 1024 segments in program.
  246. #
  247. #    GCC: likes a big stack.
  248. #
  249.  
  250. LFLAGS    = /noig /nod /stack:8192 /seg:1024 $(LDFLAGS)    # MSC, CSet/2
  251. #LFLAGS    = /noig /stack:40000                # GCC
  252.  
  253. #
  254. #    Prepare for a debugger.
  255. #
  256.  
  257. CDFLAGS =
  258. LDFLAGS =
  259. #CDFLAGS = /Zi        # CodeView (MSC)
  260. #LDFLAGS = /CO        # - " -
  261. #CDFLAGS = -g        # GDB (GCC a.out)
  262. #LDFLAGS = -g        # - " -
  263. #CDFLAGS = /Ti+        # IPMD (CSet/2)
  264. #LDFLAGS = /CO        # - " -
  265.  
  266. #
  267. #    How to produce the most ANSI-like environment.
  268. #
  269.  
  270. #STDC    =        # MSC 5.1
  271. STDC    = /D__STDC__    # MSC 6.0, CSet/2
  272. #STDC    = -ansi        # GCC
  273.  
  274. #
  275. #    Possible system object files required during linking.
  276. #
  277.  
  278. SYSOBJ    =            # MSC, GCC a.out, CSet/2
  279. #SYSOBJ    = $(PLIBP)\crt0.obj    # GCC OMF
  280.  
  281. #
  282. #    Compiler library selection.  Change if necessary.
  283. #
  284. #    MSC: Protected mode C libraries for 8087 emulator,
  285. #    OS/2 API entry points.
  286. #
  287. #    GCC OMF: C standard lib, extra GCC lib, static system lib,
  288. #    OS/2 API entry points.
  289. #
  290. #    GCC a.out: extra GCC lib, C standard lib, extra GCC lib (again),
  291. #    OS/2 API entry points.
  292. #
  293. #    CSet/2: C standard libraries, OS/2 API entry points.
  294. #
  295.  
  296. #PLIBS    = $(PLIBP)\llibcep $(PLIBP)\doscalls    # MSC 5.1
  297. PLIBS    = $(PLIBP)\llibcep $(PLIBP)\os2        # MSC 6.0
  298. #PLIBS    = $(PLIBP)\libc $(PLIBP)\libgcc $(PLIBP)\libsys $(PLIBP)\libos2    # GCC OMF
  299. #PLIBS    = -lgcc -lc -lgcc -los2            # GCC a.out (defining -lgcc twice is required)
  300. #PLIBS    = $(PLIBP)\dde4sbs.lib $(PLIBP)\dde4sbm.lib $(TLIBP)\os2386.lib # CSet/2
  301.  
  302. #
  303. #    C libraries used by makedefs, lev_comp and dgn_comp (change if
  304. #    necessary).  If compilation is done in DOS, enable the upper line
  305. #    possibly setting the library name to something else, if in OS/2,
  306. #    enable the lower line (protected mode libraries).
  307. #
  308.  
  309. #RLIBS    = $(RLIBP)\llibcer
  310. RLIBS    = $(PLIBS)
  311.  
  312. #
  313. #    Default compilation skeletons.    The uppermost six are for
  314. #    MSC and CSet/2 and the lowermost six for GCC.
  315. #
  316.  
  317. SRCCC    = $(CC) $(CFLAGS) $(O)$@ $(SRC)\$(AB)
  318. UTILCC    = $(CC) $(CFLAGS) $(O)$@ $(UTIL)\$(AB)
  319. SYSCC    = $(CC) $(CFLAGS) $(O)$@ $(SYS)\$(AB)
  320. SSYSCC    = $(CC) $(CFLAGS) $(O)$@ $(SSYS)\$(AB)
  321. PSYSCC    = $(CC) $(CFLAGS) $(O)$@ $(SSYS)\pc$(AB)
  322. WINCC    = $(CC) $(CFLAGS) $(O)$@ $(WIN)\$(AB)
  323. #SRCCC    = $(CC) $(CFLAGS) $(O) $@ $(AB)
  324. #UTILCC    = $(B) cd $(UTIL) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
  325. #SYSCC    = $(B) cd $(SYS) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
  326. #SSYSCC    = $(B) cd $(SSYS) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
  327. #PSYSCC    = $(B) cd $(SSYS) $(S) $(CC) $(CFLAGS) $(O) $@ pc$(AB) $(E)
  328. #WINCC    = $(B) cd $(WIN) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
  329.  
  330. #
  331. #    Default linker skeletons.  Upper four lines for everything
  332. #    that uses standard OS/2 object format (MSC, CSet/2, GCC OMF),
  333. #    lower four for GCC a.out format.
  334. #
  335.  
  336. GAMELN    = $(LINK) @$(TEMP)\$(GAME).rsp
  337. MKDFLN    = $(LINK) @$(TEMP)\makedefs.rsp
  338. LEVCLN    = $(LINK) @$(TEMP)\lev_comp.rsp
  339. DGNCLN    = $(LINK) @$(TEMP)\dgn_comp.rsp
  340. RCVRLN    = $(LINK) @$(TEMP)\recover.rsp
  341. #GAMELN    = $(CC) $(LDFLAGS) -o $(GAMEDIR)\$(GAME).exe $(TEMP)\$(GAMEDEF) $(SYSOBJ) $(HOBJ) $(PLIBS) $(TERMLIB)
  342. #MKDFLN    = $(CC) $(LDFLAGS) -o $(TEMP)\makedefs.exe $(TEMP)\$(MKDFDEF) $(SYSOBJ) $(MAKEOBJS) $(PLIBS)
  343. #LEVCLN    = $(CC) $(LDFLAGS) -o $(TEMP)\lev_comp.exe $(TEMP)\$(LEVCDEF) $(SYSOBJ) $(SPLEVOBJS) $(PLIBS)
  344. #DGNCLN    = $(CC) $(LDFLAGS) -o $(TEMP)\dgn_comp.exe $(TEMP)\$(DGNCDEF) $(SYSOBJ) $(DGNCOMPOBJS) $(PLIBS)
  345. #RCVRLN    = $(CC) $(LDFLAGS) -o $(GAMEDIR)\recover.exe $(TEMP)\$(RCVRDEF) $(SYSOBJ) $(RECOVOBJS) $(PLIBS)
  346.  
  347. #
  348. #    OS/2 module definition files for NetHack,
  349. #    makedefs, dgn_comp, lev_comp, recover.
  350. #
  351.  
  352. GAMEDEF    = $(GAME).def
  353. MKDFDEF    = makedefs.def
  354. LEVCDEF    = lev_comp.def
  355. DGNCDEF    = dgn_comp.def
  356. RCVRDEF    = recover.def
  357.  
  358. #
  359. #    For compilation in DOS, enable the lower three lines and
  360. #    disable the upper three.
  361. #
  362.  
  363. MKDFMD    = $(TEMP)\$(MKDFDEF)
  364. LEVCMD    = $(TEMP)\$(LEVCDEF)
  365. DGNCMD    = $(TEMP)\$(DGNCDEF)
  366. #MKDFMD    =
  367. #LEVCMD    =
  368. #DGNCMD    =
  369.  
  370. #
  371. #    Optional high-quality BSD random number generation routines
  372. #    (see os2conf.h).  Set to nothing if not used.
  373. #
  374.  
  375. RANDOM    = $(OBJ)\random.o
  376. #RANDOM    =
  377.  
  378. #
  379. #    If TERMLIB is defined in os2conf.h, comment out the upper line and
  380. #    uncomment the lower.  If the termcap-library doesn't exist, use
  381. #    sys\share\makefile.lib to build it.
  382. #
  383.  
  384. TERMLIB =
  385. #TERMLIB = termlib.lib
  386.  
  387. #
  388. #    Short / long file name selection for FAT and HPFS.
  389. #    Only two files need consideration.
  390. #
  391.  
  392. GUIDEBOO = Guideboo    # FAT
  393. PATCHLEV = patchlev    # - " -
  394. #GUIDEBOO = Guidebook    # HPFS
  395. #PATCHLEV = patchlevel    # - " -
  396.  
  397.  
  398. #
  399. #    If you have LaTeX and want to create the NetHack Guidebook in TeX
  400. #    device-independent file format, comment out the upper line and
  401. #    uncomment the lower.
  402. #
  403.  
  404. GUIDE    =
  405. #GUIDE    = $(TEMP)\$(GUIDEBOO).dvi
  406.  
  407. #
  408. #    Set WINOBJ lines corresponding to your desired combination
  409. #    of windowing systems.  Also set windowing systems in config.h.
  410. #
  411. #    A straight tty port using no native windowing system is the
  412. #    only choice for now.
  413.  
  414. WINOBJ = $(OBJ)\getline.o $(OBJ)\termcap.o $(OBJ)\topl.o $(OBJ)\wintty.o
  415.  
  416. #
  417. #    The default make target, so just typing 'make' is useful.
  418. #    Has to be the first target in the makefile.
  419. #
  420.  
  421. default : all
  422.  
  423. #
  424. #    If you have yacc and lex programs and make any changes, uncomment
  425. #    the lowermost two lines and uncomment the others.  If you make
  426. #    changes to the .y and .l files but prefer to process the files
  427. #    separately elsewhere, activate the middle two lines, so your changes
  428. #    don't get overwritten.
  429. #
  430.  
  431. #do_yacc : yacc_cpy    # use pre-generated files
  432. #do_lex :  lex_cpy    #    - " -
  433. #do_yacc : yacc_msg    # show message if changed
  434. #do_lex :  lex_msg    #    - " -
  435. do_yacc : yacc_act    # re-process files
  436. do_lex :  lex_act    #    - " -
  437.  
  438. #
  439. #    If you don't have uudecode program, use the upper line.
  440. #    If you still want the icon, you'll have to extract the
  441. #    file manually somewhere else.
  442. #
  443.  
  444. #do_icon : icon_msg    # show message if changed
  445. do_icon : icon_act    # extract icon file
  446.  
  447. #
  448. #    If you don't want to generate nethack.cmd, use the upper line.
  449. #    This could be the case, e.g., if you use different shell than
  450. #    the standard cmd.exe.
  451. #
  452.  
  453. #do_cmd : cmd_msg    # show message
  454. do_cmd : cmd_act    # generate nethack.cmd
  455.  
  456. ######################################################################
  457. #
  458. #    Nothing below this line should have to be changed.
  459. #
  460. #    Other things that have to be reconfigured are in
  461. #    config.h, os2conf.h and possibly system.h.
  462. #
  463.  
  464. #
  465. #    The game filename.
  466. #
  467.  
  468. GAMEFILE = $(GAMEDIR)\$(GAME).exe
  469.  
  470. #
  471. #    Object files for makedefs.
  472. #
  473.  
  474. MAKEOBJS = $(OBJ)\makedefs.o $(OBJ)\monst.o $(OBJ)\objects.o
  475.  
  476. #
  477. #    Object files for special levels compiler.
  478. #
  479.  
  480. SOBJ01    = $(OBJ)\lev_yacc.o $(OBJ)\lev_lex.o $(OBJ)\lev_main.o $(OBJ)\alloc.o
  481. SOBJ02    = $(OBJ)\monst.o $(OBJ)\objects.o $(OBJ)\panic.o $(OBJ)\decl.o
  482. SOBJ03    = $(OBJ)\drawing.o
  483.  
  484. SPLEVOBJS = $(SOBJ01) $(SOBJ02) $(SOBJ03)
  485.  
  486. #
  487. #    Object files for dungeon compiler.
  488. #
  489.  
  490. DOBJ01    = $(OBJ)\dgn_yacc.o $(OBJ)\dgn_lex.o $(OBJ)\dgn_main.o
  491. DOBJ02    = $(OBJ)\panic.o $(OBJ)\alloc.o
  492.  
  493. DGNCOMPOBJS = $(DOBJ01) $(DOBJ02)
  494.  
  495. #
  496. #    Object files for recovery utility.
  497. #
  498.  
  499. RECOVOBJS = $(OBJ)\recover.o
  500.  
  501. #
  502. #    Object files for the game itself.
  503. #
  504.  
  505. VOBJ01 = $(OBJ)\allmain.o  $(OBJ)\alloc.o    $(OBJ)\apply.o    $(OBJ)\artifact.o
  506. VOBJ02 = $(OBJ)\attrib.o   $(OBJ)\ball.o     $(OBJ)\bones.o    $(OBJ)\botl.o
  507. VOBJ03 = $(OBJ)\cmd.o      $(OBJ)\dbridge.o  $(OBJ)\decl.o     $(OBJ)\detect.o
  508. VOBJ04 = $(OBJ)\display.o  $(OBJ)\do.o       $(OBJ)\do_name.o  $(OBJ)\do_wear.o
  509. VOBJ05 = $(OBJ)\dog.o      $(OBJ)\dogmove.o  $(OBJ)\dokick.o   $(OBJ)\dothrow.o
  510. VOBJ06 = $(OBJ)\drawing.o  $(OBJ)\dungeon.o  $(OBJ)\eat.o      $(OBJ)\end.o
  511. VOBJ07 = $(OBJ)\engrave.o  $(OBJ)\exper.o    $(OBJ)\explode.o  $(OBJ)\extralev.o
  512. VOBJ08 = $(OBJ)\files.o    $(OBJ)\fountain.o $(OBJ)\hack.o     $(OBJ)\hacklib.o
  513. VOBJ09 = $(OBJ)\invent.o   $(OBJ)\lock.o     $(OBJ)\mail.o     $(OBJ)\main.o
  514. VOBJ10 = $(OBJ)\makemon.o  $(OBJ)\mcastu.o   $(OBJ)\mhitm.o    $(OBJ)\mhitu.o
  515. VOBJ11 = $(OBJ)\minion.o   $(OBJ)\mklev.o    $(OBJ)\mkmap.o    $(OBJ)\mkmaze.o
  516. VOBJ12 = $(OBJ)\mkobj.o    $(OBJ)\mkroom.o   $(OBJ)\mon.o      $(OBJ)\mondata.o
  517. VOBJ13 = $(OBJ)\monmove.o  $(OBJ)\monst.o    $(OBJ)\monstr.o   $(OBJ)\mplayer.o
  518. VOBJ14 = $(OBJ)\mthrowu.o  $(OBJ)\muse.o     $(OBJ)\music.o    $(OBJ)\o_init.o
  519. VOBJ15 = $(OBJ)\objects.o  $(OBJ)\objnam.o   $(OBJ)\options.o  $(OBJ)\os2.o
  520. VOBJ16 = $(OBJ)\pager.o    $(OBJ)\pcsys.o    $(OBJ)\pickup.o   $(OBJ)\pline.o
  521. VOBJ17 = $(OBJ)\polyself.o $(OBJ)\potion.o   $(OBJ)\pray.o     $(OBJ)\priest.o
  522. VOBJ18 = $(OBJ)\quest.o    $(OBJ)\questpgr.o $(OBJ)\read.o     $(OBJ)\rect.o
  523. VOBJ19 = $(OBJ)\restore.o  $(OBJ)\rip.o      $(OBJ)\rnd.o      $(OBJ)\rumors.o
  524. VOBJ20 = $(OBJ)\save.o     $(OBJ)\shk.o      $(OBJ)\shknam.o   $(OBJ)\sit.o
  525. VOBJ21 = $(OBJ)\sounds.o   $(OBJ)\sp_lev.o   $(OBJ)\spell.o    $(OBJ)\steal.o
  526. VOBJ22 = $(OBJ)\timeout.o  $(OBJ)\topten.o   $(OBJ)\track.o    $(OBJ)\trap.o
  527. VOBJ23 = $(OBJ)\tty.o      $(OBJ)\u_init.o   $(OBJ)\uhitm.o    $(OBJ)\unix.o
  528. VOBJ24 = $(OBJ)\vault.o    $(OBJ)\vision.o   $(OBJ)\vis_tab.o  $(OBJ)\weapon.o
  529. VOBJ25 = $(OBJ)\were.o     $(OBJ)\wield.o    $(OBJ)\windows.o  $(OBJ)\wizard.o
  530. VOBJ26 = $(OBJ)\worm.o     $(OBJ)\worn.o     $(OBJ)\write.o    $(OBJ)\zap.o
  531. VOBJ27 = $(WINOBJ)
  532. VOBJ28 = $(RANDOM)
  533. HHOBJ  = $(OBJ)\version.o
  534.  
  535. VOBJ =    $(VOBJ01) $(VOBJ02) $(VOBJ03) $(VOBJ04) $(VOBJ05) $(VOBJ06) $(VOBJ07) \
  536.     $(VOBJ08) $(VOBJ09) $(VOBJ10) $(VOBJ11) $(VOBJ12) $(VOBJ13) $(VOBJ14) \
  537.     $(VOBJ15) $(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ19) $(VOBJ20) $(VOBJ21) \
  538.     $(VOBJ22) $(VOBJ23) $(VOBJ24) $(VOBJ25) $(VOBJ26) $(VOBJ27) $(VOBJ28)
  539. HOBJ =    $(VOBJ) $(HHOBJ)
  540.  
  541. EXTERN_H   = #$(INCL)\extern.h
  542. OS2CONF_H  = $(INCL)\os2conf.h $(INCL)\micro.h $(INCL)\system.h $(EXTERN_H)
  543. GLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(OS2CONF_H)
  544. CONFIG_H   = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
  545. TRAP_H       = $(INCL)\trap.h
  546. PERMONST_H = $(INCL)\permonst.h $(INCL)\monattk.h $(INCL)\monflag.h
  547. YOU_H       = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
  548.          $(INCL)\monst.h $(INCL)\youprop.h $(INCL)\prop.h $(INCL)\pm.h
  549. DECL_H       = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \
  550.          $(INCL)\onames.h $(INCL)\color.h
  551. HACK_H       = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
  552.          $(INCL)\objclass.h $(TRAP_H) $(INCL)\engrave.h $(INCL)\flag.h \
  553.          $(INCL)\rm.h $(INCL)\dungeon.h $(INCL)\hack.h $(INCL)\display.h \
  554.          $(INCL)\vision.h $(INCL)\wintty.h $(INCL)\wintype.h $(INCL)\align.h \
  555.          $(INCL)\winprocs.h
  556.  
  557. #
  558. #    The default target.
  559. #
  560.  
  561. all :    makedefs dgn_comp lev_comp recover $(GAME) dat $(GUIDE)
  562.     $(ECHO) Done.
  563.  
  564. #
  565. #    Definition file creation.
  566. #
  567.  
  568. $(TEMP)\$(GAMEDEF) :
  569.     $(MAKEB) DD_NAME=$(GAME) DD_DESC=$(GAMEDES) DD_TARG=$@ do_def
  570. $(TEMP)\$(MKDFDEF) :
  571.     $(MAKEB) DD_NAME=makedefs DD_DESC="Definitions compiler" DD_TARG=$@ do_def
  572. $(TEMP)\$(DGNCDEF) :
  573.     $(MAKEB) DD_NAME=dgn_comp DD_DESC="Dungeon compiler" DD_TARG=$@ do_def
  574. $(TEMP)\$(LEVCDEF) :
  575.     $(MAKEB) DD_NAME=lev_comp DD_DESC="Level compiler" DD_TARG=$@ do_def
  576. $(TEMP)\$(RCVRDEF) :
  577.     $(MAKEB) DD_NAME=recover DD_DESC="Recovery utility" DD_TARG=$@ do_def
  578.  
  579. do_def :
  580.     $(ECHO) NAME $(DD_NAME) WINDOWCOMPAT> $(DD_TARG)
  581.     $(ECHO) DESCRIPTION '$(DD_DESC)'>> $(DD_TARG)
  582.     $(ECHO) PROTMODE>> $(DD_TARG)
  583.     $(ECHO) EXETYPE OS2>> $(DD_TARG)
  584.  
  585. #
  586. #    The main target.
  587. #
  588.  
  589. $(GAME) : $(GAMEDIR)\$(GAME).exe
  590. $(GAME).exe : $(GAMEDIR)\$(GAME).exe
  591. $(GAMEDIR)\$(GAME).exe : $(TEMP)\$(GAME).rsp
  592.     $(GAMELN)
  593.  
  594. $(TEMP)\$(GAME).rsp : $(HOBJ) $(TEMP)\$(GAMEDEF)
  595.     $(ECHO) $(SYSOBJ) $(VOBJ01) +> $@
  596.     $(ECHO) $(VOBJ02) +>> $@
  597.     $(ECHO) $(VOBJ03) +>> $@
  598.     $(ECHO) $(VOBJ04) +>> $@
  599.     $(ECHO) $(VOBJ05) +>> $@
  600.     $(ECHO) $(VOBJ06) +>> $@
  601.     $(ECHO) $(VOBJ07) +>> $@
  602.     $(ECHO) $(VOBJ08) +>> $@
  603.     $(ECHO) $(VOBJ09) +>> $@
  604.     $(ECHO) $(VOBJ10) +>> $@
  605.     $(ECHO) $(VOBJ11) +>> $@
  606.     $(ECHO) $(VOBJ12) +>> $@
  607.     $(ECHO) $(VOBJ13) +>> $@
  608.     $(ECHO) $(VOBJ14) +>> $@
  609.     $(ECHO) $(VOBJ15) +>> $@
  610.     $(ECHO) $(VOBJ16) +>> $@
  611.     $(ECHO) $(VOBJ17) +>> $@
  612.     $(ECHO) $(VOBJ18) +>> $@
  613.     $(ECHO) $(VOBJ19) +>> $@
  614.     $(ECHO) $(VOBJ20) +>> $@
  615.     $(ECHO) $(VOBJ21) +>> $@
  616.     $(ECHO) $(VOBJ22) +>> $@
  617.     $(ECHO) $(VOBJ23) +>> $@
  618.     $(ECHO) $(VOBJ24) +>> $@
  619.     $(ECHO) $(VOBJ25) +>> $@
  620.     $(ECHO) $(VOBJ26) +>> $@
  621.     $(ECHO) $(VOBJ27) +>> $@
  622.     $(ECHO) $(VOBJ28) +>> $@
  623.     $(ECHO) $(HHOBJ)>> $@
  624.     $(ECHO) $(GAMEDIR)\$(GAME).exe>> $@
  625.     $(ECHO) $(TEMP)\$(GAME)>> $@
  626.     $(ECHO) $(PLIBS) $(TERMLIB)>> $@
  627.     $(ECHO) $(TEMP)\$(GAMEDEF) $(LFLAGS);>> $@
  628.  
  629. #
  630. #    Targets for makedefs.
  631. #
  632.  
  633. makedefs : $(TEMP)\makedefs.exe
  634. $(TEMP)\makedefs.exe : $(TEMP)\makedefs.rsp
  635.     $(MKDFLN)
  636.  
  637. $(TEMP)\makedefs.rsp : $(MAKEOBJS) $(TEMP)\$(MKDFDEF)
  638.     $(ECHO) $(SYSOBJ) $(MAKEOBJS)> $@
  639.     $(ECHO) $(TEMP)\makedefs.exe>> $@
  640.     $(ECHO) nul>> $@
  641.     $(ECHO) $(RLIBS)>> $@
  642.     $(ECHO) $(MKDFMD) $(LFLAGS);>> $@
  643.  
  644. $(OBJ)\makedefs.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\permonst.h $(INCL)\objclass.h \
  645.             $(INCL)\monsym.h $(INCL)\artilist.h $(INCL)\qtext.h
  646.     $(UTILCC)
  647.  
  648. #
  649. #    Targets for the special levels compiler.
  650. #
  651.  
  652. lev_comp : $(TEMP)\lev_comp.exe
  653. $(TEMP)\lev_comp.exe : $(TEMP)\lev_comp.rsp
  654.     $(LEVCLN)
  655.  
  656. $(TEMP)\lev_comp.rsp : $(SPLEVOBJS) $(TEMP)\$(LEVCDEF)
  657.     $(ECHO) $(SYSOBJ) $(SOBJ01) +> $@
  658.     $(ECHO) $(SOBJ02) +>> $@
  659.     $(ECHO) $(SOBJ03)>> $@
  660.     $(ECHO) $(TEMP)\lev_comp.exe>> $@
  661.     $(ECHO) nul>> $@
  662.     $(ECHO) $(RLIBS)>> $@
  663.     $(ECHO) $(LEVCMD) $(LFLAGS);>> $@
  664.  
  665. $(OBJ)\lev_yacc.o : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h
  666.     $(UTILCC)
  667. $(OBJ)\lev_lex.o  : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\lev_comp.h
  668.     $(UTILCC)
  669. $(OBJ)\lev_main.o : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\termcap.h
  670.     $(UTILCC)
  671.  
  672. $(UTIL)\lev_yacc.c : $(UTIL)\lev_comp.y
  673.     $(MAKEB) YY=lev do_yacc
  674.  
  675. $(UTIL)\lev_lex.c  : $(UTIL)\lev_comp.l
  676.     $(MAKEB) YY=lev do_lex
  677.  
  678. #
  679. #    Targets for the dungeon compiler.
  680. #
  681.  
  682. dgn_comp : $(TEMP)\dgn_comp.exe
  683. $(TEMP)\dgn_comp.exe : $(TEMP)\dgn_comp.rsp
  684.     $(DGNCLN)
  685.  
  686. $(TEMP)\dgn_comp.rsp : $(DGNCOMPOBJS) $(TEMP)\$(DGNCDEF)
  687.     $(ECHO) $(SYSOBJ) $(DOBJ01) +> $@
  688.     $(ECHO) $(DOBJ02)>> $@
  689.     $(ECHO) $(TEMP)\dgn_comp.exe>> $@
  690.     $(ECHO) nul>> $@
  691.     $(ECHO) $(RLIBS)>> $@
  692.     $(ECHO) $(DGNCMD) $(LFLAGS);>> $@
  693.  
  694. $(OBJ)\dgn_yacc.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\dgn_file.h
  695.     $(UTILCC)
  696. $(OBJ)\dgn_lex.o  : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\dgn_comp.h $(INCL)\dgn_file.h
  697.     $(UTILCC)
  698. $(OBJ)\dgn_main.o : $(UTIL)\$(CB) $(CONFIG_H)
  699.     $(UTILCC)
  700.  
  701. $(UTIL)\dgn_yacc.c : $(UTIL)\dgn_comp.y
  702.     $(MAKEB) YY=dgn do_yacc
  703.  
  704. $(UTIL)\dgn_lex.c  : $(UTIL)\dgn_comp.l
  705.     $(MAKEB) YY=dgn do_lex
  706.  
  707. #
  708. #    For both lev_comp and dgn_comp.
  709. #
  710.  
  711. $(OBJ)\panic.o : $(UTIL)\$(CB) $(CONFIG_H)
  712.     $(UTILCC)
  713.  
  714. #
  715. #    Yacc and Lex targets.
  716. #
  717.  
  718. yacc_cpy :
  719.     $(CP) $(SSYS)\$(YY)_yacc.c $(UTIL)
  720.     $(CP) $(SSYS)\$(YY)_comp.h $(INCL)
  721.  
  722. yacc_msg :
  723.     $(ECHO) $(YY)_comp.y has changed. To update $(YY)_yacc.c and $(YY)_comp.h run $(YACC).
  724.  
  725. yacc_act :
  726.     $(YACC) -d $(UTIL)\$(YY)_comp.y
  727.     $(CP) $(YTABC) $(UTIL)\$(YY)_yacc.c
  728.     $(CP) $(YTABH) $(INCL)\$(YY)_comp.h
  729.     $(RM) $(YTABC)
  730.     $(RM) $(YTABH)
  731.  
  732. lex_cpy :
  733.     $(CP) $(SSYS)\$(YY)_lex.c $(UTIL)
  734.  
  735. lex_msg :
  736.     $(ECHO) $(YY)_comp.l has changed. To update $(YY)_lex.c run $(LEX).
  737.  
  738. lex_act :
  739.     $(LEX) $(UTIL)\$(YY)_comp.l
  740.     $(CP) $(LEXYYC) $(UTIL)\$(YY)_lex.c
  741.     $(RM) $(LEXYYC)
  742.  
  743. #
  744. #    Targets for the recovery utility.
  745. #
  746.  
  747. recover : $(GAMEDIR)\recover.exe
  748. $(GAMEDIR)\recover.exe : $(TEMP)\recover.rsp
  749.     $(RCVRLN)
  750.  
  751. $(TEMP)\recover.rsp : $(RECOVOBJS) $(TEMP)\$(RCVRDEF)
  752.     $(ECHO) $(SYSOBJ) $(RECOVOBJS)> $@
  753.     $(ECHO) $(GAMEDIR)\recover.exe>> $@
  754.     $(ECHO) nul>> $@
  755.     $(ECHO) $(PLIBS)>> $@
  756.     $(ECHO) $(TEMP)\$(RCVRDEF) $(LFLAGS);>> $@
  757.  
  758. $(OBJ)\recover.o : $(UTIL)\$(CB) $(CONFIG_H)
  759.     $(UTILCC)
  760.  
  761. #
  762. #    The following files depend on makedefs to be created.
  763. #
  764. #    date.h should be remade every time any of the source or include
  765. #    files is modified.
  766. #
  767.  
  768. $(INCL)\date.h : $(VOBJ) $(TEMP)\makedefs.exe
  769.     $(TEMP)\makedefs -v
  770.     $(CP) $(DAT)\options $(GAMEDIR)
  771.     $(RM) $(DAT)\options
  772.  
  773. $(INCL)\onames.h : $(TEMP)\makedefs.exe
  774.     $(TEMP)\makedefs -o
  775.  
  776. $(INCL)\pm.h : $(TEMP)\makedefs.exe
  777.     $(TEMP)\makedefs -p
  778.  
  779. monstr.c : $(TEMP)\makedefs.exe
  780.     $(TEMP)\makedefs -m
  781.  
  782. $(OBJ)\monstr.o : $(CB)
  783.     $(SRCCC)
  784.  
  785. $(GAMEDIR)\data : $(DAT)\data.bas $(TEMP)\makedefs.exe
  786.     $(TEMP)\makedefs -d
  787.     $(CP) $(DAT)\data $(GAMEDIR)
  788.     $(RM) $(DAT)\data
  789.  
  790. $(GAMEDIR)\rumors : $(DAT)\rumors.tru $(DAT)\rumors.fal $(TEMP)\makedefs.exe
  791.     $(TEMP)\makedefs -r
  792.     $(CP) $(DAT)\rumors $(GAMEDIR)
  793.     $(RM) $(DAT)\rumors
  794.  
  795. $(GAMEDIR)\oracles : $(DAT)\oracles.txt $(TEMP)\makedefs.exe
  796.     $(TEMP)\makedefs -h
  797.     $(CP) $(DAT)\oracles $(GAMEDIR)
  798.     $(RM) $(DAT)\oracles
  799.  
  800. $(GAMEDIR)\quest.dat : $(DAT)\quest.txt $(TEMP)\makedefs.exe
  801.     $(TEMP)\makedefs -q
  802.     $(CP) $(DAT)\quest.dat $(GAMEDIR)
  803.     $(RM) $(DAT)\quest.dat
  804.  
  805. #
  806. #    Vision tables for algorithm D.
  807. #
  808.  
  809. vis_tab.c : $(INCL)\vis_tab.h
  810. $(INCL)\vis_tab.h : $(TEMP)\makedefs.exe
  811.     $(TEMP)\makedefs -z
  812.  
  813. $(OBJ)\vis_tab.o : $(CB)
  814.     $(SRCCC)
  815.  
  816. #
  817. #    The following programs vary depending on what OS you are using.
  818. #
  819.  
  820. $(OBJ)\main.o : $(SSYS)\pc$(CB) $(HACK_H)
  821.     $(PSYSCC)
  822. $(OBJ)\tty.o  : $(SSYS)\pc$(CB) $(HACK_H) $(INCL)\func_tab.h
  823.     $(PSYSCC)
  824. $(OBJ)\unix.o : $(SSYS)\pc$(CB) $(HACK_H)
  825.     $(PSYSCC)
  826.  
  827. #
  828. #    Other system specific modules.
  829. #
  830.  
  831. $(OBJ)\os2.o   : $(SYS)\$(CB) $(HACK_H) $(INCL)\termcap.h $(INCL)\def_os2.h
  832.     $(SYSCC)
  833. $(OBJ)\pcsys.o : $(SSYS)\$(CB) $(HACK_H)
  834.     $(SSYSCC)
  835.  
  836. #
  837. #    Berkeley random(3) routines.
  838. #
  839.  
  840. $(OBJ)\random.o : $(SSYS)\$(CB)
  841.     $(SSYSCC)
  842.  
  843. #
  844. #    Window source.
  845. #
  846.  
  847. $(OBJ)\getline.o : $(WIN)\$(CB) $(HACK_H) $(INCL)\func_tab.h
  848.     $(WINCC)
  849. $(OBJ)\termcap.o : $(WIN)\$(CB) $(HACK_H) $(INCL)\termcap.h
  850.     $(WINCC)
  851. $(OBJ)\topl.o    : $(WIN)\$(CB) $(HACK_H) $(INCL)\termcap.h
  852.     $(WINCC)
  853. $(OBJ)\wintty.o  : $(WIN)\$(CB) $(HACK_H) $(INCL)\termcap.h
  854.     $(WINCC)
  855.  
  856. #
  857. #    Secondary targets.
  858. #
  859.  
  860. dat :    spec_lev help_fil $(GAMEDIR)\dungeon $(GAMEDIR)\data $(GAMEDIR)\rumors \
  861.     $(GAMEDIR)\oracles $(GAMEDIR)\quest.dat    $(GAMEDIR)\$(GAME).ico \
  862.     $(GAMEDIR)\$(GAME).cmd $(GAMEDIR)\nethack.cnf
  863.  
  864. help_fil : $(GAMEDIR)\cmdhelp $(GAMEDIR)\help $(GAMEDIR)\hh $(GAMEDIR)\history \
  865.     $(GAMEDIR)\license $(GAMEDIR)\opthelp $(GAMEDIR)\wizhelp
  866.  
  867. $(GAMEDIR)\cmdhelp : $(DAT)\cmdhelp
  868.     $(CP) $(DAT)\cmdhelp $(GAMEDIR)
  869. $(GAMEDIR)\help : $(DAT)\help
  870.     $(CP) $(DAT)\help $(GAMEDIR)
  871. $(GAMEDIR)\hh : $(DAT)\hh
  872.     $(CP) $(DAT)\hh $(GAMEDIR)
  873. $(GAMEDIR)\history : $(DAT)\history
  874.     $(CP) $(DAT)\history $(GAMEDIR)
  875. $(GAMEDIR)\license : $(DAT)\license
  876.     $(CP) $(DAT)\license $(GAMEDIR)
  877. $(GAMEDIR)\opthelp : $(DAT)\opthelp
  878.     $(CP) $(DAT)\opthelp $(GAMEDIR)
  879. $(GAMEDIR)\wizhelp : $(DAT)\wizhelp
  880.     $(CP) $(DAT)\wizhelp $(GAMEDIR)
  881.  
  882. $(GAMEDIR)\dungeon : $(DAT)\dungeon.def $(TEMP)\makedefs.exe $(TEMP)\dgn_comp.exe
  883.     $(TEMP)\makedefs -e
  884.     $(TEMP)\dgn_comp $(DAT)\dungeon.pdf
  885.     $(CP) $(DAT)\dungeon $(GAMEDIR)
  886.     $(RM) $(DAT)\dungeon.pdf
  887.     $(RM) $(DAT)\dungeon
  888.  
  889. AFILES = $(GAMEDIR)\A-goal.lev
  890. BFILES = $(GAMEDIR)\B-goal.lev
  891. CFILES = $(GAMEDIR)\C-goal.lev
  892. EFILES = $(GAMEDIR)\E-goal.lev
  893. HFILES = $(GAMEDIR)\H-goal.lev
  894. KFILES = $(GAMEDIR)\K-goal.lev
  895. PFILES = $(GAMEDIR)\P-goal.lev
  896. RFILES = $(GAMEDIR)\R-goal.lev
  897. SFILES = $(GAMEDIR)\S-goal.lev
  898. TFILES = $(GAMEDIR)\T-goal.lev
  899. VFILES = $(GAMEDIR)\V-goal.lev
  900. WFILES = $(GAMEDIR)\W-goal.lev
  901.  
  902. XFILES = $(AFILES) $(BFILES) $(CFILES) $(EFILES) $(HFILES) $(KFILES) \
  903.      $(PFILES) $(RFILES) $(SFILES) $(TFILES) $(VFILES) $(WFILES)
  904.  
  905. spec_lev : $(GAMEDIR)\astral.lev $(GAMEDIR)\bigroom.lev $(GAMEDIR)\castle.lev \
  906.        $(GAMEDIR)\knox.lev $(GAMEDIR)\medusa-1.lev $(GAMEDIR)\mine_end.lev \
  907.        $(GAMEDIR)\oracle.lev $(GAMEDIR)\tower1.lev $(GAMEDIR)\valley.lev \
  908.        $(GAMEDIR)\wizard1.lev $(XFILES)
  909.  
  910. #    Single special level files
  911.  
  912. $(GAMEDIR)\bigroom.lev : $(DAT)\bigroom.des $(TEMP)\lev_comp.exe
  913.     $(MAKEB) LF=bigroom do_slev
  914. $(GAMEDIR)\castle.lev : $(DAT)\castle.des $(TEMP)\lev_comp.exe
  915.     $(MAKEB) LF=castle do_slev
  916. $(GAMEDIR)\knox.lev : $(DAT)\knox.des $(TEMP)\lev_comp.exe
  917.     $(MAKEB) LF=knox do_slev
  918. $(GAMEDIR)\oracle.lev : $(DAT)\oracle.des $(TEMP)\lev_comp.exe
  919.     $(MAKEB) LF=oracle do_slev
  920.  
  921. do_slev :
  922.     $(TEMP)\lev_comp $(DAT)\$(LF).des
  923.     $(CP) $(LF).lev $(GAMEDIR)
  924.     $(RM) $(LF).lev
  925.  
  926. #    Multiple special level files
  927.  
  928. $(GAMEDIR)\astral.lev : $(DAT)\endgame.des $(TEMP)\lev_comp.exe
  929.     $(TEMP)\lev_comp $(DAT)\endgame.des
  930.     $(CP) air.lev $(GAMEDIR)
  931.     $(CP) astral.lev $(GAMEDIR)
  932.     $(CP) earth.lev $(GAMEDIR)
  933.     $(CP) fire.lev $(GAMEDIR)
  934.     $(CP) water.lev $(GAMEDIR)
  935.     $(RM) air.lev
  936.     $(RM) astral.lev
  937.     $(RM) earth.lev
  938.     $(RM) fire.lev
  939.     $(RM) water.lev
  940.  
  941. $(GAMEDIR)\medusa-1.lev : $(DAT)\medusa.des $(TEMP)\lev_comp.exe
  942.     $(TEMP)\lev_comp $(DAT)\medusa.des
  943.     $(CP) medusa-?.lev $(GAMEDIR)
  944.     $(RM) medusa-?.lev
  945.  
  946. $(GAMEDIR)\mine_end.lev : $(DAT)\mines.des $(TEMP)\lev_comp.exe
  947.     $(TEMP)\lev_comp $(DAT)\mines.des
  948.     $(CP) mine_end.lev $(GAMEDIR)
  949.     $(CP) minefill.lev $(GAMEDIR)
  950.     $(CP) minetown.lev $(GAMEDIR)
  951.     $(RM) mine_end.lev
  952.     $(RM) minefill.lev
  953.     $(RM) minetown.lev
  954.  
  955. $(GAMEDIR)\tower1.lev : $(DAT)\tower.des $(TEMP)\lev_comp.exe
  956.     $(TEMP)\lev_comp $(DAT)\tower.des
  957.     $(CP) tower?.lev $(GAMEDIR)
  958.     $(RM) tower?.lev
  959.  
  960. $(GAMEDIR)\valley.lev : $(DAT)\gehennom.des $(TEMP)\lev_comp.exe
  961.     $(TEMP)\lev_comp $(DAT)\gehennom.des
  962.     $(CP) asmodeus.lev $(GAMEDIR)
  963.     $(CP) baalz.lev $(GAMEDIR)
  964.     $(CP) juiblex.lev $(GAMEDIR)
  965.     $(CP) orcus.lev $(GAMEDIR)
  966.     $(CP) sanctum.lev $(GAMEDIR)
  967.     $(CP) valley.lev $(GAMEDIR)
  968.     $(RM) asmodeus.lev
  969.     $(RM) baalz.lev
  970.     $(RM) juiblex.lev
  971.     $(RM) orcus.lev
  972.     $(RM) sanctum.lev
  973.     $(RM) valley.lev
  974.  
  975. $(GAMEDIR)\wizard1.lev : $(DAT)\yendor.des $(TEMP)\lev_comp.exe
  976.     $(TEMP)\lev_comp $(DAT)\yendor.des
  977.     $(CP) wizard?.lev $(GAMEDIR)
  978.     $(CP) fakewiz?.lev $(GAMEDIR)
  979.     $(RM) wizard?.lev
  980.     $(RM) fakewiz?.lev
  981.  
  982. #    Quest dungeons
  983.  
  984. $(AFILES) : $(DAT)\Arch.des $(TEMP)\lev_comp.exe
  985.     $(MAKEB) QQ=A QF=Arch do_quest
  986. $(BFILES) : $(DAT)\Barb.des $(TEMP)\lev_comp.exe
  987.     $(MAKEB) QQ=B QF=Barb do_quest
  988. $(CFILES) : $(DAT)\Caveman.des $(TEMP)\lev_comp.exe
  989.     $(MAKEB) QQ=C QF=Caveman do_quest
  990. $(EFILES) : $(DAT)\Elf.des $(TEMP)\lev_comp.exe
  991.     $(MAKEB) QQ=E QF=Elf do_quest
  992. $(HFILES) : $(DAT)\Healer.des $(TEMP)\lev_comp.exe
  993.     $(MAKEB) QQ=H QF=Healer do_quest
  994. $(KFILES) : $(DAT)\Knight.des $(TEMP)\lev_comp.exe
  995.     $(MAKEB) QQ=K QF=Knight do_quest
  996. $(PFILES) : $(DAT)\Priest.des $(TEMP)\lev_comp.exe
  997.     $(MAKEB) QQ=P QF=Priest do_quest
  998. $(RFILES) : $(DAT)\Rogue.des $(TEMP)\lev_comp.exe
  999.     $(MAKEB) QQ=R QF=Rogue do_quest
  1000. $(SFILES) : $(DAT)\Samurai.des $(TEMP)\lev_comp.exe
  1001.     $(MAKEB) QQ=S QF=Samurai do_quest
  1002. $(TFILES) : $(DAT)\Tourist.des $(TEMP)\lev_comp.exe
  1003.     $(MAKEB) QQ=T QF=Tourist do_quest
  1004. $(VFILES) : $(DAT)\Valkyrie.des $(TEMP)\lev_comp.exe
  1005.     $(MAKEB) QQ=V QF=Valkyrie do_quest
  1006. $(WFILES) : $(DAT)\Wizard.des $(TEMP)\lev_comp.exe
  1007.     $(MAKEB) QQ=W QF=Wizard do_quest
  1008.  
  1009. do_quest :
  1010.     $(TEMP)\lev_comp $(DAT)\$(QF).des
  1011.     $(CP) $(QQ)-goal.lev $(GAMEDIR)
  1012.     $(CP) $(QQ)-fill?.lev $(GAMEDIR)
  1013.     $(CP) $(QQ)-locate.lev $(GAMEDIR)
  1014.     $(CP) $(QQ)-start.lev $(GAMEDIR)
  1015.     $(RM) $(QQ)-goal.lev
  1016.     $(RM) $(QQ)-fill?.lev
  1017.     $(RM) $(QQ)-locate.lev
  1018.     $(RM) $(QQ)-start.lev
  1019.  
  1020. #
  1021. #    NetHack icon for Presentation Manager.
  1022. #
  1023.  
  1024. $(GAMEDIR)\$(GAME).ico : $(SYS)\nhpmico.uu
  1025.     $(MAKEB) do_icon
  1026.  
  1027. icon_msg :
  1028.     $(ECHO) Icon file not extracted.  Extract manually if required.
  1029.  
  1030. icon_act :
  1031.     $(UUDECODE) $(SYS)\nhpmico.uu
  1032.     $(CP) nethack.ico $(GAMEDIR)\$(GAME).ico
  1033.     $(RM) nethack.ico
  1034.  
  1035. #
  1036. #    NetHack command file to use with Presentation Manager.
  1037. #
  1038.  
  1039. $(GAMEDIR)\$(GAME).cmd :
  1040.     $(MAKEB) CMDF=$@ do_cmd
  1041.  
  1042. cmd_msg :
  1043.     $(ECHO) Command file not created.  Create manually if required.
  1044.  
  1045. cmd_act :
  1046.     $(ECHO) @echo off> $(CMDF)
  1047.     $(ECHO) REM Command file for starting nethack.exe from PM/WPS Desktop>> $(CMDF)
  1048.     $(ECHO) $(GAME).exe $(P)1 $(P)2 $(P)3 $(P)4 $(P)5 $(P)6 $(P)7>> $(CMDF)
  1049.     $(ECHO) pause>> $(CMDF)
  1050.  
  1051. #
  1052. #    NetHack configuration file.  Will not overwrite an existing file.
  1053. #
  1054.  
  1055. $(GAMEDIR)\nethack.cnf :
  1056.     $(CP) $(SSYS)\nethack.cnf $(GAMEDIR)
  1057.  
  1058. #
  1059. #    Documentation.
  1060. #
  1061.  
  1062. $(TEMP)\$(GUIDEBOO).dvi : $(DOC)\$(GUIDEBOO).tex
  1063.     $(LATEX) $(DOC)\$(GUIDEBOO).tex
  1064.     $(CP) $(GUIDEBOO).dvi $(TEMP)
  1065.     $(CP) $(GUIDEBOO).aux $(TEMP)
  1066.     $(CP) $(GUIDEBOO).log $(TEMP)
  1067.     $(RM) $(GUIDEBOO).dvi
  1068.     $(RM) $(GUIDEBOO).aux
  1069.     $(RM) $(GUIDEBOO).log
  1070.  
  1071. #
  1072. #    Housekeeping.
  1073. #
  1074.  
  1075. clean :
  1076.     -$(RM) $(OBJ)\*.o
  1077.  
  1078. spotless : clean
  1079.     -$(RM) $(INCL)\date.h
  1080.     -$(RM) $(INCL)\onames.h
  1081.     -$(RM) $(INCL)\pm.h
  1082.     -$(RM) $(INCL)\vis_tab.h
  1083.     -$(RM) vis_tab.c
  1084.     -$(RM) monstr.c
  1085.     -$(RM) *.lev
  1086.     -$(RM) nethack.ico
  1087.     -$(RM) $(TEMP)\makedefs.exe
  1088.     -$(RM) $(TEMP)\lev_comp.exe
  1089.     -$(RM) $(TEMP)\dgn_comp.exe
  1090.     -$(RM) $(TEMP)\*.rsp
  1091.     -$(RM) $(TEMP)\*.def
  1092.     -$(RM) $(TEMP)\*.map
  1093.     -$(RM) $(TEMP)\$(GUIDEBOO).dvi
  1094.     -$(RM) $(TEMP)\$(GUIDEBOO).aux
  1095.     -$(RM) $(TEMP)\$(GUIDEBOO).log
  1096.  
  1097. #
  1098. #    Main source.
  1099. #
  1100. #    Default rules are sooo difficult for so many make
  1101. #    programs that we do this the most straightforward way.
  1102. #
  1103.  
  1104. $(OBJ)\allmain.o  : $(SRC)\$(CB) $(HACK_H)
  1105.     $(SRCCC)
  1106. $(OBJ)\alloc.o    : $(SRC)\$(CB) $(CONFIG_H)
  1107.     $(SRCCC)
  1108. $(OBJ)\apply.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h
  1109.     $(SRCCC)
  1110. $(OBJ)\artifact.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\artilist.h
  1111.     $(SRCCC)
  1112. $(OBJ)\attrib.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
  1113.     $(SRCCC)
  1114. $(OBJ)\ball.o     : $(SRC)\$(CB) $(HACK_H)
  1115.     $(SRCCC)
  1116. $(OBJ)\bones.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
  1117.     $(SRCCC)
  1118. $(OBJ)\botl.o     : $(SRC)\$(CB) $(HACK_H)
  1119.     $(SRCCC)
  1120. $(OBJ)\cmd.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\func_tab.h
  1121.     $(SRCCC)
  1122. $(OBJ)\dbridge.o  : $(SRC)\$(CB) $(HACK_H)
  1123.     $(SRCCC)
  1124. $(OBJ)\decl.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\quest.h
  1125.     $(SRCCC)
  1126. $(OBJ)\detect.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
  1127.     $(SRCCC)
  1128. $(OBJ)\display.o  : $(SRC)\$(CB) $(HACK_H)
  1129.     $(SRCCC)
  1130. $(OBJ)\do.o       : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
  1131.     $(SRCCC)
  1132. $(OBJ)\do_name.o  : $(SRC)\$(CB) $(HACK_H)
  1133.     $(SRCCC)
  1134. $(OBJ)\do_wear.o  : $(SRC)\$(CB) $(HACK_H)
  1135.     $(SRCCC)
  1136. $(OBJ)\dog.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h
  1137.     $(SRCCC)
  1138. $(OBJ)\dogmove.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
  1139.     $(SRCCC)
  1140. $(OBJ)\dokick.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
  1141.     $(SRCCC)
  1142. $(OBJ)\dothrow.o  : $(SRC)\$(CB) $(HACK_H)
  1143.     $(SRCCC)
  1144. $(OBJ)\drawing.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\termcap.h
  1145.     $(SRCCC)
  1146. $(OBJ)\dungeon.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\dgn_file.h
  1147.     $(SRCCC)
  1148. $(OBJ)\eat.o      : $(SRC)\$(CB) $(HACK_H)
  1149.     $(SRCCC)
  1150. $(OBJ)\end.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
  1151.     $(SRCCC)
  1152. $(OBJ)\engrave.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
  1153.     $(SRCCC)
  1154. $(OBJ)\exper.o    : $(SRC)\$(CB) $(HACK_H)
  1155.     $(SRCCC)
  1156. $(OBJ)\explode.o  : $(SRC)\$(CB) $(HACK_H)
  1157.     $(SRCCC)
  1158. $(OBJ)\extralev.o : $(SRC)\$(CB) $(HACK_H)
  1159.     $(SRCCC)
  1160. $(OBJ)\files.o    : $(SRC)\$(CB) $(HACK_H)
  1161.     $(SRCCC)
  1162. $(OBJ)\fountain.o : $(SRC)\$(CB) $(HACK_H)
  1163.     $(SRCCC)
  1164. $(OBJ)\hack.o     : $(SRC)\$(CB) $(HACK_H)
  1165.     $(SRCCC)
  1166. $(OBJ)\hacklib.o  : $(SRC)\$(CB) $(HACK_H)
  1167.     $(SRCCC)
  1168. $(OBJ)\invent.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
  1169.     $(SRCCC)
  1170. $(OBJ)\lock.o     : $(SRC)\$(CB) $(HACK_H)
  1171.     $(SRCCC)
  1172. $(OBJ)\makemon.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h $(INCL)\emin.h
  1173.     $(SRCCC)
  1174. $(OBJ)\mail.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\mail.h
  1175.     $(SRCCC)
  1176. $(OBJ)\mcastu.o   : $(SRC)\$(CB) $(HACK_H)
  1177.     $(SRCCC)
  1178. $(OBJ)\mhitm.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
  1179.     $(SRCCC)
  1180. $(OBJ)\mhitu.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
  1181.     $(SRCCC)
  1182. $(OBJ)\minion.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\emin.h $(INCL)\epri.h
  1183.     $(SRCCC)
  1184. $(OBJ)\mklev.o    : $(SRC)\$(CB) $(HACK_H)
  1185.     $(SRCCC)
  1186. $(OBJ)\mkmap.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h
  1187.     $(SRCCC)
  1188. $(OBJ)\mkmaze.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h
  1189.     $(SRCCC)
  1190. $(OBJ)\mkobj.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
  1191.     $(SRCCC)
  1192. $(OBJ)\mkroom.o   : $(SRC)\$(CB) $(HACK_H)
  1193.     $(SRCCC)
  1194. $(OBJ)\mon.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
  1195.     $(SRCCC)
  1196. $(OBJ)\mondata.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
  1197.     $(SRCCC)
  1198. $(OBJ)\monmove.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
  1199.     $(SRCCC)
  1200. $(OBJ)\monst.o    : $(SRC)\$(CB) $(CONFIG_H) $(PERMONST_H) $(INCL)\monsym.h $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h $(INCL)\color.h
  1201.     $(SRCCC)
  1202. $(OBJ)\mplayer.o  : $(SRC)\$(CB) $(HACK_H)
  1203.     $(SRCCC)
  1204. $(OBJ)\mthrowu.o  : $(SRC)\$(CB) $(HACK_H)
  1205.     $(SRCCC)
  1206. $(OBJ)\muse.o     : $(SRC)\$(CB) $(HACK_H)
  1207.     $(SRCCC)
  1208. $(OBJ)\music.o    : $(SRC)\$(CB) $(HACK_H)
  1209.     $(SRCCC)
  1210. $(OBJ)\o_init.o   : $(SRC)\$(CB) $(HACK_H)
  1211.     $(SRCCC)
  1212. $(OBJ)\objects.o  : $(SRC)\$(CB) $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h $(INCL)\color.h
  1213.     $(SRCCC)
  1214. $(OBJ)\objnam.o   : $(SRC)\$(CB) $(HACK_H)
  1215.     $(SRCCC)
  1216. $(OBJ)\options.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\termcap.h
  1217.     $(SRCCC)
  1218. $(OBJ)\pager.o    : $(SRC)\$(CB) $(HACK_H)
  1219.     $(SRCCC)
  1220. $(OBJ)\pickup.o   : $(SRC)\$(CB) $(HACK_H)
  1221.     $(SRCCC)
  1222. $(OBJ)\pline.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h
  1223.     $(SRCCC)
  1224. $(OBJ)\polyself.o : $(SRC)\$(CB) $(HACK_H)
  1225.     $(SRCCC)
  1226. $(OBJ)\potion.o   : $(SRC)\$(CB) $(HACK_H)
  1227.     $(SRCCC)
  1228. $(OBJ)\pray.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h
  1229.     $(SRCCC)
  1230. $(OBJ)\priest.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h $(INCL)\emin.h
  1231.     $(SRCCC)
  1232. $(OBJ)\quest.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\quest.h $(INCL)\qtext.h
  1233.     $(SRCCC)
  1234. $(OBJ)\questpgr.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\qtext.h
  1235.     $(SRCCC)
  1236. $(OBJ)\read.o     : $(SRC)\$(CB) $(HACK_H)
  1237.     $(SRCCC)
  1238. $(OBJ)\rect.o     : $(SRC)\$(CB) $(HACK_H)
  1239.     $(SRCCC)
  1240. $(OBJ)\restore.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\termcap.h $(INCL)\quest.h
  1241.     $(SRCCC)
  1242. $(OBJ)\rip.o      : $(SRC)\$(CB) $(HACK_H)
  1243.     $(SRCCC)
  1244. $(OBJ)\rnd.o      : $(SRC)\$(CB) $(HACK_H)
  1245.     $(SRCCC)
  1246. $(OBJ)\rumors.o   : $(SRC)\$(CB) $(HACK_H)
  1247.     $(SRCCC)
  1248. $(OBJ)\save.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\quest.h
  1249.     $(SRCCC)
  1250. $(OBJ)\shk.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
  1251.     $(SRCCC)
  1252. $(OBJ)\shknam.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
  1253.     $(SRCCC)
  1254. $(OBJ)\sit.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
  1255.     $(SRCCC)
  1256. $(OBJ)\sounds.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
  1257.     $(SRCCC)
  1258. $(OBJ)\sp_lev.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\rect.h
  1259.     $(SRCCC)
  1260. $(OBJ)\spell.o    : $(SRC)\$(CB) $(HACK_H)
  1261.     $(SRCCC)
  1262. $(OBJ)\steal.o    : $(SRC)\$(CB) $(HACK_H)
  1263.     $(SRCCC)
  1264. $(OBJ)\timeout.o  : $(SRC)\$(CB) $(HACK_H)
  1265.     $(SRCCC)
  1266. $(OBJ)\topten.o   : $(SRC)\$(CB) $(HACK_H)
  1267.     $(SRCCC)
  1268. $(OBJ)\track.o    : $(SRC)\$(CB) $(HACK_H)
  1269.     $(SRCCC)
  1270. $(OBJ)\trap.o     : $(SRC)\$(CB) $(HACK_H)
  1271.     $(SRCCC)
  1272. $(OBJ)\u_init.o   : $(SRC)\$(CB) $(HACK_H)
  1273.     $(SRCCC)
  1274. $(OBJ)\uhitm.o    : $(SRC)\$(CB) $(HACK_H)
  1275.     $(SRCCC)
  1276. $(OBJ)\vault.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\vault.h
  1277.     $(SRCCC)
  1278. $(OBJ)\version.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\date.h $(INCL)\$(PATCHLEV).h
  1279.     $(SRCCC)
  1280. $(OBJ)\vision.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\vis_tab.h
  1281.     $(SRCCC)
  1282. $(OBJ)\weapon.o   : $(SRC)\$(CB) $(HACK_H)
  1283.     $(SRCCC)
  1284. $(OBJ)\were.o     : $(SRC)\$(CB) $(HACK_H)
  1285.     $(SRCCC)
  1286. $(OBJ)\wield.o    : $(SRC)\$(CB) $(HACK_H)
  1287.     $(SRCCC)
  1288. $(OBJ)\windows.o  : $(SRC)\$(CB) $(HACK_H)
  1289.     $(SRCCC)
  1290. $(OBJ)\wizard.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\qtext.h
  1291.     $(SRCCC)
  1292. $(OBJ)\worm.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
  1293.     $(SRCCC)
  1294. $(OBJ)\worn.o     : $(SRC)\$(CB) $(HACK_H)
  1295.     $(SRCCC)
  1296. $(OBJ)\write.o    : $(SRC)\$(CB) $(HACK_H)
  1297.     $(SRCCC)
  1298. $(OBJ)\zap.o      : $(SRC)\$(CB) $(HACK_H)
  1299.     $(SRCCC)
  1300.