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