1# SCCS Id: @(#)template.mak	3.4	1996/10/25
2# Copyright (c) NetHack PC Development Team 1996
3#
4?BEGIN?
5?SCCS?
6?MSC?
7# PC NetHack 3.4 Makefile for Microsoft(tm) "C" >= 7.0 and MSVC >= 1.0
8?ENDMSC?
9?BC?
10# PC NetHack 3.4 Makefile for Borland C++ 3.1.
11?ENDBC?
12#
13# Nota Bene:	Before you get to here you should have already read
14# 		the Install.dos file located in the sys/msdos directory.
15?BC?
16#		Additionally, you should run this makefile with the -N
17#		Microsoft Compatibility option.
18#
19# This Makefile is for use with Borland C++ version 3.1.
20#
21# This Makefile is specific to Borland's MAKE which is supplied with the
22# compiler.  It supports only one overlay management facility - VROOMM.
23# (This Makefile won't work with make45l or NDMAKE)
24?ENDBC?
25?MSC?
26#
27# This Makefile is for use with Microsoft C version 7 and Microsoft Visual C++
28# Professional Edition (MSVC) version 1.0 or greater.
29#
30# This Makefile is specific to Microsoft's NMAKE which is supplied with the
31# more recent Microsoft C compilers.
32# It supports only one overlay management facility - MOVE.
33# (This Makefile won't work with make45l or NDMAKE)
34#
35#	In addition to your C compiler,
36#
37#	if you want to change		you will need a
38#	files with suffix		workalike for
39#	       .y			    yacc   (such as bison or byacc)
40#	       .l			    lex    (such as flex)
41?ENDMSC?
42
43#
44# Game Installation Variables.
45# NOTE: Make sure GAMEDIR exists before nmake is started.
46#
47
48GAME	= NetHack
49GAMEDIR = c:\games\nethack
50
51#
52#
53# Directories
54#
55
56DAT	= ..\dat
57DOC	= ..\doc
58INCL	= ..\include
59SRC	= ..\src
60OBJ	= o
61MSYS	= ..\sys\msdos
62SYS	= ..\sys\share
63UTIL	= ..\util
64WTTY	= ..\win\tty
65WSHR	= ..\win\share
66
67
68#
69# Compiler File Info.
70# ($(MAKE) macro is often predefined, so we use $(MAKEBIN) instead.)
71#
72
73?MSC?
74CC	 = cl		# Compiler
75LINK	 = link		# Linker
76ASM	 = masm		# Assembler (not currently needed for MSC 7 and > )
77MAKEBIN  = nmake
78UUDECODE = uudecode	# Unix style uudecoder
79?ENDMSC?
80?BC?
81CC	 = bcc		# Compiler
82LINK	 = tlink	# Linker
83ASM	 = tasm		# Assembler (not currently needed for BC)
84MAKEBIN  = make
85UUDECODE = uudecode	# Unix style uudecoder
86
87#BCTOP	 = c:\borlandc	# main Borland C++ directory
88BCTOP	 = c:\bc31
89?ENDBC?
90
91#
92# Yacc/Lex ... if you got 'em.
93#
94# If you have yacc and lex programs (or work-alike such as bison
95# and flex), comment out the upper two lines below, and uncomment
96# the lower two.
97?BC?
98#
99# On Borland C++, the newest versions of flex and bison provide
100# problems when run from MAKE.
101?ENDBC?
102#
103
104DO_YACC = YACC_MSG
105DO_LEX  = LEX_MSG
106#DO_YACC  = YACC_ACT
107#DO_LEX   = LEX_ACT
108
109#
110# - Specify your yacc and lex programs (or work-alikes for each) here.
111#
112
113YACC	= bison -y
114#YACC   = yacc
115#YACC   = byacc
116
117LEX     = flex
118#LEX    = lex
119
120#
121# - Specify your flex skeleton file (if needed).
122#
123FLEXSKEL =
124#FLEXSKEL = -Sc:\tools16\flex.ske
125
126#
127# - Your yacc (or work-alike) output files
128#
129YTABC	= y_tab.c
130YTABH	= y_tab.h
131#YTABC  = ytab.c
132#YTABH  = ytab.h
133
134#
135# - Your lex (or work-alike) output files
136#
137LEXYYC	= lexyy.c
138#LEXYYC	= lex.yy.c
139
140#
141# Optional high-quality BSD random number generation routines
142# (see pcconf.h). Set to nothing if not used.
143#
144
145RANDOM	= $(OBJ)\random.o
146#RANDOM	=
147
148#
149# If TERMLIB is #defined in the source (in include\pcconf.h),
150# comment out the upper line and uncomment the lower.  Make sure
151# that TERMLIB contains the full pathname to the termcap library.
152
153TERMLIB =
154#TERMLIB = $(SYS)\termcap.lib
155
156#
157# MEMORY USAGE AND OVERLAYING
158#
159# Overlay Schema 1
160#
161#   - Minimal extended memory available, lots of 640K base RAM free
162#     Minimize overlay turns. Requires that a minimum of
163?MSC?
164#     560K RAM be free as follows:
165#     430K  Executable load requirement
166#      60K  Overlay buffer
167#      70K  for malloc() calls
168#     560K  Total memory requirement
169?ENDMSC?
170?BC?
171#     607K RAM be free as follows:
172#     462K  Executable load requirement
173#     115K  for malloc() calls
174#      30K  Overlay buffer
175#     607K  Total memory requirement
176?ENDBC?
177#
178# Overlay Schema 2
179#
180#   - Favor small load size, requires extended memory for bearable performance.
181#     If you have very little base 640K RAM available, but lots of extended
182#     memory for caching overlays, you might try this. (eg. A machine with
183#     lots of TSR's or network drivers).  Do not try to set SCHEMA = 2
184#     without a disk cache and extended memory.
185?BC?
186#     381K  Executable load requirement
187#     115K  for malloc() calls
188#      30K  Overlay buffer
189#     526K  Total memory requirement
190?ENDBC?
191?MSC?
192#     360K  Executable load requirement
193#      60K  Overlay buffer
194#      70K  for malloc() calls
195#     419K  Total memory requirement
196#
197# Overlay Schema 3
198#
199#   - Minimal extended memory available, lots of 640K base RAM free
200#     Similar to schema1, but the overlay buffer is twice as large, so
201#     in theory more overlays can be resident at the same time. The cost is
202#     that the base memory requirement goes up considerably.
203#     This requires that you obtain the moveinit.c and moveapi.h files from
204#     your Microsoft C source/move directory, and place them into the src
205#     directory.  Then apply the patch moveinit.pat file found in sys/msdos.
206#     Requirements:
207#     360K  Executable load requirement
208#      95K  Overlay buffer
209#      70K  for malloc() calls
210#     525K  Total memory requirement
211?ENDMSC?
212#
213?BC?
214# On Borland C++, you have to make a full rebuild of all object modules each
215# time you change schemas.
216#
217?ENDBC?
218
219SCHEMA	= 1
220
221#
222# OPTIONAL TILE SUPPORT.
223#
224#	This release of NetHack allows you to build a version of NetHack
225#	that will draw 16x16 color tiles on the display to represent
226#	NetHack maps, objects, monsters, etc. on machines with appropriate
227#	display hardware.  Currently the only supported video hardware is
228#	VGA.
229#
230#	Note:  You can build NetHack with tile support and then choose
231#	whether to use it or not at runtime via the defaults.nh file option
232#	"video".
233#
234
235TILESUPPORT = Y
236
237#
238#  C COMPILER AND LINKER SETTINGS
239#
240#   For debugging ability, comment out the upper three
241#   macros and uncomment the lower three.  You can also
242#   uncomment only either LDFLAGSU or LDFLAGSN if you
243#   want to include debug information only in the utilities
244#   or only in the game file.
245?BC?
246
247#   On Borland C++, you cannot include debug information for
248#   all the object modules because the linker cannot handle
249#   it.
250?ENDBC?
251
252#CDFLAGS  =
253?MSC?
254#LDFLAGSN =
255?ENDMSC?
256?BC?
257LDFLAGSN  =
258?ENDBC?
259#LDFLAGSU =
260
261?MSC?
262CDFLAGS   = /Zi			# use debug info (compiler)
263LDFLAGSN  = /CO			# use debug info (linker - game)
264LDFLAGSU  = /CO			# use debug info (linker - utilities)
265?ENDMSC?
266?BC?
267CDFLAGS	  = -v -vi		# use debug info (compiler)
268#LDFLAGSN = /v			# use debug info (linker - game)
269LDFLAGSU  = /v			# use debug info (linker - utilities)
270?ENDBC?
271
272#
273?MSC?
274# - Force a change in the C warning level for all builds.
275#   (Its W0 setting in the CL environment variable will take
276#   precedence if left blank here).
277?ENDMSC?
278?BC?
279# - Don't warn about unreachable code because flex generates a whole bunch
280#   of unreachable code warnings, which stops the compile process.
281?ENDBC?
282#
283
284?MSC?
285CW =
286#CW =/W3
287?ENDMSC?
288?BC?
289CW = -w-rch
290?ENDBC?
291
292#
293#   Select whether to use pre-compiled headers or not.
294#   Set PRECOMPHEAD to Y to use pre-compiled headers, set it to anything
295#   else and pre-compiled headers will not be used.
296#   (Pre-compiled headers speed up compiles, but require a bit more
297#   disk space during the build.  The pre-compiled headers can be deleted
298#   afterwards via DEL *.PCH if desired).
299#
300
301PRECOMPHEAD = N
302
303#
304#   C Compiler Flags
305#
306?MSC?
307# Note:
308#
309#    CL environment variable should already be set to:
310#    CL= /AL /G2 /Oo /Gs /Gt16 /Zp1 /W0 /I..\include /nologo /DMOVERLAY
311#
312?ENDMSC?
313
314?MSC?
315CFLAGS = /c
316?ENDMSC?
317?BC?
318CFLAGS = -c
319?ENDBC?
320
321#  Uncomment the line below if you want to store all the level files,
322#  help files, etc. in a single library file (recommended).
323
324USE_DLB = Y
325
326#
327########################################################################
328########################################################################
329#
330#  Nothing below here should have to be changed.
331#
332########################################################################
333########################################################################
334#
335#  Warning:
336#
337#  Changing anything below here means that you should be *very*
338#  familiar with your compiler's workings, *very* knowledgeable
339#  about the overlay structure and mechanics of NetHack, and *very*
340#  confident in your understanding of Makefiles and Make utilities.
341#
342########################################################################
343#
344# Default Make Procedure
345#
346
347default: $(GAME)
348
349#
350########################################################################
351# Tile preparation
352#
353
354! IF ("$(TILESUPPORT)"=="Y")
355
356TILEGAME  = $(OBJ)\tile.o	$(OBJ)\pctiles.0	$(OBJ)\pctiles.b
357
358#
359#   -  VGA Tile Support, uncomment these three lines.
360#
361
362TILEVGA    = $(OBJ)\vidvga.0 $(OBJ)\vidvga.1 $(OBJ)\vidvga.2 $(OBJ)\vidvga.b
363PLANAR_TIB = NetHack1.tib
364OVERVIEW_TIB = NetHacko.tib
365
366#
367# Leave this line uncommented and unchanged.
368TILEUTIL  =  $(TILEGAME) $(TILEVGA) $(UTIL)\tile2bin.exe $(UTIL)\til2bin2.exe \
369		 $(PLANAR_TIB) $(OVERVIEW_TIB)
370
371! ENDIF
372
373! IF ("$(USE_DLB)"=="Y")
374DLB = nhdat
375! ELSE
376DLB =
377! ENDIF
378
379#
380#############################################################################
381#
382# General Overlay Schema Settings
383#
384
385?MSC?
386LNKOPT  = schema$(SCHEMA).def
387?ENDMSC?
388?BC?
389!include schema$(SCHEMA).bc
390OVLINIT =$(OBJ)\ovlinit.o
391?ENDBC?
392
393?MSC?
394#
395# - Specific Overlay Schema Settings
396#
397
398! IF ($(SCHEMA)==1)
399INTOVL = /DYNAMIC:1250 /NOE
400OVLINIT =
401! ENDIF
402
403! IF ($(SCHEMA)==2)
404INTOVL = /DYNAMIC:1380	/NOE
405OVLINIT =
406! ENDIF
407
408! IF ($(SCHEMA)==3)
409INTOVL = /DYNAMIC:1170
410OVLINIT = $(OBJ)\moveinit.o $(OBJ)\ovlinit.o
411! ENDIF
412?ENDMSC?
413
414#
415#############################################################################
416#
417# C Compiler and Linker Setup Options
418# (To Maintainer; modify only if absolutely necessary)
419#
420
421?BC?
422BCINCL	 = $(BCTOP)\include	# include directory for main BC headers
423BCLIB	 = $(BCTOP)\lib		# library directory for main BC libraries
424BCCFG	 = nethack.cfg		# name of the nethack configuration file
425?ENDBC?
426
427#
428# Model
429#
430
431?MSC?
432MODEL	 = L
433?ENDMSC?
434?BC?
435MODEL	 = h
436?ENDBC?
437
438#
439# - Optional C library specifier for those with non-standard
440#   libraries or a multiple-target library setup.
441#
442
443CLIB    =
444?MSC?
445#CLIB    = llibcer /nod
446?ENDMSC?
447
448?BC?
449#
450# Borland C++ libraries
451#
452
453BCOVL	= $(BCLIB)\OVERLAY
454BCMDL	= $(BCLIB)\C$(MODEL)
455
456?ENDBC?
457#
458# Compiler Options
459#
460
461?MSC?
462CNOLNK	= /c			# just generate .OBJ
463CPCHUSE	= /YuHACK.H		# use precompiled headers
464CPCHGEN	= /YcHACK.H		# generate precompiled headers
465CPCHNAM	= /Fp			# set the name of the precompiled header file
466CPCHEXT = .PCH			# precompiled header extension
467CDEFINE	= /D			# define a macro
468CCSNAM	= /NT			# set the code segment name
469COBJNAM	= /Fo			# name the .OBJ file
470CNOOPT  = /f- /Od		# disable optimizations (must be first in line)
471				# /f- = don't use the "fast" compiler,its buggy
472?ENDMSC?
473?MSCMACRO:CSNAMOA= ?
474?MSCMACRO:CSNAMOB=$(CCSNAM)$(@F) ?
475?MSCMACRO:CSNAM0=$(CCSNAM)$(@F) ?
476?MSCMACRO:CSNAM1=$(CCSNAM)$(@F) ?
477?MSCMACRO:CSNAM2=$(CCSNAM)$(@F) ?
478?MSCMACRO:CSNAM3=$(CCSNAM)$(@F) ?
479?MSCMACRO:CSNAMB=$(CCSNAM)$(@F) ?
480?BC?
481CNOLNK	= -c			# just generate .OBJ
482CPCHUSE	= -Hu			# use precompiled headers
483CPCHGEN	= -H			# generate precompiled headers
484CPCHNAM	= -H=			# set the name of the precompiled header file
485CPCHEXT = .PCH			# precompiled header extension
486CDEFINE	= -D			# define a macro
487CSTKSZ	= -DSTKSIZ=		# set stack size
488CCSNAM	= -zC			# set the code segment name
489COBJNAM	= -o			# name the .OBJ file
490?ENDBC?
491?BCMACRO:CSNAMOA=$$($(@B)_o) ?
492?BCMACRO:CSNAMOB=$$($(@B)_o) ?
493?BCMACRO:CSNAM0=$$($(@B)_0) ?
494?BCMACRO:CSNAM1=$$($(@B)_1) ?
495?BCMACRO:CSNAM2=$$($(@B)_2) ?
496?BCMACRO:CSNAM3=$$($(@B)_3) ?
497?BCMACRO:CSNAMB=$$($(@B)_b) ?
498
499#
500# Linker Options
501#
502
503?MSC?
504LWCASE	= /NOI			# treat case as significant
505LMAP	= /MAP			# create map file
506LSTKSZ	= /ST:			# set stack size
507LMAXSEG	= /SE:400		# maximum number of segments allowed
508LMAXALL	= /CPARM:1		# maximum program memory allocation (?)
509LINFO	= /INFO			# display link information while processing
510?ENDMSC?
511?BC?
512LWCASE	= /c			# treat case as significant
513LMAP	= /m			# create map file
514LINIT	= $(BCLIB)\C0$(MODEL)	# initialization object file
515LOVL	= /oOVLY		# overlay all needed segments
516?ENDBC?
517
518#
519# Stack Sizes
520#
521
522STKSUTL	= 4096			# Utilities Stack Size
523STKSNRM = 5120			# Normal Stack Size
524
525?MSC?
526LUSTACK	= $(LSTKSZ)$(STKSUTL)	# Utilities Stack Set for Linker
527LNSTACK	= $(LSTKSZ)$(STKSNRM)	# Normal Stack Set for Linker
528?ENDMSC?
529?BC?
530CUSTACK	= $(CSTKSZ)$(STKSUTL)	# Utilities Stack Set for Compiler
531CNSTACK	= $(CSTKSZ)$(STKSNRM)	# Normal Stack Set for Compiler
532?ENDBC?
533
534
535#
536########################################################################
537# DLB preparation
538#
539
540! IF ("$(USE_DLB)"=="Y")
541DLBFLG = $(CDEFINE)DLB
542! ELSE
543DLBFLG =
544! ENDIF
545
546#
547########################################################################
548# tile preparation
549#
550
551! IF ("$(TILESUPPORT)"=="Y")
552TILFLG = $(CDEFINE)USE_TILES
553! ELSE
554TILFLG =
555! ENDIF
556
557#############################################################################
558#
559# Overlay switches
560#
561
562COVL0	= $(CDEFINE)OVL0
563COVL1	= $(CDEFINE)OVL1
564COVL2	= $(CDEFINE)OVL2
565COVL3	= $(CDEFINE)OVL3
566COVLB	= $(CDEFINE)OVLB
567
568#
569# Flags
570#
571
572FLAGOPT = $(DLBFLG) $(TILFLG)
573
574#
575# Precompiled Header Section
576#
577
578?BC?
579#common options (placed in $(BCCFG))
580CFLGTOT = $(CDFLAGS) $(CFLAGS) $(FLAGOPT) $(CW)
581#util builds
582CFLAGSU	= +$(BCCFG) $(CUSTACK)
583#normal build, no PCH
584CFLAGSN = +$(BCCFG) $(CNSTACK)
585?ENDBC?
586?MSC?
587#util builds
588CFLAGSU	= $(CDFLAGS) $(CFLAGS) $(CW) $(FLAGOPT) $(CUSTACK)
589#normal build, no PCH
590CFLAGSN = $(CDFLAGS) $(CFLAGS) $(CW) $(FLAGOPT) $(CNSTACK)
591?ENDMSC?
592#no optimizations
593CFLAGNO = $(CNOOPT) $(CFLAGSN)
594
595! IF ("$(PRECOMPHEAD)"!="Y")
596
597CFLAGCO = $(COVLO)
598CFLAGUO = $(COVLO)
599CFLAGC0 = $(COVL0)
600CFLAGU0 = $(COVL0)
601CFLAGC1 = $(COVL1)
602CFLAGU1 = $(COVL1)
603CFLAGC2 = $(COVL2)
604CFLAGU2 = $(COVL2)
605CFLAGC3 = $(COVL3)
606CFLAGU3 = $(COVL3)
607CFLAGCB = $(COVLB)
608CFLAGUB = $(COVLB)
609PCHO =
610PCH0 =
611PCH1 =
612PCH2 =
613PCH3 =
614PCHB =
615
616precomp.msg:
617	@echo Not using precompiled headers...
618
619! ELSE
620
621# .o files
622CFLAGUO	= $(CPCHUSE) $(CPCHNAM)PHO$(CPCHEXT) $(COVLO)
623CFLAGCO	= $(CPCHGEN) $(CPCHNAM)PHO$(CPCHEXT) $(COVLO)
624PCHO = PHO$(CPCHEXT)
625# .0 files
626CFLAGU0	= $(CPCHUSE) $(CPCHNAM)PH0$(CPCHEXT) $(COVL0)
627CFLAGC0	= $(CPCHGEN) $(CPCHNAM)PH0$(CPCHEXT) $(COVL0)
628PCH0 = PH0$(CPCHEXT)
629# .1 files
630CFLAGU1	= $(CPCHUSE) $(CPCHNAM)PH1$(CPCHEXT) $(COVL1)
631CFLAGC1	= $(CPCHGEN) $(CPCHNAM)PH1$(CPCHEXT) $(COVL1)
632PCH1 = PH1$(CPCHEXT)
633# .2 files
634CFLAGU2	= $(CPCHUSE) $(CPCHNAM)PH2$(CPCHEXT) $(COVL2)
635CFLAGC2	= $(CPCHGEN) $(CPCHNAM)PH2$(CPCHEXT) $(COVL2)
636PCH2 = PH2$(CPCHEXT)
637# .3 files
638CFLAGU3	= $(CPCHUSE) $(CPCHNAM)PH3$(CPCHEXT) $(COVL3)
639CFLAGC3	= $(CPCHGEN) $(CPCHNAM)PH3$(CPCHEXT) $(COVL3)
640PCH3 = PH3$(CPCHEXT)
641# .B files
642CFLAGUB	= $(CPCHUSE) $(CPCHNAM)PHB$(CPCHEXT) $(COVLB)
643CFLAGCB	= $(CPCHGEN) $(CPCHNAM)PHB$(CPCHEXT) $(COVLB)
644PCHB = PHB$(CPCHEXT)
645
646precomp.msg:
647	@echo Using precompiled headers...
648
649! ENDIF
650
651
652?BC?
653FLAGCO  = $(CNSTACK) +CFLAGCO.CFG
654FLAGUO  = $(CNSTACK) +CFLAGUO.CFG
655FLAGC0  = $(CNSTACK) +CFLAGC0.CFG
656FLAGU0  = $(CNSTACK) +CFLAGU0.CFG
657FLAGC1  = $(CNSTACK) +CFLAGC1.CFG
658FLAGU1  = $(CNSTACK) +CFLAGU1.CFG
659FLAGC2  = $(CNSTACK) +CFLAGC2.CFG
660FLAGU2  = $(CNSTACK) +CFLAGU2.CFG
661FLAGC3  = $(CNSTACK) +CFLAGC3.CFG
662FLAGU3  = $(CNSTACK) +CFLAGU3.CFG
663FLAGCB  = $(CNSTACK) +CFLAGCB.CFG
664FLAGUB  = $(CNSTACK) +CFLAGUB.CFG
665?ENDBC?
666?MSC?
667FLAGCO  = $(CFLAGSN) $(CFLAGCO)
668FLAGUO  = $(CFLAGSN) $(CFLAGUO)
669FLAGC0  = $(CFLAGSN) $(CFLAGC0)
670FLAGU0  = $(CFLAGSN) $(CFLAGU0)
671FLAGC1  = $(CFLAGSN) $(CFLAGC1)
672FLAGU1  = $(CFLAGSN) $(CFLAGU1)
673FLAGC2  = $(CFLAGSN) $(CFLAGC2)
674FLAGU2  = $(CFLAGSN) $(CFLAGU2)
675FLAGC3  = $(CFLAGSN) $(CFLAGC3)
676FLAGU3  = $(CFLAGSN) $(CFLAGU3)
677FLAGCB  = $(CFLAGSN) $(CFLAGCB)
678FLAGUB  = $(CFLAGSN) $(CFLAGUB)
679?ENDMSC?
680
681# End of Pre-compiled header section
682#===========================================================================
683
684?MSC?
685#
686# Controls whether MOVE tracing is enabled in the executable
687# This should be left commented unless you are tinkering with the
688# overlay structure of NetHack.  The executable runs _very_
689# slowly when the movetr.lib is linked in.
690#
691
692#MOVETR= movetr.lib
693
694# do not change this
695! IF ("$(MOVETR)"!="")
696MVTRCL = $(CDEFINE)MOVE_PROF
697! ELSE
698MVTRCL =
699! ENDIF
700
701?ENDMSC?
702#
703# Linker options for building various things.
704#
705
706LFLAGSU	= $(LDFLAGSU) $(LUSTACK) $(LINIT)
707LFLAGSN	= $(LDFLAGSN) $(LNSTACK) $(LWCASE) $(LMAXSEG) $(INTOVL) $(LMAXALL) \
708	  $(LINFO) $(LINIT) $(LOVL)
709
710#
711# Make Roolz dude.
712# Due to the inadequacy of some makes these must accord with a
713# topological sort of the generated-from relation... output on
714# the left, input on the right. Trust me.
715#
716
717.SUFFIXES:  .exe .0 .1 .2 .3 .B .o .til .uu .c .y .l
718
719#
720# Rules for files in src
721#
722
723
724.c{$(OBJ)}.o:
725	@$(CC) $(FLAGUO) ?[CSNAMOB]$(COBJNAM)$@ $<
726
727{$(SRC)}.c{$(OBJ)}.o:
728	$(CC) $(FLAGUO) ?[CSNAMOB]$(COBJNAM)$@  $<
729
730{$(SRC)}.c{$(OBJ)}.0:
731	$(CC) $(FLAGU0) ?[CSNAM0]$(COBJNAM)$@ $<
732
733{$(SRC)}.c{$(OBJ)}.1:
734	$(CC) $(FLAGU1) ?[CSNAM1]$(COBJNAM)$@ $<
735
736{$(SRC)}.c{$(OBJ)}.2:
737	$(CC) $(FLAGU2) ?[CSNAM2]$(COBJNAM)$@ $<
738
739{$(SRC)}.c{$(OBJ)}.3:
740	$(CC) $(FLAGU3) ?[CSNAM3]$(COBJNAM)$@ $<
741
742{$(SRC)}.c{$(OBJ)}.B:
743	$(CC) $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $<
744
745#
746# Rules for files in sys\share
747#
748
749{$(SYS)}.c{$(OBJ)}.o:
750	$(CC) $(FLAGUO) ?[CSNAMOA]$(COBJNAM)$@  $<
751
752{$(SYS)}.c{$(OBJ)}.0:
753	$(CC) $(FLAGU0) ?[CSNAM0]$(COBJNAM)$@ $<
754
755{$(SYS)}.c{$(OBJ)}.1:
756	$(CC) $(FLAGU1) ?[CSNAM1]$(COBJNAM)$@ $<
757
758{$(SYS)}.c{$(OBJ)}.2:
759	$(CC) $(FLAGU2) ?[CSNAM2]$(COBJNAM)$@ $<
760
761{$(SYS)}.c{$(OBJ)}.3:
762	$(CC) $(FLAGU3) ?[CSNAM3]$(COBJNAM)$@ $<
763
764{$(SYS)}.c{$(OBJ)}.B:
765	$(CC) $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $<
766
767#
768# Rules for files in sys\msdos
769#
770
771{$(MSYS)}.c{$(OBJ)}.o:
772	$(CC) $(FLAGUO) ?[CSNAMOA]$(COBJNAM)$@  $<
773
774{$(MSYS)}.c{$(OBJ)}.0:
775	$(CC) $(FLAGU0) ?[CSNAM0]$(COBJNAM)$@ $<
776
777{$(MSYS)}.c{$(OBJ)}.1:
778	$(CC) $(FLAGU1) ?[CSNAM1]$(COBJNAM)$@ $<
779
780{$(MSYS)}.c{$(OBJ)}.2:
781	$(CC) $(FLAGU2) ?[CSNAM2]$(COBJNAM)$@ $<
782
783{$(MSYS)}.c{$(OBJ)}.3:
784	$(CC) $(FLAGU3) ?[CSNAM3]$(COBJNAM)$@ $<
785
786{$(MSYS)}.c{$(OBJ)}.B:
787	$(CC) $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $<
788
789{$(MSYS)}.h{$(INCL)}.h:
790	@copy $< $@
791
792#
793# Rules for files in util
794#
795
796{$(UTIL)}.c{$(OBJ)}.o:
797	$(CC) $(CFLAGSU) ?[CSNAMOB]$(COBJNAM)$@  $<
798
799#
800# Rules for files in win\share
801#
802
803{$(WSHR)}.c.o:
804	@$(CC) $(FLAGUO) ?[CSNAMOA]$(COBJNAM)$@ $<
805
806{$(WSHR)}.c{$(OBJ)}.o:
807	@$(CC) $(FLAGUO) ?[CSNAMOA]$(COBJNAM)$@ $<
808
809{$(WSHR)}.h{$(INCL)}.h:
810	@copy $< $@
811
812{$(WSHR)}.txt{$(DAT)}.txt:
813	@copy $< $@
814
815#
816# Rules for files in win\tty
817#
818
819{$(WTTY)}.c{$(OBJ)}.o:
820	$(CC) $(FLAGUO) ?[CSNAMOA]$(COBJNAM)$@  $<
821
822{$(WTTY)}.c{$(OBJ)}.0:
823	$(CC) $(FLAGU0) ?[CSNAM0]$(COBJNAM)$@ $<
824
825{$(WTTY)}.c{$(OBJ)}.1:
826	$(CC) $(FLAGU1) ?[CSNAM1]$(COBJNAM)$@ $<
827
828{$(WTTY)}.c{$(OBJ)}.2:
829	$(CC) $(FLAGU2) ?[CSNAM2]$(COBJNAM)$@ $<
830
831{$(WTTY)}.c{$(OBJ)}.3:
832	$(CC) $(FLAGU3) ?[CSNAM3]$(COBJNAM)$@ $<
833
834{$(WTTY)}.c{$(OBJ)}.B:
835	$(CC) $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $<
836
837#
838# NETHACK OBJECTS
839#
840# This section creates shorthand macros for many objects
841# referenced later on in the Makefile.
842#
843
844#
845# Shorten up the location for some files
846#
847
848O  = $(OBJ)\				# comment so \ isn't last char
849
850U  = $(UTIL)\				# comment so \ isn't last char
851
852#
853# Utility Objects.
854#
855
856MAKESRC        = $(U)makedefs.c
857
858SPLEVSRC       = $(U)lev_yacc.c	$(U)lev_$(LEX).c $(U)lev_main.c  $(U)panic.c
859
860DGNCOMPSRC     = $(U)dgn_yacc.c	$(U)dgn_$(LEX).c $(U)dgn_main.c
861
862MAKEOBJS       = $(O)makedefs.o	$(O)monst.o	$(O)objects.o
863
864?LIST:SPLEVOBJS?
865		 $(O)lev_yacc.o	$(O)lev_$(LEX).o $(O)lev_main.o
866		 $(O)alloc.o	$(O)decl.o	$(O)drawing.o
867		 $(O)monst.o	$(O)objects.o	$(O)panic.o	$(O)stubvid.o
868?ENDLIST?
869
870?LIST:DGNCOMPOBJS?
871		 $(O)dgn_yacc.o	$(O)dgn_$(LEX).o $(O)dgn_main.o
872		 $(O)alloc.o	$(O)panic.o
873?ENDLIST?
874
875RECOVOBJS      = $(O)recover.o
876
877?LIST:GIFREADERS?
878		 $(O)gifread.o	$(O)alloc.o	$(O)panic.o
879?ENDLIST?
880
881?LIST:TEXT_IO?
882		 $(O)tiletext.o $(O)tiletxt.o	$(O)drawing.o
883		 $(O)decl.o	$(O)monst.o	$(O)objects.o
884		 $(O)stubvid.o
885?ENDLIST?
886
887PPMWRITERS     = $(O)ppmwrite.o	$(O)alloc.o	$(O)panic.o
888
889?LIST:GIFREAD2?
890		 $(O)gifread2.o	$(O)alloc.o	$(O)panic.o
891?ENDLIST?
892
893?LIST:TEXT_IO2?
894		 $(O)tiletex2.o $(O)tiletxt2.o	$(O)drawing.o
895		 $(O)decl.o	$(O)monst.o	$(O)objects.o
896		 $(O)stubvid.o
897?ENDLIST?
898
899PPMWRIT2       = $(O)ppmwrit2.o $(O)alloc.o	$(O)panic.o
900
901TILEFILES      = $(WSHR)\monsters.txt $(WSHR)\objects.txt $(WSHR)\other.txt
902
903TILEFILES2     = $(WSHR)\monthin.txt $(WSHR)\objthin.txt $(WSHR)\oththin.txt
904
905DLBOBJS        = $(O)dlb_main.o $(O)dlb.o $(O)alloc.o $(O)panic.o
906
907#
908#  Object files for the game itself.
909#
910
911OBJ01 =	$(O)alloc.o	$(RANDOM)	$(O)decl.o     	$(O)objects.o	\
912	$(O)muse.o	$(O)display.o	$(O)vision.o	\
913	$(O)rect.o	$(O)vis_tab.o	$(O)monst.o	$(O)wintty.o	\
914	$(O)files.o	$(O)sys.o	$(O)monstr.o	$(O)minion.o	\
915	$(O)worm.o	$(O)detect.o 	$(O)exper.o	$(O)mplayer.o	\
916	$(O)uhitm.o	$(O)pager.o 	$(O)windows.o	$(O)quest.o	\
917	$(O)questpgr.o 	$(O)write.o	$(O)drawing.o	$(O)dokick.o	\
918	$(O)dothrow.o 	$(O)pickup.o	$(O)pray.o	$(O)spell.o 	\
919	$(O)ball.o	$(O)wield.o	$(O)worn.o	$(O)fountain.o	\
920	$(O)music.o	$(O)rumors.o	$(O)dlb.o	$(O)sit.o 	\
921	$(O)bones.o	$(O)mklev.o	$(O)save.o	$(O)restore.o 	\
922	$(O)mkmaze.o	$(O)mkmap.o	$(O)end.o	$(O)o_init.o	\
923	$(O)options.o	$(O)rip.o       $(O)sound.o	$(O)teleport.o	\
924	$(O)topten.o	$(O)tty.o	$(O)u_init.o	$(O)extralev.o 	\
925	$(O)sp_lev.o	$(O)dig.o	$(O)pckeys.o	$(O)role.o	\
926	$(O)steed.o	$(O)region.o
927
928OVL0 =	$(O)allmain.0	$(O)apply.0	$(O)artifact.0	$(O)attrib.0  \
929	$(O)botl.0	$(O)cmd.0	$(O)dbridge.0	$(O)do.0      \
930	$(O)do_name.0	$(O)do_wear.0	$(O)dogmove.0	$(O)dungeon.0 \
931	$(O)eat.0	$(O)engrave.0	$(O)hacklib.0	$(O)invent.0  \
932	$(O)lock.0	$(O)pcmain.0	$(O)mail.0	$(O)makemon.0 \
933	$(O)mcastu.0	$(O)mhitm.0	$(O)mhitu.0	$(O)mkobj.0   \
934	$(O)mkroom.0	$(O)mon.0	$(O)mondata.0	$(O)monmove.0 \
935	$(O)mthrowu.0	$(O)objnam.0	$(O)polyself.0	$(O)priest.0  \
936	$(O)rnd.0	$(O)shknam.0	$(O)sounds.0	$(O)steal.0   \
937	$(O)timeout.0	$(O)track.0	$(O)trap.0	$(O)vault.0   \
938	$(O)weapon.0	$(O)were.0	$(O)wizard.0	$(O)msdos.0   \
939	$(O)termcap.0	$(O)video.0	$(O)vidtxt.0	$(O)zap.0     \
940	$(O)explode.0	$(O)shk.0
941
942OVL1 =	$(O)allmain.1	$(O)apply.1	$(O)artifact.1	$(O)attrib.1 \
943	$(O)botl.1	$(O)cmd.1	$(O)dbridge.1	$(O)do.1     \
944	$(O)do_wear.1	$(O)dog.1	$(O)dungeon.1	$(O)eat.1    \
945	$(O)engrave.1	$(O)hack.1	$(O)hacklib.1	$(O)invent.1 \
946	$(O)makemon.1	$(O)mhitu.1	$(O)mkobj.1	$(O)mon.1    \
947	$(O)mondata.1	$(O)monmove.1	$(O)mthrowu.1	$(O)objnam.1 \
948	$(O)pcmain.1	$(O)polyself.1	$(O)rnd.1	$(O)shk.1    \
949	$(O)steal.1	$(O)timeout.1	$(O)track.1	$(O)trap.1   \
950	$(O)weapon.1	$(O)getline.1	$(O)termcap.1	$(O)topl.1   \
951	$(O)video.1	$(O)zap.1	$(O)explode.1
952
953OVL2 =	$(O)attrib.2	$(O)do.2	$(O)do_name.2	$(O)do_wear.2 \
954	$(O)dog.2	$(O)engrave.2	$(O)hack.2	$(O)hacklib.2 \
955	$(O)invent.2	$(O)makemon.2	$(O)mon.2	$(O)mondata.2 \
956	$(O)monmove.2	$(O)getline.2	$(O)shk.2	$(O)topl.2    \
957	$(O)trap.2	$(O)zap.2
958
959OVL3 =	$(O)do.3	$(O)hack.3	$(O)invent.3	$(O)light.3   \
960	$(O)shk.3	$(O)trap.3	$(O)zap.3
961
962
963OVLB =	$(O)allmain.B	$(O)apply.B	$(O)artifact.B	$(O)attrib.B	\
964	$(O)botl.B	$(O)cmd.B	$(O)dbridge.B	$(O)do.B	\
965	$(O)do_name.B	$(O)do_wear.B	$(O)dog.B	$(O)dogmove.B	\
966	$(O)eat.B	$(O)engrave.B	$(O)hack.B	$(O)hacklib.B	\
967	$(O)invent.B	$(O)lock.B	$(O)mail.B	$(O)makemon.B	\
968	$(O)mcastu.B	$(O)mhitm.B	$(O)mhitu.B	$(O)mkobj.B	\
969	$(O)mkroom.B	$(O)mon.B	$(O)mondata.B	$(O)monmove.B	\
970	$(O)mthrowu.B	$(O)objnam.B	$(O)pcmain.B	$(O)pline.B	\
971	$(O)polyself.B	$(O)potion.B	$(O)priest.B	$(O)read.B	\
972	$(O)rnd.B	$(O)shk.B	$(O)shknam.B	$(O)sounds.B	\
973	$(O)steal.B	$(O)timeout.B	$(O)track.B	$(O)trap.B	\
974	$(O)vault.B	$(O)weapon.B	$(O)were.B	$(O)wizard.B	\
975	$(O)msdos.B	$(O)pcunix.B	$(O)termcap.B	$(O)topl.B	\
976	$(O)video.B	$(O)vidtxt.B	$(O)zap.B
977
978TILOBJ = $(TILEGAME) $(TILEVGA)
979
980VVOBJ =	$(O)version.o
981
982NVOBJ = $(OBJ01)	$(OVL0)		$(OVL1)		$(OVL2) \
983	$(OVL3) 	$(OVLB)		$(TILOBJ)
984
985ALLOBJ= $(NVOBJ) $(VVOBJ) $(OVLINIT)
986
987#
988# Header objects
989#
990
991# This comment copied from sys/unix/Makefile.src,
992# extern.h is ignored, even though its declared function types may affect the
993# compilation of all the .c files, since extern.h changes every time the
994# type of an external function does, and we would spend all our time recompiling
995# if we did not ignore it.
996#EXTERN_H    = $(INCL)\extern.h
997EXTERN_H    =
998PCCONF_H    = $(INCL)\pcconf.h $(INCL)\micro.h $(INCL)\system.h
999PERMONST_H  = $(INCL)\monattk.h $(INCL)\monflag.h $(INCL)\align.h
1000YOUPROP_H   = $(INCL)\prop.h $(PERMONST_H) $(INCL)\pm.h $(INCL)\youprop.h \
1001	      $(INCL)\mondata.h
1002YOU_H	    = $(INCL)\attrib.h $(INCL)\monst.h $(YOUPROP_H) $(INCL)\align.h
1003DECL_H      = $(INCL)\quest.h $(INCL)\spell.h $(INCL)\color.h \
1004	      $(INCL)\obj.h $(YOU_H) $(INCL)\onames.h $(INCL)\pm.h
1005
1006CONFIG_H    = $(INCL)\tradstdc.h $(INCL)\coord.h $(PCCONF_H) $(INCL)\config.h
1007HACK_H      = $(CONFIG_H) $(INCL)\dungeon.h $(INCL)\align.h $(INCL)\monsym.h \
1008              $(INCL)\mkroom.h $(INCL)\objclass.h $(DECL_H) \
1009	      $(INCL)\timeout.h $(INCL)\trap.h $(INCL)\flag.h $(INCL)\rm.h \
1010	      $(INCL)\vision.h $(INCL)\mondata.h $(INCL)\wintype.h \
1011	      $(INCL)\engrave.h $(INCL)\rect.h $(EXTERN_H) \
1012	      $(INCL)\winprocs.h $(INCL)\trampoli.h $(INCL)\display.h
1013TILE_H      = $(INCL)\tile.h $(INCL)\pctiles.h
1014PCVIDEO_H   = $(INCL)\portio.h $(INCL)\pcvideo.h
1015ALIGN_H     = $(INCL)\align.h
1016ARTIFACT_H  = $(INCL)\artifact.h
1017ARTILIST_H  = $(INCL)\artilist.h
1018COLOR_H     = $(INCL)\color.h
1019DATE_H      = $(INCL)\date.h
1020DGN_FILE_H  = $(INCL)\dgn_file.h
1021DLB_H	    = $(INCL)\dlb.h
1022EMIN_H      = $(INCL)\emin.h
1023EPRI_H      = $(INCL)\epri.h
1024ESHK_H      = $(INCL)\eshk.h
1025EDOG_H      = $(INCL)\edog.h
1026FUNC_TAB_H  = $(INCL)\func_tab.h
1027LEV_H       = $(INCL)\lev.h
1028LEV_COMP_H  = $(INCL)\lev_comp.h
1029MAIL_H      = $(INCL)\mail.h
1030MFNDPOS_H   = $(INCL)\mfndpos.h
1031MONSYM_H    = $(INCL)\monsym.h
1032OBJ_H       = $(INCL)\obj.h
1033OBJCLASS_H  = $(INCL)\objclass.h
1034OBJECTS_H   = $(INCL)\objects.h
1035PROP_H      = $(INCL)\prop.h
1036QTEXT_H     = $(INCL)\qtext.h
1037QUEST_H     = $(INCL)\quest.h
1038SP_LEV_H    = $(INCL)\sp_lev.h
1039TERMCAP_H   = $(INCL)\tcap.h
1040VAULT_H     = $(INCL)\vault.h
1041VIS_TAB_H   = $(INCL)\vis_tab.h
1042WINTTY_H    = $(INCL)\wintty.h
1043
1044#
1045# In the unix distribution this file is patchlevel.h, make it 8.3 here
1046# to avoid an nmake warning under dos.
1047#
1048
1049PATCHLEVEL_H   = $(INCL)\patchlev.h
1050
1051
1052#
1053#  The name of the game.
1054#
1055
1056GAMEFILE = $(GAMEDIR)\$(GAME).exe
1057
1058#
1059# make data.base an 8.3 filename to prevent an nmake warning
1060#
1061
1062DATABASE = $(DAT)\data.bas
1063
1064#######################################################################
1065#
1066#  TARGETS
1067
1068#
1069#  The main target.
1070#
1071
1072$(GAME): obj.tag envchk $(U)utility.tag $(GAMEFILE)
1073	@echo $(GAME) is up to date.
1074
1075#
1076#  Everything
1077#
1078
1079all :	install
1080
1081install: $(GAME) install.tag
1082	@echo Done.
1083
1084
1085install.tag: 	$(DAT)\data	$(DAT)\rumors	$(DAT)\dungeon \
1086	 	$(DAT)\oracles	$(DAT)\quest.dat $(DAT)\sp_lev.tag $(DLB)
1087! IF ("$(USE_DLB)"=="Y")
1088	copy nhdat                $(GAMEDIR)
1089	copy $(DAT)\license       $(GAMEDIR)
1090! ELSE
1091	copy $(DAT)\*.            $(GAMEDIR)
1092	copy $(DAT)\*.dat         $(GAMEDIR)
1093	copy $(DAT)\*.lev         $(GAMEDIR)
1094	copy $(MSYS)\msdoshlp.txt $(GAMEDIR)
1095	if exist $(GAMEDIR)\makefile del $(GAMEDIR)\makefile
1096! ENDIF
1097	copy $(SYS)\termcap       $(GAMEDIR)
1098	if exist $(DOC)\guideb*.txt copy $(DOC)\guideb*.txt  $(GAMEDIR)
1099	if exist $(DOC)\nethack.txt copy $(DOC)\nethack.txt  $(GAMEDIR)\NetHack.txt
1100	if exist $(DOC)\recover.txt copy $(DOC)\recover.txt  $(GAMEDIR)
1101	copy $(SYS)\nethack.cnf   $(GAMEDIR)\defaults.nh
1102	copy $(U)recover.exe  $(GAMEDIR)
1103	if exist *.tib copy *.tib $(GAMEDIR)
1104	echo install done > $@
1105
1106$(DAT)\sp_lev.tag: $(U)utility.tag $(DAT)\bigroom.des  $(DAT)\castle.des \
1107	$(DAT)\endgame.des $(DAT)\gehennom.des $(DAT)\knox.des   \
1108	$(DAT)\medusa.des  $(DAT)\oracle.des   $(DAT)\tower.des  \
1109	$(DAT)\yendor.des  $(DAT)\arch.des     $(DAT)\barb.des   \
1110	$(DAT)\caveman.des $(DAT)\elf.des      $(DAT)\healer.des \
1111	$(DAT)\knight.des  $(DAT)\priest.des   $(DAT)\rogue.des  \
1112	$(DAT)\samurai.des $(DAT)\tourist.des  $(DAT)\valkyrie.des \
1113	$(DAT)\wizard.des
1114	cd $(DAT)
1115	$(U)lev_comp bigroom.des
1116	$(U)lev_comp castle.des
1117	$(U)lev_comp endgame.des
1118	$(U)lev_comp gehennom.des
1119	$(U)lev_comp knox.des
1120	$(U)lev_comp mines.des
1121	$(U)lev_comp medusa.des
1122	$(U)lev_comp oracle.des
1123	$(U)lev_comp tower.des
1124	$(U)lev_comp yendor.des
1125	$(U)lev_comp arch.des
1126	$(U)lev_comp barb.des
1127	$(U)lev_comp caveman.des
1128	$(U)lev_comp elf.des
1129	$(U)lev_comp healer.des
1130	$(U)lev_comp knight.des
1131	$(U)lev_comp priest.des
1132	$(U)lev_comp rogue.des
1133	$(U)lev_comp samurai.des
1134	$(U)lev_comp tourist.des
1135	$(U)lev_comp valkyrie.des
1136	$(U)lev_comp wizard.des
1137	cd $(SRC)
1138	echo sp_levs done > $(DAT)\sp_lev.tag
1139
1140$(U)utility.tag: envchk			$(INCL)\date.h	$(INCL)\onames.h \
1141		$(INCL)\pm.h 		$(SRC)\monstr.c	$(SRC)\vis_tab.c \
1142		$(U)lev_comp.exe	$(VIS_TAB_H) 	$(U)dgn_comp.exe \
1143		$(U)recover.exe		$(TILEUTIL)
1144             @echo utilities made >$@
1145	     @echo utilities made.
1146
1147tileutil: $(U)gif2txt.exe $(U)txt2ppm.exe
1148	@echo Optional tile development utilities are up to date.
1149
1150?MSC?
1151#  The section for linking the NetHack image looks a little strange at
1152#  first, especially if you are used to UNIX makes, or NDMAKE.  It is
1153#  Microsoft nmake specific, and it gets around the problem of the link
1154#  command line being too long for the linker.  An "in-line" linker
1155#  response file is generated temporarily.
1156#
1157#  It takes advantage of the following features of nmake:
1158?ENDMSC?
1159#
1160#  Inline files :
1161#			Specifying the "<<" means to start an inline file.
1162#                 	Another "<<" at the start of a line closes the
1163#                 	inline file.
1164#
1165?MSC?
1166#  Substitution within Macros:
1167#                       $(mymacro:string1=string2) replaces every
1168#                       occurrence of string1 with string2 in the
1169#                       macro mymacro.  Special ascii key codes may be
1170#                       used in the substitution text by preceding it
1171#                       with ^ as we have done below.  Every occurrence
1172#                       of a <tab> in $(ALLOBJ) is replaced by
1173#                       <+><return><tab>.
1174#
1175?ENDMSC?
1176#  DO NOT INDENT THE << below!
1177#
1178
1179?MSC?
1180$(GAMEFILE) :  $(LNKOPT) $(ALLOBJ)
1181?ENDMSC?
1182?BC?
1183$(GAMEFILE) :  $(ALLOBJ)
1184?ENDBC?
1185	@echo Linking....
1186	$(LINK) $(LFLAGSN) @<<$(GAME).lnk
1187?BC?
1188		$(ALLOBJ)
1189?ENDBC?
1190?MSC?
1191		$(ALLOBJ:^	=+^
1192		)
1193?ENDMSC?
1194		$(GAMEFILE)
1195		$(GAME)
1196		$(TERMLIB) $(MOVETR) $(CLIB) $(BCOVL) $(BCMDL)
1197?MSC?
1198		$(LNKOPT);
1199?ENDMSC?
1200<<
1201	@if exist $(GAMEDIR)\$(GAME).bak del $(GAMEDIR)\$(GAME).bak
1202
1203#
1204# Makedefs Stuff
1205#
1206
1207$(U)makedefs.exe:	$(MAKEOBJS)
1208	@$(LINK) $(LFLAGSU) $(MAKEOBJS), $@,, $(CLIB) $(BCMDL);
1209
1210$(O)makedefs.o: $(CONFIG_H)	    $(PERMONST_H)      $(OBJCLASS_H) \
1211		 $(MONSYM_H)    $(QTEXT_H)	$(PATCHLEVEL_H) \
1212		 $(U)makedefs.c
1213	@$(CC) $(CFLAGSU) $(COBJNAM)$@ $(U)makedefs.c
1214
1215#
1216#  date.h should be remade every time any of the source or include
1217#  files is modified.
1218#
1219
1220$(INCL)\date.h : $(U)makedefs.exe
1221	$(U)makedefs -v
1222	@echo A new $@ has been created.
1223
1224$(INCL)\onames.h : $(U)makedefs.exe
1225	$(U)makedefs -o
1226
1227$(INCL)\pm.h : $(U)makedefs.exe
1228	$(U)makedefs -p
1229
1230#$(INCL)\trap.h : $(U)makedefs.exe
1231#	$(U)makedefs -t
1232
1233$(SRC)\monstr.c: $(U)makedefs.exe
1234	$(U)makedefs -m
1235
1236$(INCL)\vis_tab.h: $(U)makedefs.exe
1237	$(U)makedefs -z
1238
1239$(SRC)\vis_tab.c: $(U)makedefs.exe
1240	$(U)makedefs -z
1241
1242#
1243# Level Compiler Stuff
1244#
1245
1246$(U)lev_comp.exe:  $(SPLEVOBJS)
1247	@echo Linking $@...
1248?MSC?
1249	$(LINK) $(LFLAGSU) @<<$(@B).lnk
1250?ENDMSC?
1251?BC?
1252	$(LINK) $(LFLAGSU) @&&!
1253?ENDBC?
1254?LINKLIST:SPLEVOBJS?
1255		$@
1256		$(@B)
1257		$(BCMDL);
1258?MSC?
1259<<
1260?ENDMSC?
1261?BC?
1262!
1263?ENDBC?
1264
1265$(O)lev_yacc.o:  $(HACK_H)   $(SP_LEV_H) $(INCL)\lev_comp.h $(U)lev_yacc.c
1266	@$(CC) $(CFLAGSU) $(COBJNAM)$@ $(U)lev_yacc.c
1267
1268$(O)lev_$(LEX).o:  $(HACK_H)   $(INCL)\lev_comp.h $(SP_LEV_H) \
1269	$(U)lev_$(LEX).c
1270	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(U)lev_$(LEX).c
1271
1272$(O)lev_main.o:	$(U)lev_main.c $(HACK_H)   $(SP_LEV_H)
1273	@$(CC) $(CFLAGSU) $(COBJNAM)$@ $(U)lev_main.c
1274
1275$(U)lev_yacc.c $(INCL)\lev_comp.h : $(U)lev_comp.y
1276!	IF "$(DO_YACC)"=="YACC_ACT"
1277	   $(YACC) -d -l $(U)lev_comp.y
1278	   copy $(YTABC) $(U)lev_yacc.c
1279	   copy $(YTABH) $(INCL)\lev_comp.h
1280	   @del $(YTABC)
1281	   @del $(YTABH)
1282!	ELSE
1283	   @echo.
1284	   @echo $(U)lev_comp.y has changed.
1285	   @echo To update $(U)lev_yacc.c and $(INCL)\lev_comp.h run $(YACC).
1286	   @echo.
1287	   @echo For now, we will copy the prebuilt lev_yacc.c
1288	   @echo from $(SYS) to $(U)lev_yacc.c, and copy the prebuilt
1289	   @echo lev_comp.h from $(SYS) to $(UTIL)\lev_comp.h
1290	   @echo and use those.
1291	   @echo.
1292	   copy $(SYS)\lev_yacc.c $@ >nul
1293	   touch $@
1294	   copy $(SYS)\lev_comp.h $(INCL)\lev_comp.h >nul
1295	   touch $(INCL)\lev_comp.h
1296!	ENDIF
1297
1298$(U)lev_$(LEX).c:  $(U)lev_comp.l
1299!	IF "$(DO_LEX)"=="LEX_ACT"
1300	   $(LEX) $(FLEXSKEL) $(U)lev_comp.l
1301	   copy $(LEXYYC) $@
1302	   @del $(LEXYYC)
1303!	ELSE
1304	   @echo.
1305	   @echo $(U)lev_comp.l has changed. To update $@ run $(LEX).
1306	   @echo.
1307	   @echo For now, we will copy a prebuilt lev_lex.c
1308	   @echo from $(SYS) to $@ and use it.
1309	   @echo.
1310	   copy $(SYS)\lev_lex.c $@ >nul
1311	   touch $@
1312!	ENDIF
1313
1314#
1315# Dungeon Stuff
1316#
1317
1318$(U)dgn_comp.exe: $(DGNCOMPOBJS)
1319    @echo Linking $@...
1320?MSC?
1321	$(LINK) $(LFLAGSU) @<<$(@B).lnk
1322?ENDMSC?
1323?BC?
1324	$(LINK) $(LFLAGSU) @&&!
1325?ENDBC?
1326?LINKLIST:DGNCOMPOBJS?
1327		$@
1328		$(@B)
1329		$(BCMDL);
1330?MSC?
1331<<
1332?ENDMSC?
1333?BC?
1334!
1335?ENDBC?
1336
1337$(O)dgn_yacc.o:	$(HACK_H)   $(DGN_FILE_H) $(INCL)\dgn_comp.h \
1338	$(U)dgn_yacc.c
1339	@$(CC) $(CFLAGSU) $(COBJNAM)$@ $(U)dgn_yacc.c
1340
1341$(O)dgn_$(LEX).o: $(HACK_H)   $(DGN_FILE_H)  $(INCL)\dgn_comp.h \
1342	$(U)dgn_$(LEX).c
1343	@$(CC) $(CFLAGSU) $(COBJNAM)$@ $(U)dgn_$(LEX).c
1344
1345$(O)dgn_main.o:	$(HACK_H) $(U)dgn_main.c
1346	@$(CC) $(CFLAGSU) $(COBJNAM)$@ $(U)dgn_main.c
1347
1348$(U)dgn_yacc.c $(INCL)\dgn_comp.h : $(U)dgn_comp.y
1349!	IF "$(DO_YACC)"=="YACC_ACT"
1350	   $(YACC) -d -l $(U)dgn_comp.y
1351	   copy $(YTABC) $(U)dgn_yacc.c
1352	   copy $(YTABH) $(INCL)\dgn_comp.h
1353	   @del $(YTABC)
1354	   @del $(YTABH)
1355!	ELSE
1356	   @echo.
1357	   @echo $(U)dgn_comp.y has changed. To update $@ and
1358	   @echo $(INCL)\dgn_comp.h run $(YACC).
1359	   @echo.
1360	   @echo For now, we will copy the prebuilt dgn_yacc.c from
1361	   @echo $(SYS) to $(U)dgn_yacc.c, and copy the prebuilt
1362	   @echo dgn_comp.h from $(SYS) to $(INCL)\dgn_comp.h
1363	   @echo and use those.
1364	   @echo.
1365	   copy $(SYS)\dgn_yacc.c $@ >nul
1366	   touch $@
1367	   copy $(SYS)\dgn_comp.h $(INCL)\dgn_comp.h >nul
1368	   touch $(INCL)\dgn_comp.h
1369!	ENDIF
1370
1371$(U)dgn_$(LEX).c:  $(U)dgn_comp.l
1372!	IF "$(DO_LEX)"=="LEX_ACT"
1373	   $(LEX) $(FLEXSKEL)  $(U)dgn_comp.l
1374	   copy $(LEXYYC) $@
1375	   @del $(LEXYYC)
1376!	ELSE
1377	   @echo.
1378	   @echo $(U)dgn_comp.l has changed. To update $@ run $(LEX).
1379	   @echo.
1380	   @echo For now, we will copy a prebuilt dgn_lex.c
1381	   @echo from $(SYS) to $@ and use it.
1382	   @echo.
1383	   copy $(SYS)\dgn_lex.c $@ >nul
1384	   touch $@
1385!	ENDIF
1386
1387
1388obj.tag:
1389	@if not exist $(O)*.* mkdir $(OBJ)
1390	@echo directory $(OBJ) created
1391	@echo directory $(OBJ) created >$@
1392
1393?MSC?
1394#
1395#  The correct switches for the C compiler depend on the CL environment
1396#  variable being set correctly.  This will check that it is.
1397#  The correct setting needs to be:
1398#    CL= /AL /G2 /Oo /Gs /Gt16 /Zp1 /W0 /I..\include /nologo /DMOVERLAY
1399#
1400
1401?ENDMSC?
1402envchk: precomp.msg
1403?MSC?
1404!	IF ("$(CL)"=="")
1405!	   MESSAGE The CL environment variable is not defined!
1406!	   MESSAGE You must CD $(MSYS) and execute the SETUP.BAT procedure
1407!	   MESSAGE ie.        setup MSC
1408!	   MESSAGE
1409!	   ERROR
1410!	ELSE
1411	   @echo CL Environment variable is defined:
1412	   @echo CL=$(CL)
1413!	ENDIF
1414?ENDMSC?
1415?COMMENT?
1416#    CL= /AL /G2 /Oo /Gs /Gt16 /Zp1 /W0 /I..\include /nologo /DMOVERLAY
1417?ENDCOMMENT?
1418?BC?
1419#
1420# Borland Configuration File Section
1421#
1422	@echo Making Borland configuration files...
1423	@echo -Y -O -Z -Oe -Ob -Os -Ff -I$(BCINCL);$(INCL) > $(BCCFG)
1424	@echo -m$(MODEL) -D__IO_H $(CFLGTOT) -DSTRNCMPI >> $(BCCFG)
1425	@type $(BCCFG) > CFLAGCO.CFG
1426	@type $(BCCFG) > CFLAGUO.CFG
1427	@type $(BCCFG) > CFLAGC0.CFG
1428	@type $(BCCFG) > CFLAGU0.CFG
1429	@type $(BCCFG) > CFLAGC1.CFG
1430	@type $(BCCFG) > CFLAGU1.CFG
1431	@type $(BCCFG) > CFLAGC2.CFG
1432	@type $(BCCFG) > CFLAGU2.CFG
1433	@type $(BCCFG) > CFLAGC3.CFG
1434	@type $(BCCFG) > CFLAGU3.CFG
1435	@type $(BCCFG) > CFLAGCB.CFG
1436	@type $(BCCFG) > CFLAGUB.CFG
1437    	@echo -Y $(CFLAGCO) >> CFLAGCO.CFG
1438	@echo -Y $(CFLAGUO) >> CFLAGUO.CFG
1439	@echo -Y $(CFLAGC0) >> CFLAGC0.CFG
1440	@echo -Y $(CFLAGU0) >> CFLAGU0.CFG
1441	@echo -Y $(CFLAGC1) >> CFLAGC1.CFG
1442	@echo -Y $(CFLAGU1) >> CFLAGU1.CFG
1443	@echo -Y $(CFLAGC2) >> CFLAGC2.CFG
1444	@echo -Y $(CFLAGU2) >> CFLAGU2.CFG
1445	@echo -Y $(CFLAGC3) >> CFLAGC3.CFG
1446	@echo -Y $(CFLAGU3) >> CFLAGU3.CFG
1447	@echo -Y $(CFLAGCB) >> CFLAGCB.CFG
1448	@echo -Y $(CFLAGUB) >> CFLAGUB.CFG
1449?ENDBC?
1450!	IF "$(TILEGAME)"==""
1451	   @echo.
1452	   @echo NOTE: This build will NOT include tile support.
1453	   @echo.
1454!	ELSE
1455	   @echo.
1456	   @echo This build includes tile support.
1457	   @echo.
1458!	ENDIF
1459
1460#
1461# SECONDARY TARGETS
1462#
1463
1464#
1465# Header files NOT distributed in ..\include
1466#
1467
1468$(INCL)\tile.h: $(WSHR)\tile.h
1469	copy $(WSHR)\tile.h $@
1470
1471$(INCL)\pctiles.h: $(MSYS)\pctiles.h
1472	copy $(MSYS)\pctiles.h $@
1473
1474$(INCL)\pcvideo.h: $(MSYS)\pcvideo.h
1475	copy $(MSYS)\pcvideo.h $@
1476
1477$(INCL)\portio.h: $(MSYS)\portio.h
1478	copy $(MSYS)\portio.h $@
1479
1480#
1481#  Recover Utility
1482#
1483
1484$(U)recover.exe: $(RECOVOBJS)
1485	@$(LINK) $(LFLAGSU) $(RECOVOBJS),$@,, $(CLIB) $(BCMDL);
1486
1487#
1488#  Tile Mapping
1489#
1490
1491$(SRC)\tile.c: $(U)tilemap.exe
1492	@echo A new $@ is being created.
1493	@$(U)tilemap
1494
1495$(U)tilemap.exe: $(O)tilemap.o
1496	@$(LINK) $(LFLAGSU) $(O)tilemap.o,$@,, $(CLIB) $(BCMDL);
1497
1498$(O)tilemap.o:  $(WSHR)\tilemap.c $(HACK_H)
1499	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(WSHR)\tilemap.c
1500
1501
1502#
1503# Tile Utilities
1504#
1505
1506#
1507#  Optional (for development)
1508#
1509
1510
1511
1512#
1513
1514$(U)gif2txt.exe: $(GIFREADERS) $(TEXT_IO)
1515	@$(LINK) $(LFLAGSU) $(GIFREADERS) $(TEXT_IO),$@,, \
1516		$(CLIB) $(BCMDL);
1517
1518$(U)txt2ppm.exe: $(PPMWRITERS) $(TEXT_IO)
1519	@$(LINK) $(LFLAGSU) $(PPMWRITERS) $(TEXT_IO),$@,, \
1520		$(CLIB) $(BCMDL);
1521
1522$(U)gif2txt2.exe: $(GIFREAD2) $(TEXT_IO2)
1523	@$(LINK) $(LFLAGSU) $(GIFREAD2) $(TEXT_IO2),$@,, \
1524		$(CLIB) $(BCMDL);
1525
1526$(U)txt2ppm2.exe: $(PPMWRIT2) $(TEXT_IO2)
1527	@$(LINK) $(LFLAGSU) $(PPMWRIT2) $(TEXT_IO2),$@,, \
1528		$(CLIB) $(BCMDL);
1529
1530#
1531#  Required for tile support
1532#
1533
1534NetHack1.tib: $(TILEFILES) $(U)tile2bin.exe
1535	@echo Creating binary tile files (this may take some time)
1536	@$(U)tile2bin
1537
1538NetHackO.tib: thintile.tag $(TILEFILES2) $(U)til2bin2.exe
1539	@echo Creating overview binary tile files (this may take some time)
1540	@$(U)til2bin2
1541
1542thintile.tag: $(U)thintile.exe $(TILEFILES)
1543	$(U)thintile
1544	@echo thintiles created >thintile.tag
1545
1546$(U)tile2bin.exe: $(O)tile2bin.o $(TEXT_IO)
1547    @echo Linking $@...
1548?MSC?
1549	$(LINK) $(LFLAGSU) @<<$(@B).lnk
1550?ENDMSC?
1551?BC?
1552	$(LINK) $(LFLAGSU) @&&!
1553?ENDBC?
1554		$(O)tile2bin.o+
1555?LINKLIST:TEXT_IO?
1556		$@
1557		$(@B)
1558		$(BCMDL);
1559?MSC?
1560<<
1561?ENDMSC?
1562?BC?
1563!
1564?ENDBC?
1565
1566$(U)til2bin2.exe: $(O)til2bin2.o $(TEXT_IO2)
1567    @echo Linking $@...
1568?MSC?
1569	$(LINK) $(LFLAGSU) @<<$(@B).lnk
1570?ENDMSC?
1571?BC?
1572	$(LINK) $(LFLAGSU) @&&!
1573?ENDBC?
1574		$(O)til2bin2.o+
1575?LINKLIST:TEXT_IO2?
1576		$@
1577		$(@B)
1578		$(BCMDL);
1579?MSC?
1580<<
1581?ENDMSC?
1582?BC?
1583!
1584?ENDBC?
1585
1586
1587$(U)thintile.exe: $(O)thintile.o
1588	@$(LINK) $(LFLAGSU) $(O)thintile.o,$@,, $(CLIB) $(BCMDL);
1589
1590$(O)thintile.o:  $(HACK_H) $(INCL)\tile.h $(WSHR)\thintile.c
1591	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(WSHR)\thintile.c
1592
1593$(O)tile2bin.o:  $(HACK_H) $(TILE_H) $(PCVIDEO_H)
1594	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(MSYS)\tile2bin.c
1595
1596$(O)til2bin2.o:  $(HACK_H) $(TILE_H) $(PCVIDEO_H)
1597	$(CC) $(CFLAGSU) $(CDEFINE)TILE_X=8 $(CDEFINE)OVERVIEW_FILE \
1598		$(COBJNAM)$@ $(MSYS)\tile2bin.c
1599
1600?COMMENT?
1601$(U)tile2btb.exe: $(O)tile2btb.o $(GIFREADERS)
1602    @echo Linking $@...
1603	$(LINK) $(LFLAGSU) @&&!
1604		$(O)tile2btb.o+
1605?LINKLIST:GIFREADERS?
1606		$@
1607		$(@B)
1608		$(BCMDL) $(BGI_LIB);
1609!
1610
1611$(O)tile2btb.o:  $(HACK_H) $(TILE_H) $(PCVIDEO_H) $(MSYS)\tile2btb.c
1612	$(CC) -DBGI_FILE $(CFLAGSU) $(COBJNAM)$@ $(MSYS)\tile2btb.c
1613?ENDCOMMENT?
1614
1615#
1616# DLB stuff
1617#
1618
1619nhdat:	$(U)dlb_main.exe
1620	@copy $(MSYS)\msdoshlp.txt $(DAT)
1621	@cd $(DAT)
1622	@echo data >dlb.lst
1623	@echo oracles >>dlb.lst
1624	@echo options >>dlb.lst
1625	@echo quest.dat >>dlb.lst
1626	@echo rumors >>dlb.lst
1627	@echo help >>dlb.lst
1628	@echo hh >>dlb.lst
1629	@echo cmdhelp >>dlb.lst
1630	@echo history >>dlb.lst
1631	@echo opthelp >>dlb.lst
1632	@echo wizhelp >>dlb.lst
1633	@echo dungeon >>dlb.lst
1634	@echo license >>dlb.lst
1635	@echo msdoshlp.txt >>dlb.lst
1636	@for %%N in (*.lev) do echo %%N >>dlb.lst
1637	$(U)dlb_main cvIf dlb.lst $(SRC)\nhdat
1638	@cd $(SRC)
1639
1640$(U)dlb_main.exe: $(DLBOBJS)
1641	@$(LINK) $(LFLAGSU) $(DLBOBJS),$@,, $(CLIB) $(BCMDL);
1642
1643$(O)dlb_main.o: $(U)dlb_main.c $(INCL)\config.h $(DLB_H)
1644	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(U)dlb_main.c
1645
1646#
1647# Housekeeping
1648#
1649
1650spotless: clean
1651	rmdir $(OBJ)
1652	if exist $(DATE_H)    del $(DATE_H)
1653	if exist $(INCL)\onames.h  del $(INCL)\onames.h
1654	if exist $(INCL)\pm.h      del $(INCL)\pm.h
1655	if exist $(VIS_TAB_H) del $(VIS_TAB_H)
1656	if exist $(SRC)\vis_tab.c  del $(SRC)\vis_tab.c
1657	if exist $(SRC)\tile.c     del $(SRC)\tile.c
1658	if exist $(DAT)\rumors     del $(DAT)\rumors
1659	if exist $(DAT)\data		del $(DAT)\data
1660	if exist $(DAT)\dungeon		del $(DAT)\dungeon
1661	if exist $(DAT)\dungeon.pdf	del $(DAT)\dungeon.pdf
1662	if exist $(DAT)\options		del $(DAT)\options
1663	if exist $(DAT)\oracles		del $(DAT)\oracles
1664	if exist $(DAT)\rumors		del $(DAT)\rumors
1665	if exist $(DAT)\quest.dat	del $(DAT)\quest.dat
1666	if exist $(DAT)\*.lev		del $(DAT)\*.lev
1667	if exist $(DAT)\sp_lev.tag	del $(DAT)\sp_lev.tag
1668	if exist $(SRC)\monstr.c        del $(SRC)\monstr.c
1669	if exist $(SRC)\vis_tab.c       del $(SRC)\vis_tab.c
1670	if exist $(SRC)\$(PLANAR_TIB)   del $(SRC)\$(PLANAR_TIB)
1671	if exist $(SRC)\$(OVERVIEW_TIB) del $(SRC)\$(OVERVIEW_TIB)
1672	if exist $(U)recover.exe        del $(U)recover.exe
1673
1674clean:
1675	if exist $(O)*.o del $(O)*.o
1676	if exist $(O)*.0 del $(O)*.0
1677	if exist $(O)*.1 del $(O)*.1
1678	if exist $(O)*.2 del $(O)*.2
1679	if exist $(O)*.3 del $(O)*.3
1680	if exist $(O)*.b del $(O)*.b
1681	if exist $(U)utility.tag   del $(U)utility.tag
1682	if exist $(U)makedefs.exe  del $(U)makedefs.exe
1683	if exist $(U)lev_comp.exe  del $(U)lev_comp.exe
1684	if exist $(U)dgn_comp.exe  del $(U)dgn_comp.exe
1685	if exist $(U)dlb_main.exe  del $(U)dlb_main.exe
1686	if exist $(SRC)\*.lnk      del $(SRC)\*.lnk
1687	if exist $(SRC)\*.map      del $(SRC)\*.map
1688	if exist $(SRC)\*$(CPCHEXT) del $(SRC)\*$(CPCHEXT)
1689?BC?
1690	if exist $(SRC)\*.cfg      del $(SRC)\*.cfg
1691?ENDBC?
1692	if exist $(DAT)\dlb.lst    del $(DAT)\dlb.lst
1693
1694pch.c:	$(HACK_H)
1695	@echo ^#include "hack.h" > $@
1696	@echo main(int argc, char *argv[]) >> $@
1697	@echo { >> $@
1698	@echo } >> $@
1699	@echo. >> $@
1700
1701#
1702# OTHER DEPENDENCIES
1703#
1704
1705#
1706# Precompiled Header dependencies
1707# (We need to force the generation of these at the beginning)
1708#
1709
1710PHO$(CPCHEXT): $(HACK_H) pch.c
1711	@echo Generating new precompiled header for .O files
1712	@$(CC) $(FLAGCO) pch.c
1713PH0$(CPCHEXT): $(HACK_H) pch.c
1714	@echo Generating new precompiled header for .0 files
1715	@$(CC) $(FLAGC0) pch.c
1716PH1$(CPCHEXT): $(HACK_H) pch.c
1717	@echo Generating new precompiled header for .1 files
1718	@$(CC) $(FLAGC1) pch.c
1719PH2$(CPCHEXT): $(HACK_H) pch.c
1720	@echo Generating new precompiled header for .2 files
1721	@$(CC) $(FLAGC2) pch.c
1722PH3$(CPCHEXT): $(HACK_H) pch.c
1723	@echo Generating new precompiled header for .3 files
1724	@$(CC) $(FLAGC3) pch.c
1725PHB$(CPCHEXT): $(HACK_H) pch.c
1726	@echo Generating new precompiled header for .B files
1727	@$(CC) $(FLAGCB) pch.c
1728
1729?MSC?
1730#
1731# Compiler supplied, manually moved file - MOVEINIT.C.
1732# - This is only compiled if you selected the alternate overlay
1733#   schema3. (MOVEAPI.H must reside in your include search list,
1734#   and MOVEINIT.C must be in your src directory).  The patch
1735#   in sys/msdos/moveinit.pat must be applied to moveinit.c
1736#   MS will not allow us to distribute an already patched version.
1737
1738$(O)moveinit.o: $(SRC)\moveinit.c
1739	$(CC) $(CFLAGSN) $(COBJNAM)$@ $(MVTRCL) $(SRC)\moveinit.c
1740
1741$(SRC)\moveinit.c:
1742	@echo.
1743	@echo * CANNOT COMPLETE THE BUILD *
1744	@echo You must manually copy moveinit.c and moveinit.h
1745	@echo from your Microsoft C Compiler directory tree
1746	@echo source/move directory and apply the sys/msdos/moveinit.pat
1747	@echo patch to moveinit.c after doing so.
1748	@echo.
1749?ENDMSC?
1750
1751?BC?
1752# Overlay initialization routines used by pcmain() at startup to
1753# determine EMS/XMS memory usage.
1754
1755# Comment out the following line if you don't want Borland C++ to check for
1756# extended memory.
1757RECOGNIZE_XMS = $(CDEFINE)RECOGNIZE_XMS
1758
1759?ENDBC?
1760?MSC?
1761# Overlay initialization routines used by MOVEINIT.C
1762?ENDMSC?
1763
1764$(O)ovlinit.o: $(MSYS)\ovlinit.c $(HACK_H)
1765	$(CC) $(CFLAGSN) $(RECOGNIZE_XMS) $(COBJNAM)$@ $(MSYS)\ovlinit.c
1766
1767#
1768# dat dependencies
1769#
1770
1771$(DAT)\data: $(U)utility.tag    $(DATABASE)
1772	$(U)makedefs -d
1773
1774$(DAT)\rumors: $(U)utility.tag    $(DAT)\rumors.tru   $(DAT)\rumors.fal
1775	$(U)makedefs -r
1776
1777$(DAT)\quest.dat: $(U)utility.tag  $(DAT)\quest.txt
1778	$(U)makedefs -q
1779
1780$(DAT)\oracles: $(U)utility.tag    $(DAT)\oracles.txt
1781	$(U)makedefs -h
1782
1783$(DAT)\dungeon: $(U)utility.tag  $(DAT)\dungeon.def
1784	$(U)makedefs -e
1785	cd $(DAT)
1786	$(U)dgn_comp dungeon.pdf
1787	cd $(SRC)
1788
1789#
1790#  Util Dependencies.
1791#
1792
1793$(O)panic.o:   $(U)panic.c $(CONFIG_H)
1794	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(U)panic.c
1795
1796$(O)recover.o: $(CONFIG_H) $(U)recover.c
1797	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(U)recover.c
1798
1799#
1800#  from win\share
1801#
1802
1803$(O)tiletxt.o:  $(WSHR)\tilemap.c $(HACK_H)
1804	$(CC) $(CFLAGSU) $(CDEFINE)TILETEXT $(COBJNAM)$@ $(WSHR)\tilemap.c
1805
1806$(O)tiletxt2.o:  $(WSHR)\tilemap.c $(HACK_H)
1807	$(CC) $(CFLAGSU) $(CDEFINE)TILETEXT \
1808		$(CDEFINE)TILE_X=8 $(COBJNAM)$@ $(WSHR)\tilemap.c
1809
1810$(O)gifread.o:  $(WSHR)\gifread.c  $(CONFIG_H) $(INCL)\tile.h
1811	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(WSHR)\gifread.c
1812
1813$(O)gifread2.o:  $(WSHR)\gifread.c  $(CONFIG_H) $(INCL)\tile.h
1814	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(CDEFINE)TILE_X=8 $(WSHR)\gifread.c
1815
1816$(O)ppmwrite.o: $(WSHR)\ppmwrite.c $(CONFIG_H) $(INCL)\tile.h
1817	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(WSHR)\ppmwrite.c
1818
1819$(O)ppmwrit2.o: $(WSHR)\ppmwrite.c $(CONFIG_H) $(INCL)\tile.h
1820	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(CDEFINE)TILE_X=8 $(WSHR)\ppmwrite.c
1821
1822$(O)tiletext.o:   $(WSHR)\tiletext.c  $(CONFIG_H) $(INCL)\tile.h
1823	$(CC) $(CFLAGSU) $(COBJNAM)$@ $(WSHR)\tiletext.c
1824
1825$(O)tiletex2.o:   $(WSHR)\tiletext.c  $(CONFIG_H) $(INCL)\tile.h
1826	$(CC) $(CFLAGSU) $(CDEFINE)TILE_X=8 $(COBJNAM)$@ $(WSHR)\tiletext.c
1827
1828#
1829#  from win\tty
1830#
1831
1832$(O)getline.1:  $(PCH1) $(WTTY)\getline.c  $(HACK_H) $(WINTTY_H) $(FUNC_TAB_H)
1833	$(CC) $(FLAGU1) ?[CSNAM1]$(COBJNAM)$@ $(WTTY)\getline.c
1834
1835$(O)getline.2:  $(PCH2) $(WTTY)\getline.c  $(HACK_H) $(WINTTY_H) $(FUNC_TAB_H)
1836	$(CC) $(FLAGU2) ?[CSNAM2]$(COBJNAM)$@ $(WTTY)\getline.c
1837
1838$(O)termcap.0:  $(PCH0) $(WTTY)\termcap.c  $(HACK_H) $(WINTTY_H) $(TERMCAP_H)
1839	$(CC) $(FLAGU0) ?[CSNAM0]$(COBJNAM)$@ $(WTTY)\termcap.c
1840
1841$(O)termcap.1:  $(PCH1) $(WTTY)\termcap.c  $(HACK_H) $(WINTTY_H) $(TERMCAP_H)
1842	$(CC) $(FLAGU1) ?[CSNAM1]$(COBJNAM)$@ $(WTTY)\termcap.c
1843
1844$(O)termcap.B:  $(PCHB) $(WTTY)\termcap.c  $(HACK_H) $(WINTTY_H) $(TERMCAP_H)
1845	$(CC) $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $(WTTY)\termcap.c
1846
1847$(O)topl.1:     $(PCH1) $(WTTY)\topl.c     $(HACK_H) $(TERMCAP_H) $(WINTTY_H)
1848	$(CC) $(FLAGU1) ?[CSNAM1]$(COBJNAM)$@ $(WTTY)\topl.c
1849
1850$(O)topl.2:     $(PCH2) $(WTTY)\topl.c     $(HACK_H) $(TERMCAP_H) $(WINTTY_H)
1851	$(CC) $(FLAGU2) ?[CSNAM2]$(COBJNAM)$@ $(WTTY)\topl.c
1852
1853$(O)topl.B:     $(PCHB) $(WTTY)\topl.c     $(HACK_H) $(TERMCAP_H) $(WINTTY_H)
1854	$(CC) $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $(WTTY)\topl.c
1855
1856$(O)wintty.o: $(PCHO) $(CONFIG_H) $(WTTY)\wintty.c $(PATCHLEVEL_H)
1857	$(CC) $(FLAGUO) ?[CSNAMOB]$(COBJNAM)$@ $(WTTY)\wintty.c
1858
1859#
1860# from sys\share
1861#
1862
1863$(O)pcmain.0:   $(PCH0) $(HACK_H) $(SYS)\pcmain.c
1864	$(CC)  $(FLAGU0) ?[CSNAM0]$(COBJNAM)$@ $(SYS)\pcmain.c
1865
1866$(O)pcmain.1:   $(PCH1) $(HACK_H) $(SYS)\pcmain.c
1867	$(CC)  $(FLAGU1) ?[CSNAM1]$(COBJNAM)$@ $(SYS)\pcmain.c
1868
1869$(O)pcmain.B:   $(PCHB) $(HACK_H) $(SYS)\pcmain.c
1870	$(CC)  $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $(SYS)\pcmain.c
1871
1872$(O)pcunix.B:   $(PCHB) $(SYS)\pcunix.c   $(HACK_H)
1873	$(CC) $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $(SYS)\pcunix.c
1874
1875$(O)tty.o:     $(HACK_H) $(WINTTY_H) $(SYS)\pctty.c
1876	$(CC)  $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@  $(SYS)\pctty.c
1877
1878$(O)sys.o:    $(HACK_H) $(SYS)\pcsys.c
1879	$(CC)  $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@ $(SYS)\pcsys.c
1880
1881$(O)random.o: $(PCHO) $(HACK_H) $(SYS)\random.c
1882	$(CC) $(FLAGUO) ?[CSNAMOB]$(COBJNAM)$@ $(SYS)\random.c
1883
1884#
1885# from sys\msdos
1886#
1887
1888$(O)msdos.0: $(MSYS)\msdos.c   $(HACK_H) $(PCVIDEO_H)
1889?BC?
1890	$(CC) $(CFLAGSN) $(COVL0) $$($(@B)_0) $(COBJNAM)$@ $(MSYS)\msdos.c
1891?ENDBC?
1892?MSC?
1893	$(CC) $(FLAGU0) $(CCSNAM)$(@F) $(COBJNAM)$@ $(MSYS)\msdos.c
1894?ENDMSC?
1895?COMMENT?
1896	$(CC) $(CFLAGSN) $(COVL0) ?[CSNAM0]$(COBJNAM)$@ $(MSYS)\vidtxt.c
1897?ENDCOMMENT?
1898
1899$(O)msdos.B: $(MSYS)\msdos.c   $(HACK_H) $(PCVIDEO_H)
1900?BC?
1901	$(CC) $(CFLAGSN) $(COVLB) $$($(@B)_b) $(COBJNAM)$@ $(MSYS)\msdos.c
1902?ENDBC?
1903?MSC?
1904	$(CC) $(FLAGUB) $(CCSNAM)$(@F) $(COBJNAM)$@ $(MSYS)\msdos.c
1905?ENDMSC?
1906?COMMENT?
1907	$(CC) $(CFLAGSN) $(COVLB) ?[CSNAMB]$(COBJNAM)$@ $(MSYS)\vidtxt.c
1908?ENDCOMMENT?
1909
1910$(O)pctiles.0: $(PCH0) $(MSYS)\pctiles.c $(HACK_H) $(TILE_H) $(PCVIDEO_H)
1911	$(CC) $(FLAGU0) ?[CSNAM0]$(COBJNAM)$@ $(MSYS)\pctiles.c
1912
1913$(O)pctiles.B: $(PCHB) $(MSYS)\pctiles.c $(HACK_H) $(TILE_H) $(PCVIDEO_H)
1914	$(CC) $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $(MSYS)\pctiles.c
1915
1916$(O)sound.o: $(PCH0) $(MSYS)\sound.c   $(HACK_H) $(INCL)\portio.h
1917	$(CC) $(FLAGUO) ?[CSNAMOB]$(COBJNAM)$@ $(MSYS)\sound.c
1918
1919$(O)pckeys.o: $(PCHO) $(MSYS)\pckeys.c   $(HACK_H) $(PCVIDEO_H)
1920	$(CC) $(FLAGUO) ?[CSNAMOB]$(COBJNAM)$@ $(MSYS)\pckeys.c
1921
1922$(O)stubvid.o : $(MSYS)\video.c $(HACK_H)
1923	$(CC) $(FLAGUO) $(CDEFINE)STUBVIDEO ?[CSNAMOB]$(COBJNAM)$@ $(MSYS)\video.c
1924
1925$(O)video.0: $(PCH0) $(MSYS)\video.c   $(HACK_H) $(WINTTY_H) $(PCVIDEO_H) \
1926                $(TILE_H)
1927	$(CC) $(FLAGU0) ?[CSNAM0]$(COBJNAM)$@ $(MSYS)\video.c
1928
1929$(O)video.1: $(PCH1) $(MSYS)\video.c   $(HACK_H) $(WINTTY_H) $(PCVIDEO_H) \
1930                $(TILE_H)
1931	$(CC) $(FLAGU1) ?[CSNAM1]$(COBJNAM)$@ $(MSYS)\video.c
1932
1933$(O)video.B: $(PCHB) $(MSYS)\video.c   $(HACK_H) $(WINTTY_H) $(PCVIDEO_H) \
1934                $(TILE_H)
1935	$(CC) $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $(MSYS)\video.c
1936
1937$(O)vidtxt.0: $(MSYS)\vidtxt.c  $(HACK_H) $(WINTTY_H) $(PCVIDEO_H)
1938?BC?
1939	$(CC) $(CFLAGSN) $(COVL0) $$($(@B)_0) $(COBJNAM)$@ $(MSYS)\vidtxt.c
1940?ENDBC?
1941?MSC?
1942	$(CC) $(FLAGU0) $(CCSNAM)$(@F) $(COBJNAM)$@ $(MSYS)\vidtxt.c
1943?ENDMSC?
1944?COMMENT?
1945	$(CC) $(CFLAGSN) $(COVL0) ?[CSNAM0]$(COBJNAM)$@ $(MSYS)\vidtxt.c
1946?ENDCOMMENT?
1947
1948$(O)vidtxt.B: $(MSYS)\vidtxt.c  $(HACK_H) $(WINTTY_H) $(PCVIDEO_H)
1949?BC?
1950	$(CC) $(CFLAGSN) $(COVLB) $$($(@B)_b) $(COBJNAM)$@ $(MSYS)\vidtxt.c
1951?ENDBC?
1952?MSC?
1953	$(CC) $(FLAGUB) $(CCSNAM)$(@F) $(COBJNAM)$@ $(MSYS)\vidtxt.c
1954?ENDMSC?
1955?COMMENT?
1956	$(CC) $(CFLAGSN) $(COVLB) ?[CSNAMB]$(COBJNAM)$@ $(MSYS)\vidtxt.c
1957?ENDCOMMENT?
1958
1959$(O)vidvga.0: $(PCH0) $(MSYS)\vidvga.c  $(HACK_H) $(WINTTY_H) $(PCVIDEO_H) \
1960		$(TILE_H)
1961	$(CC) $(FLAGU0) ?[CSNAM0]$(COBJNAM)$@ $(MSYS)\vidvga.c
1962
1963$(O)vidvga.1: $(PCH1) $(MSYS)\vidvga.c  $(HACK_H) $(WINTTY_H) $(PCVIDEO_H) \
1964		$(TILE_H)
1965	$(CC) $(FLAGU1) ?[CSNAM0]$(COBJNAM)$@ $(MSYS)\vidvga.c
1966
1967$(O)vidvga.2: $(PCH2) $(MSYS)\vidvga.c  $(HACK_H) $(WINTTY_H) $(PCVIDEO_H) \
1968		$(TILE_H)
1969	$(CC) $(FLAGU2) ?[CSNAM0]$(COBJNAM)$@ $(MSYS)\vidvga.c
1970
1971$(O)vidvga.B: $(PCHB) $(MSYS)\vidvga.c  $(HACK_H) $(WINTTY_H) $(PCVIDEO_H) \
1972		$(TILE_H)
1973	$(CC) $(FLAGUB) ?[CSNAMB]$(COBJNAM)$@ $(MSYS)\vidvga.c
1974
1975#
1976# from src
1977#
1978
1979$(O)alloc.o:     $(SRC)\alloc.c    $(CONFIG_H)
1980	$(CC) $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@ $(SRC)\alloc.c
1981$(O)ball.o:      $(PCHO) $(SRC)\ball.c     $(HACK_H)
1982$(O)bones.o:     $(PCHO) $(SRC)\bones.c    $(HACK_H) $(LEV_H)
1983$(O)decl.o:      $(PCHO) $(SRC)\decl.c     $(HACK_H) $(QUEST_H)
1984$(O)detect.o:    $(PCHO) $(SRC)\detect.c   $(HACK_H) $(ARTIFACT_H)
1985$(O)dig.o:	 $(PCHO) $(SRC)\dig.c	   $(HACK_H) $(EDOG_H) # check dep
1986$(O)display.o:	 $(PCHO) $(SRC)\display.c  $(HACK_H)
1987$(O)dlb.o:	 $(SRC)\dlb.c	   $(DLB_H) $(HACK_H)
1988	$(CC) $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@ $(SRC)\dlb.c
1989$(O)dokick.o:    $(PCHO) $(SRC)\dokick.c   $(HACK_H) $(ESHK_H)
1990$(O)dothrow.o:   $(PCHO) $(SRC)\dothrow.c  $(HACK_H)
1991$(O)drawing.o:   $(SRC)\drawing.c  $(HACK_H) $(TERMCAP_H)
1992	$(CC) $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@ $(SRC)\drawing.c
1993$(O)end.o:       $(SRC)\end.c      $(HACK_H) $(ESHK_H) $(DLB_H)
1994	$(CC) $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@ $(SRC)\end.c
1995$(O)exper.o:     $(PCHO) $(SRC)\exper.c    $(HACK_H)
1996$(O)extralev.o:  $(PCHO) $(SRC)\extralev.c $(HACK_H)
1997$(O)files.o:	 $(PCHO) $(SRC)\files.c    $(HACK_H) $(DLB_H)
1998$(O)fountain.o:  $(PCHO) $(SRC)\fountain.c $(HACK_H)
1999$(O)minion.o:    $(PCHO) $(SRC)\minion.c   $(HACK_H) $(EMIN_H) $(EPRI_H)
2000$(O)mklev.o:     $(PCHO) $(SRC)\mklev.c    $(HACK_H)
2001$(O)mkmap.o:     $(PCHO) $(SRC)\mkmap.c    $(HACK_H) $(SP_LEV_H)
2002$(O)mkmaze.o:	 $(PCHO) $(SRC)\mkmaze.c   $(HACK_H) $(SP_LEV_H) $(LEV_H)
2003$(O)monst.o:     $(SRC)\monst.c    $(CONFIG_H) $(PERMONST_H) $(MONSYM_H) \
2004		 $(ESHK_H) $(EPRI_H) $(COLOR_H) $(ALIGN_H)
2005	$(CC) $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@ $(SRC)\monst.c
2006$(O)monstr.o:    $(SRC)\monstr.c   $(CONFIG_H)
2007	$(CC) $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@ $(SRC)\monstr.c
2008$(O)mplayer.o:   $(PCHO) $(SRC)\mplayer.c  $(HACK_H)
2009$(O)muse.o:      $(PCHO) $(SRC)\muse.c     $(HACK_H)
2010$(O)music.o:     $(PCHO) $(SRC)\music.c    $(HACK_H)
2011$(O)o_init.o:	 $(PCHO) $(SRC)\o_init.c   $(HACK_H) $(LEV_H)
2012$(O)objects.o:   $(SRC)\objects.c  $(CONFIG_H) $(OBJ_H) $(OBJCLASS_H) \
2013                 $(PROP_H) $(COLOR_H)
2014	$(CC) $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@ $(SRC)\objects.c
2015$(O)options.o:	 $(SRC)\options.c  $(HACK_H) $(TERMCAP_H) $(OBJCLASS_H)
2016	$(CC) $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@ $(SRC)\options.c
2017$(O)pager.o:	 $(SRC)\pager.c    $(HACK_H) $(DLB_H)
2018	$(CC) $(CFLAGNO) $(COBJNAM)$@ ?[CSNAMOA]$(SRC)\pager.c
2019$(O)pickup.o:    $(PCHO) $(SRC)\pickup.c   $(HACK_H)
2020$(O)pray.o:      $(PCHO) $(SRC)\pray.c     $(HACK_H) $(EPRI_H)
2021$(O)quest.o:     $(PCHO) $(SRC)\quest.c    $(HACK_H) $(QUEST_H) $(QTEXT_H)
2022$(O)questpgr.o:  $(PCHO) $(SRC)\questpgr.c $(HACK_H) $(QTEXT_H) $(DLB_H)
2023$(O)rect.o:      $(PCHO) $(SRC)\rect.c     $(HACK_H)
2024$(O)region.o:    $(PCHO) $(SRC)\region.c   $(HACK_H)
2025$(O)restore.o:   $(PCHO) $(SRC)\restore.c  $(HACK_H) $(LEV_H) $(TERMCAP_H) \
2026		 $(QUEST_H)
2027$(O)rip.o:       $(PCHO) $(SRC)\rip.c      $(HACK_H)
2028$(O)role.o:	   $(PCHO) $(SRC)\role.c     $(HACK_H)
2029$(O)rumors.o:	 $(PCHO) $(SRC)\rumors.c   $(HACK_H) $(DLB_H)
2030$(O)save.o:      $(PCHO) $(SRC)\save.c     $(HACK_H) $(LEV_H) $(QUEST_H)
2031$(O)sit.o:       $(PCHO) $(SRC)\sit.c      $(HACK_H) $(ARTIFACT_H)
2032$(O)steed.o:	   $(PCHO) $(SRC)\steed.c    $(HACK_H)
2033$(O)sp_lev.o:	 $(PCHO) $(SRC)\sp_lev.c   $(HACK_H) $(SP_LEV_H) $(DLB_H)
2034$(O)spell.o:     $(PCHO) $(SRC)\spell.c    $(HACK_H)
2035$(O)teleport.o:  $(PCHO) $(SRC)\teleport.c $(HACK_H)	# check dep
2036$(O)tile.o:      $(PCHO) $(SRC)\tile.c     $(HACK_H)
2037$(O)topten.o:	 $(PCHO) $(SRC)\topten.c   $(HACK_H) $(DLB_H) $(PATCHLEVEL_H)
2038$(O)u_init.o:    $(PCHO) $(SRC)\u_init.c   $(HACK_H)
2039$(O)uhitm.o:     $(PCHO) $(SRC)\uhitm.c    $(HACK_H)
2040$(O)version.o:   $(PCHO) $(SRC)\version.c  $(HACK_H) $(PATCHLEVEL_H)
2041$(O)vision.o:    $(PCHO) $(SRC)\vision.c   $(HACK_H) $(VIS_TAB_H)
2042$(O)vis_tab.o:   $(SRC)\vis_tab.c  $(HACK_H) $(VIS_TAB_H)
2043	$(CC) $(CFLAGSN) ?[CSNAMOB]$(COBJNAM)$@ $(SRC)\vis_tab.c
2044$(O)wield.o:     $(PCHO) $(SRC)\wield.c    $(HACK_H)
2045$(O)windows.o:   $(PCHO) $(SRC)\windows.c  $(HACK_H) $(WINTTY_H)
2046$(O)worm.o:      $(PCHO) $(SRC)\worm.c     $(HACK_H) $(LEV_H)
2047$(O)worn.o:      $(PCHO) $(SRC)\worn.c     $(HACK_H)
2048$(O)write.o:     $(PCHO) $(SRC)\write.c    $(HACK_H)
2049
2050#
2051# Overlays
2052#
2053
2054# OVL0
2055#
2056
2057$(O)allmain.0:  $(PCH0) $(SRC)\allmain.c  $(HACK_H)
2058$(O)apply.0:    $(PCH0) $(SRC)\apply.c    $(HACK_H) $(EDOG_H)
2059$(O)artifact.0: $(PCH0) $(SRC)\artifact.c $(HACK_H) $(ARTIFACT_H) $(ARTILIST_H)
2060$(O)attrib.0:   $(PCH0) $(SRC)\attrib.c   $(HACK_H)
2061$(O)botl.0:     $(PCH0) $(SRC)\botl.c     $(HACK_H)
2062$(O)cmd.0:      $(PCH0) $(SRC)\cmd.c      $(HACK_H) $(FUNC_TAB_H)
2063$(O)dbridge.0:  $(PCH0) $(SRC)\dbridge.c  $(HACK_H)
2064$(O)do.0:       $(PCH0) $(SRC)\do.c       $(HACK_H) $(LEV_H)
2065$(O)do_name.0:  $(PCH0) $(SRC)\do_name.c  $(HACK_H)
2066$(O)do_wear.0:  $(PCH0) $(SRC)\do_wear.c  $(HACK_H)
2067$(O)dogmove.0:  $(PCH0) $(SRC)\dogmove.c  $(HACK_H) $(MFNDPOS_H) $(EDOG_H)
2068$(O)dungeon.0:	$(PCH0) $(SRC)\dungeon.c  $(HACK_H) $(ALIGN_H) $(DGN_FILE_H) \
2069		$(DLB_H)
2070$(O)eat.0:      $(PCH0) $(SRC)\eat.c      $(HACK_H)
2071$(O)engrave.0:  $(PCH0) $(SRC)\engrave.c  $(HACK_H) $(LEV_H)
2072$(O)explode.0:  $(PCH0) $(SRC)\explode.c  $(HACK_H)
2073$(O)hacklib.0:  $(PCH0) $(SRC)\hacklib.c  $(HACK_H)
2074$(O)invent.0:   $(PCH0) $(SRC)\invent.c   $(HACK_H) $(ARTIFACT_H)
2075$(O)lock.0:     $(PCH0) $(SRC)\lock.c     $(HACK_H)
2076$(O)mail.0:     $(PCH0) $(SRC)\mail.c     $(HACK_H) $(MAIL_H) $(PATCHLEVEL_H)
2077$(O)makemon.0:  $(PCH0) $(SRC)\makemon.c  $(HACK_H) $(EPRI_H) $(EMIN_H)
2078$(O)mcastu.0:   $(PCH0) $(SRC)\mcastu.c   $(HACK_H)
2079$(O)mhitm.0:    $(PCH0) $(SRC)\mhitm.c    $(HACK_H) $(ARTIFACT_H) $(EDOG_H)
2080$(O)mhitu.0:    $(PCH0) $(SRC)\mhitu.c    $(HACK_H) $(ARTIFACT_H) $(EDOG_H)
2081$(O)mkobj.0:    $(PCH0) $(SRC)\mkobj.c    $(HACK_H) $(ARTIFACT_H) $(PROP_H)
2082$(O)mkroom.0:   $(PCH0) $(SRC)\mkroom.c   $(HACK_H)
2083$(O)mon.0:      $(PCH0) $(SRC)\mon.c      $(HACK_H) $(MFNDPOS_H) $(EDOG_H)
2084$(O)mondata.0:  $(PCH0) $(SRC)\mondata.c  $(HACK_H) $(ESHK_H) $(EPRI_H)
2085$(O)monmove.0:  $(PCH0) $(SRC)\monmove.c  $(HACK_H) $(MFNDPOS_H) $(ARTIFACT_H)
2086$(O)mthrowu.0:  $(PCH0) $(SRC)\mthrowu.c  $(HACK_H)
2087$(O)objnam.0:   $(PCH0) $(SRC)\objnam.c   $(HACK_H)
2088$(O)polyself.0: $(PCH0) $(SRC)\polyself.c $(HACK_H)
2089$(O)priest.0:   $(PCH0) $(SRC)\priest.c   $(HACK_H) $(MFNDPOS_H) $(ESHK_H) \
2090		$(EPRI_H) $(EMIN_H)
2091$(O)rnd.0:      $(PCH0) $(SRC)\rnd.c      $(HACK_H)
2092$(O)shk.0:      $(PCH0) $(SRC)\shk.c      $(HACK_H) $(ESHK_H)
2093$(O)shknam.0:   $(PCH0) $(SRC)\shknam.c   $(HACK_H) $(ESHK_H)
2094$(O)sounds.0:   $(PCH0) $(SRC)\sounds.c   $(HACK_H) $(EDOG_H)
2095$(O)steal.0:    $(PCH0) $(SRC)\steal.c    $(HACK_H)
2096$(O)timeout.0:	$(PCH0) $(SRC)\timeout.c  $(HACK_H) $(LEV_H)
2097$(O)track.0:    $(PCH0) $(SRC)\track.c    $(HACK_H)
2098$(O)trap.0:     $(PCH0) $(SRC)\trap.c     $(HACK_H)
2099$(O)vault.0:    $(PCH0) $(SRC)\vault.c    $(HACK_H) $(VAULT_H)
2100$(O)weapon.0:   $(PCH0) $(SRC)\weapon.c   $(HACK_H)
2101$(O)were.0:     $(PCH0) $(SRC)\were.c     $(HACK_H)
2102$(O)wizard.0:   $(PCH0) $(SRC)\wizard.c   $(HACK_H) $(QTEXT_H)
2103$(O)zap.0:      $(PCH0) $(SRC)\zap.c      $(HACK_H)
2104
2105#
2106# OVL1
2107#
2108
2109$(O)allmain.1:  $(PCH1) $(SRC)\allmain.c  $(HACK_H)
2110$(O)apply.1:    $(PCH1) $(SRC)\apply.c    $(HACK_H) $(EDOG_H)
2111$(O)artifact.1: $(PCH1) $(SRC)\artifact.c $(HACK_H) $(ARTIFACT_H) $(ARTILIST_H)
2112$(O)attrib.1:   $(PCH1) $(SRC)\attrib.c   $(HACK_H)
2113$(O)botl.1:     $(PCH1) $(SRC)\botl.c     $(HACK_H)
2114$(O)cmd.1:      $(PCH1) $(SRC)\cmd.c      $(HACK_H) $(FUNC_TAB_H)
2115$(O)dbridge.1:  $(PCH1) $(SRC)\dbridge.c  $(HACK_H)
2116$(O)do.1:       $(PCH1) $(SRC)\do.c       $(HACK_H) $(LEV_H)
2117$(O)do_wear.1:  $(PCH1) $(SRC)\do_wear.c  $(HACK_H)
2118$(O)dog.1:      $(PCH1) $(SRC)\dog.c      $(HACK_H) $(EDOG_H)
2119$(O)dungeon.1:	$(PCH1) $(SRC)\dungeon.c  $(HACK_H) $(ALIGN_H) $(DGN_FILE_H) $(DLB_H)
2120$(O)eat.1:      $(PCH1) $(SRC)\eat.c      $(HACK_H)
2121$(O)engrave.1:  $(PCH1) $(SRC)\engrave.c  $(HACK_H) $(LEV_H)
2122$(O)explode.1:  $(PCH1) $(SRC)\explode.c  $(HACK_H)
2123$(O)hack.1:     $(PCH1) $(SRC)\hack.c     $(HACK_H)
2124$(O)hacklib.1:  $(PCH1) $(SRC)\hacklib.c  $(HACK_H)
2125$(O)invent.1:   $(PCH1) $(SRC)\invent.c   $(HACK_H) $(ARTIFACT_H)
2126$(O)makemon.1:  $(PCH1) $(SRC)\makemon.c  $(HACK_H) $(EPRI_H) $(EMIN_H)
2127$(O)mhitu.1:    $(PCH1) $(SRC)\mhitu.c    $(HACK_H) $(ARTIFACT_H) $(EDOG_H)
2128$(O)mkobj.1:    $(PCH1) $(SRC)\mkobj.c    $(HACK_H) $(ARTIFACT_H) $(PROP_H)
2129$(O)mon.1:      $(PCH1) $(SRC)\mon.c      $(HACK_H) $(MFNDPOS_H) $(EDOG_H)
2130$(O)mondata.1:  $(PCH1) $(SRC)\mondata.c  $(HACK_H) $(ESHK_H) $(EPRI_H)
2131$(O)monmove.1:  $(PCH1) $(SRC)\monmove.c  $(HACK_H) $(MFNDPOS_H) $(ARTIFACT_H)
2132$(O)mthrowu.1:  $(PCH1) $(SRC)\mthrowu.c  $(HACK_H)
2133$(O)objnam.1:   $(PCH1) $(SRC)\objnam.c   $(HACK_H)
2134$(O)polyself.1: $(PCH1) $(SRC)\polyself.c $(HACK_H)
2135$(O)rnd.1:      $(PCH1) $(SRC)\rnd.c      $(HACK_H)
2136$(O)shk.1:      $(PCH1) $(SRC)\shk.c      $(HACK_H) $(ESHK_H)
2137$(O)steal.1:    $(PCH1) $(SRC)\steal.c    $(HACK_H)
2138$(O)timeout.1:	$(PCH1) $(SRC)\timeout.c  $(HACK_H) $(LEV_H)
2139$(O)track.1:    $(PCH1) $(SRC)\track.c    $(HACK_H)
2140$(O)trap.1:     $(PCH1) $(SRC)\trap.c     $(HACK_H)
2141$(O)weapon.1:   $(PCH1) $(SRC)\weapon.c   $(HACK_H)
2142$(O)zap.1:      $(PCH1) $(SRC)\zap.c      $(HACK_H)
2143
2144#
2145# OVL2
2146#
2147
2148$(O)attrib.2:   $(PCH2) $(SRC)\attrib.c   $(HACK_H)
2149$(O)do.2:       $(PCH2) $(SRC)\do.c       $(HACK_H) $(LEV_H)
2150$(O)do_name.2:  $(PCH2) $(SRC)\do_name.c  $(HACK_H)
2151$(O)do_wear.2:  $(PCH2) $(SRC)\do_wear.c  $(HACK_H)
2152$(O)dog.2:      $(PCH2) $(SRC)\dog.c      $(HACK_H) $(EDOG_H)
2153$(O)engrave.2:  $(PCH2) $(SRC)\engrave.c  $(HACK_H) $(LEV_H)
2154$(O)hack.2:     $(PCH2) $(SRC)\hack.c     $(HACK_H)
2155$(O)hacklib.2:  $(PCH2) $(SRC)\hacklib.c  $(HACK_H)
2156$(O)invent.2:   $(PCH2) $(SRC)\invent.c   $(HACK_H) $(ARTIFACT_H)
2157$(O)makemon.2:  $(PCH2) $(SRC)\makemon.c  $(HACK_H) $(EPRI_H) $(EMIN_H)
2158$(O)mon.2:      $(PCH2) $(SRC)\mon.c      $(HACK_H) $(MFNDPOS_H) $(EDOG_H)
2159$(O)mondata.2:  $(PCH2) $(SRC)\mondata.c  $(HACK_H) $(ESHK_H) $(EPRI_H)
2160$(O)monmove.2:  $(PCH2) $(SRC)\monmove.c  $(HACK_H) $(MFNDPOS_H) $(ARTIFACT_H)
2161$(O)shk.2:      $(PCH2) $(SRC)\shk.c      $(HACK_H) $(ESHK_H)
2162$(O)trap.2:     $(PCH2) $(SRC)\trap.c     $(HACK_H)
2163$(O)zap.2:      $(PCH2) $(SRC)\zap.c      $(HACK_H)
2164
2165#
2166# OVL3
2167#
2168
2169$(O)do.3:       $(PCH3) $(SRC)\do.c       $(HACK_H) $(LEV_H)
2170$(O)hack.3:     $(PCH3) $(SRC)\hack.c     $(HACK_H)
2171$(O)invent.3:	$(PCH3) $(SRC)\invent.c   $(HACK_H) $(ARTIFACT_H)
2172$(O)light.3:	$(PCH3) $(SRC)\light.c	  $(HACK_H)
2173$(O)shk.3:      $(PCH3) $(SRC)\shk.c      $(HACK_H) $(ESHK_H)
2174$(O)trap.3:     $(PCH3) $(SRC)\trap.c     $(HACK_H)
2175$(O)zap.3:      $(PCH3) $(SRC)\zap.c      $(HACK_H)
2176
2177#
2178# OVLB
2179#
2180
2181$(O)allmain.B:  $(PCHB) $(SRC)\allmain.c  $(HACK_H)
2182$(O)apply.B:    $(PCHB) $(SRC)\apply.c    $(HACK_H) $(EDOG_H)
2183$(O)artifact.B: $(PCHB) $(SRC)\artifact.c $(HACK_H) $(ARTIFACT_H) $(ARTILIST_H)
2184$(O)attrib.B:   $(PCHB) $(SRC)\attrib.c   $(HACK_H)
2185$(O)botl.B:     $(PCHB) $(SRC)\botl.c     $(HACK_H)
2186$(O)cmd.B:      $(PCHB) $(SRC)\cmd.c      $(HACK_H) $(FUNC_TAB_H)
2187$(O)dbridge.B:  $(PCHB) $(SRC)\dbridge.c  $(HACK_H)
2188$(O)do.B:       $(PCHB) $(SRC)\do.c       $(HACK_H) $(LEV_H)
2189$(O)do_name.B:  $(PCHB) $(SRC)\do_name.c  $(HACK_H)
2190$(O)do_wear.B:  $(PCHB) $(SRC)\do_wear.c  $(HACK_H)
2191$(O)dog.B:      $(PCHB) $(SRC)\dog.c      $(HACK_H) $(EDOG_H)
2192$(O)dogmove.B:  $(PCHB) $(SRC)\dogmove.c  $(HACK_H) $(MFNDPOS_H) $(EDOG_H)
2193$(O)eat.B:      $(PCHB) $(SRC)\eat.c      $(HACK_H)
2194$(O)engrave.B:  $(PCHB) $(SRC)\engrave.c  $(HACK_H) $(LEV_H)
2195$(O)hack.B:     $(PCHB) $(SRC)\hack.c     $(HACK_H)
2196$(O)hacklib.B:  $(PCHB) $(SRC)\hacklib.c  $(HACK_H)
2197$(O)invent.B:   $(PCHB) $(SRC)\invent.c   $(HACK_H) $(ARTIFACT_H)
2198$(O)lock.B:     $(PCHB) $(SRC)\lock.c     $(HACK_H)
2199$(O)mail.B:     $(PCHB) $(SRC)\mail.c     $(HACK_H) $(MAIL_H) $(PATCHLEVEL_H)
2200$(O)makemon.B:  $(PCHB) $(SRC)\makemon.c  $(HACK_H) $(EPRI_H) $(EMIN_H)
2201$(O)mcastu.B:   $(PCHB) $(SRC)\mcastu.c   $(HACK_H)
2202$(O)mhitm.B:    $(PCHB) $(SRC)\mhitm.c    $(HACK_H) $(ARTIFACT_H) $(EDOG_H)
2203$(O)mhitu.B:    $(PCHB) $(SRC)\mhitu.c    $(HACK_H) $(ARTIFACT_H) $(EDOG_H)
2204$(O)mkobj.B:    $(PCHB) $(SRC)\mkobj.c    $(HACK_H) $(ARTIFACT_H) $(PROP_H)
2205$(O)mkroom.B:   $(PCHB) $(SRC)\mkroom.c   $(HACK_H)
2206$(O)mon.B:      $(PCHB) $(SRC)\mon.c      $(HACK_H) $(MFNDPOS_H) $(EDOG_H)
2207$(O)mondata.B:  $(PCHB) $(SRC)\mondata.c  $(HACK_H) $(ESHK_H) $(EPRI_H)
2208$(O)monmove.B:  $(PCHB) $(SRC)\monmove.c  $(HACK_H) $(MFNDPOS_H) $(ARTIFACT_H)
2209$(O)mthrowu.B:  $(PCHB) $(SRC)\mthrowu.c  $(HACK_H)
2210$(O)objnam.B:   $(PCHB) $(SRC)\objnam.c   $(HACK_H)
2211$(O)pline.B:    $(SRC)\pline.c    $(HACK_H) $(EPRI_H)
2212	$(CC) $(CFLAGSN) ?[CSNAMB]$(COBJNAM)$@ $(SRC)\pline.c
2213$(O)polyself.B: $(PCHB) $(SRC)\polyself.c $(HACK_H)
2214$(O)potion.B:   $(PCHB) $(SRC)\potion.c   $(HACK_H)
2215$(O)priest.B:   $(PCHB) $(SRC)\priest.c   $(HACK_H) $(MFNDPOS_H) $(ESHK_H) \
2216		$(EPRI_H) $(EMIN_H)
2217$(O)read.B:     $(PCHB) $(SRC)\read.c     $(HACK_H)
2218$(O)rnd.B:      $(PCHB) $(SRC)\rnd.c      $(HACK_H)
2219$(O)shk.B:      $(PCHB) $(SRC)\shk.c      $(HACK_H) $(ESHK_H)
2220$(O)shknam.B:   $(PCHB) $(SRC)\shknam.c   $(HACK_H) $(ESHK_H)
2221$(O)sounds.B:   $(PCHB) $(SRC)\sounds.c   $(HACK_H) $(EDOG_H)
2222$(O)steal.B:    $(PCHB) $(SRC)\steal.c    $(HACK_H)
2223$(O)timeout.B:	$(PCHB) $(SRC)\timeout.c  $(HACK_H) $(LEV_H)
2224$(O)track.B:    $(PCHB) $(SRC)\track.c    $(HACK_H)
2225$(O)trap.B:     $(PCHB) $(SRC)\trap.c     $(HACK_H)
2226$(O)vault.B:    $(PCHB) $(SRC)\vault.c    $(HACK_H) $(VAULT_H)
2227$(O)weapon.B:   $(PCHB) $(SRC)\weapon.c   $(HACK_H)
2228$(O)were.B:     $(PCHB) $(SRC)\were.c     $(HACK_H)
2229$(O)wizard.B:   $(PCHB) $(SRC)\wizard.c   $(HACK_H) $(QTEXT_H)
2230$(O)zap.B:      $(PCHB) $(SRC)\zap.c      $(HACK_H)
2231
2232# end of file
2233