1#	SCCS Id: @(#)Makefile.os2	3.4.3	1996/10/29
2#	OS/2 NetHack 3.4.3 Makefile for OS/2 versions 2.x
3#	Copyright (C) 1990, 1991, 1992, 1993, 1996 Timo Hakulinen
4#
5#	Several compilers exist for OS/2 but, currently only GCC emx is tested
6#	and used for releases.  make programs other than dmake are not tested.
7#
8#	Supported compilers: GCC emx 0.9g
9#
10#	DMAKE is required.  Credit for the makefile improvements goes to
11#	Pekka Rousu.
12#
13#	Copy this file into $(SRC) directory, rename it to "makefile"
14#	(important, many targets rely on it), compile and link inside
15#	$(SRC).  If required, termcap library can be built from termcap
16#	sources using makefile.lib in "sys\share" directory.
17#
18#	"GCC" refers to GCC emx only.  No other ports of GCC are supported.
19#	Additional credits for honing GCC support for 3.2 go to Ronald
20#	Van Iwaarden (ron@vaniwaarden.org) and Stefan Neis (neis@cs.uni-sb.de).
21#
22#	"OMF" is short for "Object Module Format" and refers to the
23#	standard OS/2 object format, which e.g. link386 uses.  MSC and
24#	CSet/2 always produce OMF object files, and GCC can be instructed
25#	to produce them with proper switches (see below).
26#
27#	"a.out" refers to Unix object file format, which is used by GCC
28#	in its default compilation mode.  These object files must be
29#	linked using GCC's own linker to produce a proper OS/2 executable.
30#	GDB debugger shipped with GCC can only be used with a.out object
31#	format.
32#
33#	Note that the default setup in this makefile is my personal setup,
34#	which you will have to adapt to your configuration.
35#
36
37#
38#	Compiler and linker selection.
39#
40
41#format        = omf
42format = a.out
43
44.IF $(format) == a.out
45with_x11 = yes
46#debug = yes
47.END
48
49
50CC	= gcc		# GCC
51
52.IF $(format) == a.out
53LINK    = gcc
54#LINK  = link386       # GCC OMF, CSet/2
55.ELSE
56LINK   = link386       # GCC OMF, CSet/2
57LFLAGS = /noig /stack:40000
58.END
59
60.IF $(with_x11) == yes
61WINX11OBJ01 = $(OBJ)/Window.o
62WINX11OBJ02 = $(OBJ)/dialogs.o
63WINX11OBJ03 = $(OBJ)/winX.o
64WINX11OBJ04 = $(OBJ)/winmap.o
65WINX11OBJ05 = $(OBJ)/winmenu.o
66WINX11OBJ06 = $(OBJ)/winmesg.o
67WINX11OBJ07 = $(OBJ)/winmisc.o
68WINX11OBJ08 = $(OBJ)/winstat.o
69WINX11OBJ09 = $(OBJ)/wintext.o
70WINX11OBJ10 = $(OBJ)/winval.o
71WINX11OBJ11 = $(OBJ)/tile.o
72X11ROOT = e:/xfree86
73WINX11CFLAGS = -DUSE_XPM -DX11_GRAPHICS \
74            -I$(X11ROOT)/include -Zmtd
75WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 -lXpm -L$(X11ROOT)/lib -lc_app
76WINX11SRC = ../win/X11/Window.c ../win/X11/dialogs.c ../win/X11/winX.c \
77       ../win/X11/winmap.c  ../win/X11/winmenu.c ../win/X11/winmesg.c \
78       ../win/X11/winmisc.c ../win/X11/winstat.c ../win/X11/wintext.c \
79       ../win/X11/winval.c tile.c
80WINX11OBJ = $(WINX11OBJ01) $(WINX11OBJ02) $(WINX11OBJ03) $(WINX11OBJ04) \
81       $(WINX11OBJ05) $(WINX11OBJ06) $(WINX11OBJ07) $(WINX11OBJ08) \
82       $(WINX11OBJ09) $(WINX11OBJ10) $(WINX11OBJ11)
83WINX11VARDAT=x11tiles pet_mark.xbm rip.xpm
84X11ECHO        = $(CMD) @echo
85.END
86
87
88
89
90MAKEB	= dmake
91CMD	= cmd /C
92AB	= $(@:B).c
93CB	= $$(@:B).c
94BEG	= $(CMD) "
95END	= "
96SEP	= &
97P	= %
98
99#
100#	Most makes execute actions automatically inside a subshell,
101#	which makes even the shell internals work ok.
102#
103
104ECHO	= $(CMD) @echo
105RM	= $(CMD) del
106CP	= $(CMD) copy
107CAT	= $(CMD) type
108
109#
110#	For those of us who have these on PC.
111#
112
113#YACC	= yacc
114#LEX	= lex
115YACC	= bison -y
116LEX	= flex
117
118#
119#	For extracting NetHack icon.
120#
121
122UUDECODE = uudecode
123
124#
125#	For people with TeX and LaTeX.
126#
127
128LATEX	= latex
129
130#
131#	If you have TOUCH, some things become slightly easier.
132#
133
134TOUCH	= touch
135
136#
137#	Standard file naming for LEX and YACC output may vary in PC
138#	installations.  These three are probably the most generally used
139#	names.
140#
141
142YTABC	= y_tab.c
143YTABH	= y_tab.h
144LEXYYC	= lexyy.c
145
146#
147#	Source tree base directory.
148#
149
150NHSRC	= \nethack
151
152#
153#	Source directories.  Makedefs hardcodes these, don't change them.
154#
155
156INCL	= $(NHSRC)\include	# NetHack include files
157DAT	= $(NHSRC)\dat		# NetHack data files
158DOC	= $(NHSRC)\doc		# NetHack documentation files
159UTIL	= $(NHSRC)\util		# Utility source
160SRC	= $(NHSRC)\src		# Main source
161WIN	= $(NHSRC)\win\tty	# Window system specific source
162WINX11	= $(NHSRC)\win\x11	# Window system specific source
163SYS	= $(NHSRC)\sys\os2	# System specific source
164SSYS	= $(NHSRC)\sys\share	# Shared system files
165WINSHARE= $(NHSRC)\win\share	# Shared system files
166
167#
168#	Modifiable directories.  Set these according to your setup and
169#	preferences.  They must all be present prior to compilation.
170#	OBJ, TEMP and GAMEDIR should all preferably be separate and,
171#	in particular, not the same as any of the source directories.
172#	Note that DMAKE may dislike drive designators in paths because
173#	it misinterprets the colon as being part of a make rule.  In that
174#	case, all directories have to reside on the same drive.
175#
176
177OBJ	= \tmp\obj		# Object files
178TEMP	= \tmp\bin		# Temporary files during make process
179GAMEDIR = \games\nh343x11	# Game directory
180PLIBP	= c:\emx\lib		# Protected mode C libraries
181RLIBP	= c:\emx\lib		# Possible real mode C libraries
182
183#
184#	The game name and description.
185#
186
187GAME	= nethack
188GAMEDES = "NetHack 3.4.3"
189
190#
191#	The uppermost two lines for MSC, the middle two for GCC, and
192#	the lowermost two for CSet/2.
193#
194#	GCC: compile only, compiler id, object format selection, warnings,
195#	include file path, debug flags, ANSI conformance.
196#
197
198CFLAGS	= -c $(GCCO) $(WARN) -I$(INCL) $(CDFLAGS) $(STDC) $(WINX11CFLAGS)
199#OPT	= -s -O -o
200OPT	= -o
201
202#
203#	Compiler warning levels.  These are really for development, so
204#	they are commented out in general distribution to save the user
205#	from masses of benign warnings.  If any problems arise, however,
206#	they may help in finding the trouble.
207#
208#	GCC: max. reasonable GCC warning levels.  Can't use -Wall, because then
209#	it would whine about all the zillions of unused declarations etc.
210#	Even with these switches you'll get a lot of warnings, but they should
211#	all be benign.
212#
213
214WARN	= #-W -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -DGCC_WARN # GCC
215
216#
217#	GCC object format selection.  The upper line for standard OS/2 OMF
218#	object format, the lower for Unix style a.out format.
219#
220
221.IF $(format) == omf
222GCCO   = -Zomf -Zsys
223.ELSE
224GCCO   =
225.END
226
227#
228#	MSC 5.1 needs the large model first pass of the compiler.
229#	Not needed for later versions.
230#
231
232BIGC	=
233
234#
235#	Unset CL to avoid troubles with conflicting switches in MSC 6.0.
236#
237
238CL	=
239
240#
241#	Prepare for a debugger.
242#
243
244.IF $(debug) == yes
245CDFLAGS =
246LDFLAGS =
247.ELSE
248CDFLAGS = -O -s
249LDFLAGS = -s
250.END
251
252#
253#	How to produce the most ANSI-like environment.
254#
255
256STDC	= -ansi		# GCC
257
258#
259#	Possible system object files required during linking.
260#
261
262.IF $(format) == omf
263SYSOBJ = $(PLIBP)\crt0.obj     $(PLIBP)\end.lib# GCC OMF
264.ELSE
265SYSOBJ	=			# MSC, GCC a.out, CSet/2
266.END
267
268#
269#	Compiler library selection.  Change if necessary.
270#
271#	GCC emx 0.9 OMF: C single-threaded libs, Unix system call alias lib,
272#	extra GCC lib, single threaded system lib, OS/2 API entry points.
273#	Note that emx changed library naming convention between 0.8 and 0.9.
274#
275#	GCC a.out: extra GCC lib, C standard lib, extra GCC lib (again),
276#	OS/2 API entry points.
277#
278
279.IF $(format) == omf
280PLIBS  = $(PLIBP)\st\c $(PLIBP)\st\c_app $(PLIBP)\c_alias $(PLIBP)\gcc $(PLIBP)\st\sys $(PLIBP)\os2    # GCC emx 0.9 OMF
281.ELSE
282PLIBS  = -lgcc -lc -lgcc -los2 $(X11LIBS)      # GCC a.out
283.END
284
285#
286#	C libraries used by makedefs, lev_comp and dgn_comp (change if
287#	necessary).  If compilation is done in DOS, enable the upper line
288#	possibly setting the library name to something else, if in OS/2,
289#	enable the lower line (protected mode libraries).
290#
291
292#RLIBS	= $(RLIBP)\llibcer
293RLIBS	= $(PLIBS)
294
295SRCCC	= $(CC) $(CFLAGS) $(OPT) $@ $(AB)
296UTILCC	= $(BEG) cd $(UTIL) $(SEP) $(CC) $(CFLAGS) $(OPT) $@ $(AB) $(END)
297SYSCC	= $(BEG) cd $(SYS) $(SEP) $(CC) $(CFLAGS) $(OPT) $@ $(AB) $(END)
298SSYSCC	= $(BEG) cd $(SSYS) $(SEP) $(CC) $(CFLAGS) $(OPT) $@ $(AB) $(END)
299PSYSCC	= $(BEG) cd $(SSYS) $(SEP) $(CC) $(CFLAGS) $(OPT) $@ pc$(AB) $(END)
300WINCC	= $(BEG) cd $(WIN) $(SEP) $(CC) $(CFLAGS) $(OPT) $@ $(AB) $(END)
301
302#
303#	Default linker skeletons.  The upper six lines for everything
304#	that uses standard OS/2 object format (GCC OMF),  The lower six
305#	for GCC a.out format.
306#
307
308.IF $(format) == omf
309GAMELN = $(LINK) @$(TEMP)\$(GAME).rsp
310MKDFLN = $(LINK) @$(TEMP)\makedefs.rsp
311LEVCLN = $(LINK) @$(TEMP)\lev_comp.rsp
312DGNCLN = $(LINK) @$(TEMP)\dgn_comp.rsp
313RCVRLN = $(LINK) @$(TEMP)\recover.rsp
314DLBRLN = $(LINK) @$(TEMP)\dlb.rsp
315.ELSE
316GAMELN = $(CC) $(LDFLAGS) -o $(GAMEDIR)\$(GAME).exe @$(TEMP)\$(GAME).r $(PLIBS) $(WINX11CFLAGS) $(WINX11LIB)
317MKDFLN	= $(CC) $(LDFLAGS) -o $(TEMP)\makedefs.exe $(TEMP)\$(MKDFDEF) $(SYSOBJ) $(MAKEOBJS) $(PLIBS)
318LEVCLN	= $(CC) $(LDFLAGS) -o $(TEMP)\lev_comp.exe $(TEMP)\$(LEVCDEF) $(SYSOBJ) $(SPLEVOBJS) $(PLIBS)
319DGNCLN	= $(CC) $(LDFLAGS) -o $(TEMP)\dgn_comp.exe $(TEMP)\$(DGNCDEF) $(SYSOBJ) $(DGNCOMPOBJS) $(PLIBS)
320RCVRLN	= $(CC) $(LDFLAGS) -o $(GAMEDIR)\recover.exe $(TEMP)\$(RCVRDEF) $(SYSOBJ) $(RECOVOBJS) $(PLIBS)
321 DLBRLN = $(CC) $(LDFLAGS) -o $(TEMP)\dlb.exe $(TEMP)\$(DLBDEF) $(SYSOBJ) $(DLBOBJS) $(PLIBS)
322.END
323
324#
325#	OS/2 module definition files for NetHack,
326#	makedefs, dgn_comp, lev_comp, recover, dlb.
327#
328
329GAMEDEF	= $(GAME).def
330MKDFDEF	= makedefs.def
331LEVCDEF	= lev_comp.def
332DGNCDEF	= dgn_comp.def
333RCVRDEF	= recover.def
334DLBDEF	= dlb.def
335
336#
337#	For compilation in DOS, enable the lower three lines and
338#	disable the upper three.
339#
340
341MKDFMD	= $(TEMP)\$(MKDFDEF)
342LEVCMD	= $(TEMP)\$(LEVCDEF)
343DGNCMD	= $(TEMP)\$(DGNCDEF)
344#MKDFMD	=
345#LEVCMD	=
346#DGNCMD	=
347
348#
349#	Optional high-quality BSD random number generation routines
350#	(see os2conf.h).  Set to nothing if not used.
351#
352
353RANDOM	= $(OBJ)\random.o
354#RANDOM	=
355
356#
357#	If TERMLIB is defined in os2conf.h, comment out the upper line and
358#	uncomment the lower.  If the termcap-library doesn't exist, use
359#	sys\share\makefile.lib to build it.
360#
361
362TERMLIB =
363#TERMLIB = termlib.lib
364
365#
366#	Short / long file name selection for FAT and HPFS.
367#	Only three files need consideration.
368#
369
370#GUIDEBOO = Guideboo	# FAT
371#PATCHLEV = patchlev	# - " -
372#DATABASE = data.bas	# - " -
373GUIDEBOO = Guidebook	# HPFS
374PATCHLEV = patchlevel	# - " -
375DATABASE = data.base	# - " -
376
377
378#
379#	If you have LaTeX and want to create the NetHack Guidebook in TeX
380#	device-independent file format, comment out the upper line and
381#	uncomment the lower.
382#
383
384GUIDE	=
385#GUIDE	= $(TEMP)\$(GUIDEBOO).dvi
386
387#
388#	Set WINOBJ lines corresponding to your desired combination
389#	of windowing systems.  Also set windowing systems in config.h.
390#
391#	A straight tty port using no native windowing system is the
392#	only choice for now.
393#
394
395WINOBJ1 = $(OBJ)\getline.o
396WINOBJ2 = $(OBJ)\termcap.o
397WINOBJ3 = $(OBJ)\topl.o
398WINOBJ4 = $(OBJ)\wintty.o
399WINOBJ = $(WINOBJ1) $(WINOBJ2) $(WINOBJ3) $(WINOBJ4) $(WINX11OBJ)
400
401#
402#	The default make target, so just typing 'make' is useful.
403#	Has to be the first target in the makefile.
404#
405
406default : all
407
408#
409#	If you have yacc and lex programs and make any changes, uncomment
410#	the lowermost two lines and comment out the others.  If you make
411#	changes to the .y and .l files but prefer processing the files
412#	separately elsewhere, activate the middle two lines, so your changes
413#	don't get overwritten.
414#
415
416do_yacc : yacc_cpy	# use pre-generated files
417do_lex :  lex_cpy	#	- " -
418#do_yacc : yacc_msg	# show message if changed
419#do_lex :  lex_msg	#	- " -
420#do_yacc : yacc_act	# re-process files
421#do_lex :  lex_act	#	- " -
422
423#
424#	If you have the TOUCH utility the upper line is ok.  Otherwise
425#	the lower one does the same albeit in an ugly manner.  Besides,
426#	the latter method only works for text files.
427#
428
429#do_touch : realtouch
430do_touch : faketouch
431
432#
433#	If you don't have uudecode program, use the upper line.
434#	If you still want the icon, you'll have to extract the
435#	file manually somewhere else.
436#
437
438do_icon : icon_msg	# show message if changed
439#do_icon : icon_act	# extract icon file
440
441#
442#	If you don't want to generate nethack.cmd, use the upper line.
443#	This could be the case, e.g., if you use a different shell than
444#	the standard cmd.exe.
445#
446
447#do_cmd : cmd_msg	# show message
448do_cmd : cmd_act	# generate nethack.cmd
449
450#
451#	If you want to try the data librarian scheme to reduce
452#	the amount of data files in the NetHack home directory, comment
453#	out the lower line and uncomment the upper.  Also, make sure
454#	that DLB is defined in config.h.
455#
456
457do_dlb : dlb_yup
458#do_dlb : dlb_nope
459
460######################################################################
461#
462#	Nothing below this line should have to be changed.
463#
464#	Other things that have to be reconfigured are in
465#	config.h, os2conf.h and possibly system.h.
466#
467
468#
469#	The game filename.
470#
471
472GAMEFILE = $(GAMEDIR)\$(GAME).exe
473
474#
475#	Object files for makedefs.
476#
477
478MAKEOBJS = $(OBJ)\makedefs.o $(OBJ)\monst.o $(OBJ)\objects.o
479
480#
481#	Object files for special levels compiler.
482#
483
484SOBJ01	= $(OBJ)\lev_yacc.o $(OBJ)\lev_lex.o $(OBJ)\lev_main.o $(OBJ)\alloc.o
485SOBJ02	= $(OBJ)\monst.o $(OBJ)\objects.o $(OBJ)\panic.o $(OBJ)\decl.o
486SOBJ03	= $(OBJ)\drawing.o
487
488SPLEVOBJS = $(SOBJ01) $(SOBJ02) $(SOBJ03)
489
490#
491#	Object files for dungeon compiler.
492#
493
494DOBJ01	= $(OBJ)\dgn_yacc.o $(OBJ)\dgn_lex.o $(OBJ)\dgn_main.o
495DOBJ02	= $(OBJ)\panic.o $(OBJ)\alloc.o
496
497DGNCOMPOBJS = $(DOBJ01) $(DOBJ02)
498
499#
500#	Object files for recovery utility.
501#
502
503RECOVOBJS = $(OBJ)\recover.o
504
505#
506#	Object files for dlb.
507#
508
509DLBOBJS = $(OBJ)\dlb_main.o $(OBJ)\dlb.o $(OBJ)\alloc.o $(OBJ)\panic.o
510
511#
512#	Data files for dlb.
513#
514
515DATHELP = \
516 help hh cmdhelp history opthelp wizhelp
517
518SPEC_LEVS = \
519 asmodeus.lev baalz.lev    bigrm-1.lev \
520 bigrm-2.lev  bigrm-3.lev  bigrm-4.lev castle.lev   fakewiz1.lev fakewiz2.lev \
521 juiblex.lev  knox.lev     medusa-1.lev medusa-2.lev minend-1.lev minend-2.lev \
522 minend-3.lev minefill.lev minetn-1.lev minetn-2.lev minetn-3.lev minetn-4.lev \
523 minetn-5.lev minetn-6.lev minetn-7.lev oracle.lev   orcus.lev    sanctum.lev \
524 tower1.lev   tower2.lev   tower3.lev valley.lev   wizard1.lev  wizard2.lev \
525 wizard3.lev  astral.lev   air.lev earth.lev    fire.lev     water.lev \
526 soko1-1.lev  soko1-2.lev  soko2-1.lev  soko2-2.lev  \
527 soko3-1.lev  soko3-2.lev  soko4-1.lev  soko4-2.lev
528
529QUEST_LEVS = \
530 Arc-goal.lev Arc-fila.lev Arc-filb.lev Arc-loca.lev Arc-strt.lev \
531 Bar-goal.lev Bar-fila.lev Bar-filb.lev Bar-loca.lev Bar-strt.lev \
532 Cav-goal.lev Cav-fila.lev Cav-filb.lev Cav-loca.lev Cav-strt.lev \
533 Hea-goal.lev Hea-fila.lev Hea-filb.lev Hea-loca.lev Hea-strt.lev \
534 Kni-goal.lev Kni-fila.lev Kni-filb.lev Kni-loca.lev Kni-strt.lev \
535 Mon-goal.lev Mon-fila.lev Mon-filb.lev Mon-loca.lev Mon-strt.lev \
536 Pri-goal.lev Pri-fila.lev Pri-filb.lev Pri-loca.lev Pri-strt.lev \
537 Ran-goal.lev Ran-fila.lev Ran-filb.lev Ran-loca.lev Ran-strt.lev \
538 Rog-goal.lev Rog-fila.lev Rog-filb.lev Rog-loca.lev Rog-strt.lev \
539 Sam-goal.lev Sam-fila.lev Sam-filb.lev Sam-loca.lev Sam-strt.lev \
540 Tou-goal.lev Tou-fila.lev Tou-filb.lev Tou-loca.lev Tou-strt.lev \
541 Val-goal.lev Val-fila.lev Val-filb.lev Val-loca.lev Val-strt.lev \
542 Wiz-goal.lev Wiz-fila.lev Wiz-filb.lev Wiz-loca.lev Wiz-strt.lev
543VARDATD = \
544 data oracles options quest.dat rumors $(WINX11VARDAT)
545
546DATDLB = $(DATHELP) dungeon $(SPEC_LEVS) $(QUEST_LEVS) $(VARDATD) \
547	 $(do_dlb)
548
549#
550#	Object files for the game itself.
551#
552
553VOBJ011 = $(OBJ)\allmain.o
554VOBJ012 = $(OBJ)\alloc.o
555VOBJ013 = $(OBJ)\apply.o
556VOBJ014 = $(OBJ)\artifact.o
557VOBJ021 = $(OBJ)\attrib.o
558VOBJ022 = $(OBJ)\ball.o
559VOBJ023 = $(OBJ)\bones.o
560VOBJ024 = $(OBJ)\botl.o
561VOBJ031 = $(OBJ)\cmd.o
562VOBJ032 = $(OBJ)\dbridge.o
563VOBJ033 = $(OBJ)\decl.o
564VOBJ034 = $(OBJ)\detect.o
565VOBJ041 = $(OBJ)\dig.o
566VOBJ042 = $(OBJ)\display.o
567VOBJ043 = $(OBJ)\dlb.o
568VOBJ044 = $(OBJ)\do.o
569VOBJ051 = $(OBJ)\do_name.o
570VOBJ052 = $(OBJ)\do_wear.o
571VOBJ053 = $(OBJ)\dog.o
572VOBJ054 = $(OBJ)\dogmove.o
573VOBJ061 = $(OBJ)\dokick.o
574VOBJ062 = $(OBJ)\dothrow.o
575VOBJ063 = $(OBJ)\drawing.o
576VOBJ064 = $(OBJ)\dungeon.o
577VOBJ071 = $(OBJ)\eat.o
578VOBJ072 = $(OBJ)\end.o
579VOBJ073 = $(OBJ)\engrave.o
580VOBJ074 = $(OBJ)\exper.o
581VOBJ071 = $(OBJ)\eat.o
582VOBJ072 = $(OBJ)\end.o
583VOBJ073 = $(OBJ)\engrave.o
584VOBJ074 = $(OBJ)\exper.o
585VOBJ081 = $(OBJ)\explode.o
586VOBJ082 = $(OBJ)\extralev.o
587VOBJ083 = $(OBJ)\files.o
588VOBJ084 = $(OBJ)\fountain.o
589VOBJ091 = $(OBJ)\hack.o
590VOBJ092 = $(OBJ)\hacklib.o
591VOBJ093 = $(OBJ)\invent.o
592VOBJ094 = $(OBJ)\light.o
593VOBJ101 = $(OBJ)\lock.o
594VOBJ102 = $(OBJ)\mail.o
595VOBJ103 = $(OBJ)\main.o
596VOBJ104 = $(OBJ)\makemon.o
597VOBJ111 = $(OBJ)\mapglyph.o
598VOBJ112 = $(OBJ)\mcastu.o
599VOBJ113 = $(OBJ)\mhitm.o
600VOBJ114 = $(OBJ)\mhitu.o
601VOBJ115 = $(OBJ)\minion.o
602VOBJ121 = $(OBJ)\mklev.o
603VOBJ122 = $(OBJ)\mkmap.o
604VOBJ123 = $(OBJ)\mkmaze.o
605VOBJ124 = $(OBJ)\mkobj.o
606VOBJ131 = $(OBJ)\mkroom.o
607VOBJ132 = $(OBJ)\mon.o
608VOBJ133 = $(OBJ)\mondata.o
609VOBJ134 = $(OBJ)\monmove.o
610VOBJ141 = $(OBJ)\monst.o
611VOBJ142 = $(OBJ)\monstr.o
612VOBJ143 = $(OBJ)\mplayer.o
613VOBJ144 = $(OBJ)\mthrowu.o
614VOBJ151 = $(OBJ)\muse.o
615VOBJ152 = $(OBJ)\music.o
616VOBJ153 = $(OBJ)\o_init.o
617VOBJ154 = $(OBJ)\objects.o
618VOBJ161 = $(OBJ)\objnam.o
619VOBJ162 = $(OBJ)\options.o
620VOBJ163 = $(OBJ)\os2.o
621VOBJ164 = $(OBJ)\pager.o
622VOBJ171 = $(OBJ)\pcsys.o
623VOBJ172 = $(OBJ)\pickup.o
624VOBJ173 = $(OBJ)\pline.o
625VOBJ174 = $(OBJ)\polyself.o
626VOBJ181 = $(OBJ)\potion.o
627VOBJ182 = $(OBJ)\pray.o
628VOBJ183 = $(OBJ)\priest.o
629VOBJ184 = $(OBJ)\quest.o
630VOBJ191 = $(OBJ)\questpgr.o
631VOBJ192 = $(OBJ)\read.o
632VOBJ193 = $(OBJ)\rect.o
633VOBJ194 = $(OBJ)\region.o
634VOBJ195 = $(OBJ)\restore.o
635VOBJ201 = $(OBJ)\rip.o
636VOBJ202 = $(OBJ)\rnd.o
637VOBJ203 = $(OBJ)\rumors.o
638VOBJ204 = $(OBJ)\save.o
639VOBJ211 = $(OBJ)\shk.o
640VOBJ212 = $(OBJ)\shknam.o
641VOBJ213 = $(OBJ)\sit.o
642VOBJ214 = $(OBJ)\sounds.o
643VOBJ221 = $(OBJ)\sp_lev.o
644VOBJ222 = $(OBJ)\spell.o
645VOBJ223 = $(OBJ)\steal.o
646VOBJ224 = $(OBJ)\teleport.o
647VOBJ231 = $(OBJ)\timeout.o
648VOBJ232 = $(OBJ)\topten.o
649VOBJ233 = $(OBJ)\track.o
650VOBJ234 = $(OBJ)\trap.o
651VOBJ241 = $(OBJ)\tty.o
652VOBJ242 = $(OBJ)\u_init.o
653VOBJ243 = $(OBJ)\uhitm.o
654VOBJ244 = $(OBJ)\unix.o
655VOBJ251 = $(OBJ)\vault.o
656VOBJ252 = $(OBJ)\vision.o
657VOBJ253 = $(OBJ)\vis_tab.o
658VOBJ254 = $(OBJ)\weapon.o
659VOBJ261 = $(OBJ)\were.o
660VOBJ262 = $(OBJ)\wield.o
661VOBJ263 = $(OBJ)\windows.o
662VOBJ264 = $(OBJ)\wizard.o
663VOBJ271 = $(OBJ)\worm.o
664VOBJ272 = $(OBJ)\worn.o
665VOBJ273 = $(OBJ)\write.o
666VOBJ274 = $(OBJ)\zap.o
667VOBJ281 = $(OBJ)\role.o
668VOBJ282 = $(OBJ)\steed.o
669
670VOBJ01 = $(VOBJ011) $(VOBJ012) $(VOBJ013) $(VOBJ014)
671VOBJ02 = $(VOBJ021) $(VOBJ022) $(VOBJ023) $(VOBJ024)
672VOBJ03 = $(VOBJ031) $(VOBJ032) $(VOBJ033) $(VOBJ034)
673VOBJ04 = $(VOBJ041) $(VOBJ042) $(VOBJ043) $(VOBJ044)
674VOBJ05 = $(VOBJ051) $(VOBJ052) $(VOBJ053) $(VOBJ054)
675VOBJ06 = $(VOBJ061) $(VOBJ062) $(VOBJ063) $(VOBJ064)
676VOBJ07 = $(VOBJ071) $(VOBJ072) $(VOBJ073) $(VOBJ074)
677VOBJ08 = $(VOBJ081) $(VOBJ082) $(VOBJ083) $(VOBJ084)
678VOBJ09 = $(VOBJ091) $(VOBJ092) $(VOBJ093) $(VOBJ094)
679VOBJ10 = $(VOBJ101) $(VOBJ102) $(VOBJ103) $(VOBJ104)
680VOBJ11 = $(VOBJ111) $(VOBJ112) $(VOBJ113) $(VOBJ114) $(VOBJ115)
681VOBJ12 = $(VOBJ121) $(VOBJ122) $(VOBJ123) $(VOBJ124)
682VOBJ13 = $(VOBJ131) $(VOBJ132) $(VOBJ133) $(VOBJ134)
683VOBJ14 = $(VOBJ141) $(VOBJ142) $(VOBJ143) $(VOBJ144)
684VOBJ15 = $(VOBJ151) $(VOBJ152) $(VOBJ153) $(VOBJ154)
685VOBJ16 = $(VOBJ161) $(VOBJ162) $(VOBJ163) $(VOBJ164)
686VOBJ17 = $(VOBJ171) $(VOBJ172) $(VOBJ173) $(VOBJ174)
687VOBJ18 = $(VOBJ181) $(VOBJ182) $(VOBJ183) $(VOBJ184)
688VOBJ19 = $(VOBJ191) $(VOBJ192) $(VOBJ193) $(VOBJ194) $(VOBJ195)
689VOBJ20 = $(VOBJ201) $(VOBJ202) $(VOBJ203) $(VOBJ204)
690VOBJ21 = $(VOBJ211) $(VOBJ212) $(VOBJ213) $(VOBJ214)
691VOBJ22 = $(VOBJ221) $(VOBJ222) $(VOBJ223) $(VOBJ224)
692VOBJ23 = $(VOBJ231) $(VOBJ232) $(VOBJ233) $(VOBJ234)
693VOBJ24 = $(VOBJ241) $(VOBJ242) $(VOBJ243) $(VOBJ244)
694VOBJ25 = $(VOBJ251) $(VOBJ252) $(VOBJ253) $(VOBJ254)
695VOBJ26 = $(VOBJ261) $(VOBJ262) $(VOBJ263) $(VOBJ264)
696VOBJ27 = $(VOBJ271) $(VOBJ272) $(VOBJ273) $(VOBJ274)
697VOBJ28 = $(VOBJ281) $(VOBJ282)
698VOBJ29 = $(WINOBJ) $(RANDOM)
699HHOBJ  = $(OBJ)\version.o
700
701VOBJ =	 $(VOBJ01)  $(VOBJ02)  $(VOBJ03)  $(VOBJ04)  $(VOBJ05)  $(VOBJ06)  $(VOBJ07) \
702	 $(VOBJ08)  $(VOBJ09)  $(VOBJ10)  $(VOBJ11)  $(VOBJ12)  $(VOBJ13)  $(VOBJ14) \
703	 $(VOBJ15)  $(VOBJ16)  $(VOBJ17)  $(VOBJ18)  $(VOBJ19)  $(VOBJ20)  $(VOBJ21) \
704	 $(VOBJ22)  $(VOBJ23)  $(VOBJ24)  $(VOBJ25)  $(VOBJ26)  $(VOBJ27)  $(VOBJ28) \
705	 $(VOBJ29)
706HOBJ =	 $(VOBJ)  $(HHOBJ)
707
708EXTERN_H   = # $(INCL)\extern.h
709OS2CONF_H  = $(INCL)\os2conf.h $(INCL)\micro.h $(INCL)\system.h $(EXTERN_H)
710GLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(OS2CONF_H)
711CONFIG_H   = $(INCL)\config.h $(INCL)\config1.h $(INCL)\tradstdc.h $(GLOBAL_H)
712TRAP_H	   = $(INCL)\trap.h
713PERMONST_H = $(INCL)\permonst.h $(INCL)\monattk.h $(INCL)\monflag.h
714YOU_H	   = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
715	     $(INCL)\monst.h $(INCL)\youprop.h $(INCL)\prop.h $(INCL)\pm.h
716DECL_H	   = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \
717	     $(INCL)\onames.h $(INCL)\color.h
718HACK_H	   = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
719	     $(INCL)\objclass.h $(TRAP_H) $(INCL)\engrave.h $(INCL)\flag.h \
720	     $(INCL)\rm.h $(INCL)\dungeon.h $(INCL)\hack.h $(INCL)\display.h \
721	     $(INCL)\vision.h $(INCL)\wintty.h $(INCL)\wintype.h $(INCL)\align.h \
722	     $(INCL)\winprocs.h
723
724#
725#	The default target.
726#
727
728all :	makedefs dgn_comp lev_comp recover $(GAME) dat $(GUIDE)
729	$(ECHO) Done.
730
731#
732#	Definition file creation.
733#
734
735$(TEMP)\$(GAMEDEF) :
736	$(MAKEB) DD_NAME=$(GAME) DD_DESC=$(GAMEDES) DD_TARG=$@ do_def
737$(TEMP)\$(MKDFDEF) :
738	$(MAKEB) DD_NAME=makedefs DD_DESC="Definitions compiler" DD_TARG=$@ do_def
739$(TEMP)\$(DGNCDEF) :
740	$(MAKEB) DD_NAME=dgn_comp DD_DESC="Dungeon compiler" DD_TARG=$@ do_def
741$(TEMP)\$(LEVCDEF) :
742	$(MAKEB) DD_NAME=lev_comp DD_DESC="Level compiler" DD_TARG=$@ do_def
743$(TEMP)\$(RCVRDEF) :
744	$(MAKEB) DD_NAME=recover DD_DESC="Recovery utility" DD_TARG=$@ do_def
745$(TEMP)\$(DLBDEF) :
746	$(MAKEB) DD_NAME=dlb DD_DESC="Archive utility" DD_TARG=$@ do_def
747
748do_def :
749	$(ECHO) NAME $(DD_NAME) WINDOWCOMPAT> $(DD_TARG)
750	$(ECHO) DESCRIPTION '$(DD_DESC)'>> $(DD_TARG)
751	$(ECHO) PROTMODE>> $(DD_TARG)
752	$(ECHO) EXETYPE OS2>> $(DD_TARG)
753
754#
755#	The main target.
756#
757
758$(GAME) : $(GAMEDIR)\$(GAME).exe
759$(GAME).exe : $(GAMEDIR)\$(GAME).exe
760$(GAMEDIR)\$(GAME).exe : $(TEMP)\$(GAME).rsp $(TEMP)\$(GAME).r
761	$(GAMELN)
762
763$(TEMP)\$(GAME).r : $(HOBJ) $(TEMP)\$(GAMEDEF)
764	$(ECHO) $(VOBJ011) > $@
765	$(ECHO) $(VOBJ012) >> $@
766	$(ECHO) $(VOBJ013) >> $@
767	$(ECHO) $(VOBJ014) >> $@
768	$(ECHO) $(VOBJ021) >> $@
769	$(ECHO) $(VOBJ022) >> $@
770	$(ECHO) $(VOBJ023) >> $@
771	$(ECHO) $(VOBJ024) >> $@
772	$(ECHO) $(VOBJ031) >> $@
773	$(ECHO) $(VOBJ032) >> $@
774	$(ECHO) $(VOBJ033) >> $@
775	$(ECHO) $(VOBJ034) >> $@
776	$(ECHO) $(VOBJ041) >> $@
777	$(ECHO) $(VOBJ042) >> $@
778	$(ECHO) $(VOBJ043) >> $@
779	$(ECHO) $(VOBJ044) >> $@
780	$(ECHO) $(VOBJ051) >> $@
781	$(ECHO) $(VOBJ052) >> $@
782	$(ECHO) $(VOBJ053) >> $@
783	$(ECHO) $(VOBJ054) >> $@
784	$(ECHO) $(VOBJ061) >> $@
785	$(ECHO) $(VOBJ062) >> $@
786	$(ECHO) $(VOBJ063) >> $@
787	$(ECHO) $(VOBJ064) >> $@
788	$(ECHO) $(VOBJ071) >> $@
789	$(ECHO) $(VOBJ072) >> $@
790	$(ECHO) $(VOBJ073) >> $@
791	$(ECHO) $(VOBJ074) >> $@
792	$(ECHO) $(VOBJ081) >> $@
793	$(ECHO) $(VOBJ082) >> $@
794	$(ECHO) $(VOBJ083) >> $@
795	$(ECHO) $(VOBJ084) >> $@
796	$(ECHO) $(VOBJ091) >> $@
797	$(ECHO) $(VOBJ092) >> $@
798	$(ECHO) $(VOBJ093) >> $@
799	$(ECHO) $(VOBJ094) >> $@
800	$(ECHO) $(VOBJ101) >> $@
801	$(ECHO) $(VOBJ102) >> $@
802	$(ECHO) $(VOBJ103) >> $@
803	$(ECHO) $(VOBJ104) >> $@
804	$(ECHO) $(VOBJ111) >> $@
805	$(ECHO) $(VOBJ112) >> $@
806	$(ECHO) $(VOBJ113) >> $@
807	$(ECHO) $(VOBJ114) >> $@
808	$(ECHO) $(VOBJ115) >> $@
809	$(ECHO) $(VOBJ121) >> $@
810	$(ECHO) $(VOBJ122) >> $@
811	$(ECHO) $(VOBJ123) >> $@
812	$(ECHO) $(VOBJ124) >> $@
813	$(ECHO) $(VOBJ131) >> $@
814	$(ECHO) $(VOBJ132) >> $@
815	$(ECHO) $(VOBJ133) >> $@
816	$(ECHO) $(VOBJ134) >> $@
817	$(ECHO) $(VOBJ141) >> $@
818	$(ECHO) $(VOBJ142) >> $@
819	$(ECHO) $(VOBJ143) >> $@
820	$(ECHO) $(VOBJ144) >> $@
821	$(ECHO) $(VOBJ151) >> $@
822	$(ECHO) $(VOBJ152) >> $@
823	$(ECHO) $(VOBJ153) >> $@
824	$(ECHO) $(VOBJ154) >> $@
825	$(ECHO) $(VOBJ161) >> $@
826	$(ECHO) $(VOBJ162) >> $@
827	$(ECHO) $(VOBJ163) >> $@
828	$(ECHO) $(VOBJ164) >> $@
829	$(ECHO) $(VOBJ171) >> $@
830	$(ECHO) $(VOBJ172) >> $@
831	$(ECHO) $(VOBJ173) >> $@
832	$(ECHO) $(VOBJ174) >> $@
833	$(ECHO) $(VOBJ181) >> $@
834	$(ECHO) $(VOBJ182) >> $@
835	$(ECHO) $(VOBJ183) >> $@
836	$(ECHO) $(VOBJ184) >> $@
837	$(ECHO) $(VOBJ191) >> $@
838	$(ECHO) $(VOBJ192) >> $@
839	$(ECHO) $(VOBJ193) >> $@
840	$(ECHO) $(VOBJ194) >> $@
841	$(ECHO) $(VOBJ195) >> $@
842	$(ECHO) $(VOBJ201) >> $@
843	$(ECHO) $(VOBJ202) >> $@
844	$(ECHO) $(VOBJ203) >> $@
845	$(ECHO) $(VOBJ204) >> $@
846	$(ECHO) $(VOBJ211) >> $@
847	$(ECHO) $(VOBJ212) >> $@
848	$(ECHO) $(VOBJ213) >> $@
849	$(ECHO) $(VOBJ214) >> $@
850	$(ECHO) $(VOBJ221) >> $@
851	$(ECHO) $(VOBJ222) >> $@
852	$(ECHO) $(VOBJ223) >> $@
853	$(ECHO) $(VOBJ224) >> $@
854	$(ECHO) $(VOBJ231) >> $@
855	$(ECHO) $(VOBJ232) >> $@
856	$(ECHO) $(VOBJ233) >> $@
857	$(ECHO) $(VOBJ234) >> $@
858	$(ECHO) $(VOBJ241) >> $@
859	$(ECHO) $(VOBJ242) >> $@
860	$(ECHO) $(VOBJ243) >> $@
861	$(ECHO) $(VOBJ244) >> $@
862	$(ECHO) $(VOBJ251) >> $@
863	$(ECHO) $(VOBJ252) >> $@
864	$(ECHO) $(VOBJ253) >> $@
865	$(ECHO) $(VOBJ254) >> $@
866	$(ECHO) $(VOBJ261) >> $@
867	$(ECHO) $(VOBJ262) >> $@
868	$(ECHO) $(VOBJ263) >> $@
869	$(ECHO) $(VOBJ264) >> $@
870	$(ECHO) $(VOBJ271) >> $@
871	$(ECHO) $(VOBJ272) >> $@
872	$(ECHO) $(VOBJ273) >> $@
873	$(ECHO) $(VOBJ274) >> $@
874	$(ECHO) $(VOBJ281) >> $@
875	$(ECHO) $(VOBJ282) >> $@
876	$(ECHO) $(WINOBJ1) >> $@
877	$(ECHO) $(WINOBJ2) >> $@
878	$(ECHO) $(WINOBJ3) >> $@
879	$(ECHO) $(WINOBJ4) >> $@
880	$(ECHO) $(HHOBJ) >> $@
881	$(ECHO) $(RANDOM) >> $@
882.IF $(with_x11) == yes
883	$(X11ECHO) $(WINX11OBJ01) >> $@
884	$(X11ECHO) $(WINX11OBJ02) >> $@
885	$(X11ECHO) $(WINX11OBJ03) >> $@
886	$(X11ECHO) $(WINX11OBJ04) >> $@
887	$(X11ECHO) $(WINX11OBJ05) >> $@
888	$(X11ECHO) $(WINX11OBJ06) >> $@
889	$(X11ECHO) $(WINX11OBJ07) >> $@
890	$(X11ECHO) $(WINX11OBJ08) >> $@
891	$(X11ECHO) $(WINX11OBJ09) >> $@
892	$(X11ECHO) $(WINX11OBJ10) >> $@
893	$(X11ECHO) $(WINX11OBJ11) >> $@
894.END
895
896
897
898$(TEMP)\$(GAME).rsp : $(HOBJ) $(TEMP)\$(GAMEDEF)
899	$(ECHO) $(SYSOBJ) $(VOBJ01) +> $@
900	$(ECHO) $(VOBJ02) +>> $@
901	$(ECHO) $(VOBJ03) +>> $@
902	$(ECHO) $(VOBJ04) +>> $@
903	$(ECHO) $(VOBJ05) +>> $@
904	$(ECHO) $(VOBJ06) +>> $@
905	$(ECHO) $(VOBJ07) +>> $@
906	$(ECHO) $(VOBJ08) +>> $@
907	$(ECHO) $(VOBJ09) +>> $@
908	$(ECHO) $(VOBJ10) +>> $@
909	$(ECHO) $(VOBJ11) +>> $@
910	$(ECHO) $(VOBJ12) +>> $@
911	$(ECHO) $(VOBJ13) +>> $@
912	$(ECHO) $(VOBJ14) +>> $@
913	$(ECHO) $(VOBJ15) +>> $@
914	$(ECHO) $(VOBJ16) +>> $@
915	$(ECHO) $(VOBJ17) +>> $@
916	$(ECHO) $(VOBJ18) +>> $@
917	$(ECHO) $(VOBJ19) +>> $@
918	$(ECHO) $(VOBJ20) +>> $@
919	$(ECHO) $(VOBJ21) +>> $@
920	$(ECHO) $(VOBJ22) +>> $@
921	$(ECHO) $(VOBJ23) +>> $@
922	$(ECHO) $(VOBJ24) +>> $@
923	$(ECHO) $(VOBJ25) +>> $@
924	$(ECHO) $(VOBJ26) +>> $@
925	$(ECHO) $(VOBJ27) +>> $@
926	$(ECHO) $(VOBJ28) +>> $@
927	$(ECHO) $(VOBJ29) +>> $@
928	$(ECHO) $(VOBJ30) +>> $@
929	$(ECHO) $(HHOBJ)>> $@
930	$(ECHO) $(GAMEDIR)\$(GAME).exe>> $@
931	$(ECHO) $(TEMP)\$(GAME)>> $@
932	$(ECHO) $(PLIBS) $(TERMLIB)>> $@
933	$(ECHO) $(TEMP)\$(GAMEDEF) $(LFLAGS);>> $@
934
935#
936#	Targets for makedefs.
937#
938
939makedefs : $(TEMP)\makedefs.exe
940$(TEMP)\makedefs.exe : $(TEMP)\makedefs.rsp
941	$(MKDFLN)
942
943$(TEMP)\makedefs.rsp : $(MAKEOBJS) $(TEMP)\$(MKDFDEF)
944	$(ECHO) $(SYSOBJ) $(MAKEOBJS)> $@
945	$(ECHO) $(TEMP)\makedefs.exe>> $@
946	$(ECHO) nul>> $@
947	$(ECHO) $(RLIBS)>> $@
948	$(ECHO) $(MKDFMD) $(LFLAGS);>> $@
949
950$(OBJ)\makedefs.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\permonst.h $(INCL)\objclass.h \
951		    $(INCL)\monsym.h $(INCL)\artilist.h $(INCL)\qtext.h
952	$(UTILCC)
953
954#
955#	Targets for the special levels compiler.
956#
957
958lev_comp : $(TEMP)\lev_comp.exe
959$(TEMP)\lev_comp.exe : $(TEMP)\lev_comp.rsp
960	$(LEVCLN)
961
962$(TEMP)\lev_comp.rsp : $(SPLEVOBJS) $(TEMP)\$(LEVCDEF)
963	$(ECHO) $(SYSOBJ) $(SOBJ01) +> $@
964	$(ECHO) $(SOBJ02) +>> $@
965	$(ECHO) $(SOBJ03)>> $@
966	$(ECHO) $(TEMP)\lev_comp.exe>> $@
967	$(ECHO) nul>> $@
968	$(ECHO) $(RLIBS)>> $@
969	$(ECHO) $(LEVCMD) $(LFLAGS);>> $@
970
971$(OBJ)\lev_yacc.o : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h
972	$(UTILCC)
973$(OBJ)\lev_lex.o  : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\lev_comp.h
974	$(UTILCC)
975$(OBJ)\lev_main.o : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\tcap.h
976	$(UTILCC)
977
978$(UTIL)\lev_yacc.c : $(UTIL)\lev_comp.y
979	$(MAKEB) YY=lev do_yacc
980
981$(UTIL)\lev_lex.c  : $(UTIL)\lev_comp.l
982	$(MAKEB) YY=lev do_lex
983
984#
985#	Targets for the dungeon compiler.
986#
987
988dgn_comp : $(TEMP)\dgn_comp.exe
989$(TEMP)\dgn_comp.exe : $(TEMP)\dgn_comp.rsp
990	$(DGNCLN)
991
992$(TEMP)\dgn_comp.rsp : $(DGNCOMPOBJS) $(TEMP)\$(DGNCDEF)
993	$(ECHO) $(SYSOBJ) $(DOBJ01) +> $@
994	$(ECHO) $(DOBJ02)>> $@
995	$(ECHO) $(TEMP)\dgn_comp.exe>> $@
996	$(ECHO) nul>> $@
997	$(ECHO) $(RLIBS)>> $@
998	$(ECHO) $(DGNCMD) $(LFLAGS);>> $@
999
1000$(OBJ)\dgn_yacc.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\date.h $(INCL)\dgn_file.h
1001	$(UTILCC)
1002$(OBJ)\dgn_lex.o  : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\dgn_comp.h $(INCL)\dgn_file.h
1003	$(UTILCC)
1004$(OBJ)\dgn_main.o : $(UTIL)\$(CB) $(CONFIG_H)
1005	$(UTILCC)
1006
1007$(UTIL)\dgn_yacc.c : $(UTIL)\dgn_comp.y
1008	$(MAKEB) YY=dgn do_yacc
1009
1010$(UTIL)\dgn_lex.c  : $(UTIL)\dgn_comp.l
1011	$(MAKEB) YY=dgn do_lex
1012
1013#
1014#	For both lev_comp and dgn_comp.
1015#
1016
1017$(OBJ)\panic.o : $(UTIL)\$(CB) $(CONFIG_H)
1018	$(UTILCC)
1019
1020#
1021#	Yacc and Lex targets.
1022#
1023
1024yacc_cpy :
1025	$(CP) $(SSYS)\$(YY)_yacc.c $(UTIL)
1026	$(CP) $(SSYS)\$(YY)_comp.h $(INCL)
1027	$(MAKEB) TT=$(UTIL)\$(YY)_yacc.c do_touch
1028	$(MAKEB) TT=$(INCL)\$(YY)_comp.h do_touch
1029
1030yacc_msg :
1031	$(ECHO) $(YY)_comp.y has changed. To update $(YY)_yacc.c and $(YY)_comp.h run $(YACC).
1032
1033yacc_act :
1034	$(YACC) -d $(UTIL)\$(YY)_comp.y
1035	$(CP) $(YTABC) $(UTIL)\$(YY)_yacc.c
1036	$(CP) $(YTABH) $(INCL)\$(YY)_comp.h
1037	$(RM) $(YTABC)
1038	$(RM) $(YTABH)
1039
1040lex_cpy :
1041	$(CP) $(SSYS)\$(YY)_lex.c $(UTIL)
1042	$(MAKEB) TT=$(UTIL)\$(YY)_lex.c do_touch
1043
1044lex_msg :
1045	$(ECHO) $(YY)_comp.l has changed. To update $(YY)_lex.c run $(LEX).
1046
1047lex_act :
1048	$(LEX) $(UTIL)\$(YY)_comp.l
1049	$(CP) $(LEXYYC) $(UTIL)\$(YY)_lex.c
1050	$(RM) $(LEXYYC)
1051
1052#
1053#	Why must this be so kludgy?
1054#
1055
1056realtouch :
1057	$(TOUCH) $(TT)
1058
1059faketouch :
1060	$(BEG) $(CAT) $(TT) > $(TEMP)\foo.bar $(SEP) $(CP) $(TEMP)\foo.bar $(TT) $(SEP) $(RM) $(TEMP)\foo.bar $(END)
1061
1062#
1063#	Targets for the recovery utility.
1064#
1065
1066recover : $(GAMEDIR)\recover.exe
1067$(GAMEDIR)\recover.exe : $(TEMP)\recover.rsp
1068	$(RCVRLN)
1069
1070$(TEMP)\recover.rsp : $(RECOVOBJS) $(TEMP)\$(RCVRDEF)
1071	$(ECHO) $(SYSOBJ) $(RECOVOBJS)> $@
1072	$(ECHO) $(GAMEDIR)\recover.exe>> $@
1073	$(ECHO) nul>> $@
1074	$(ECHO) $(PLIBS)>> $@
1075	$(ECHO) $(TEMP)\$(RCVRDEF) $(LFLAGS);>> $@
1076
1077$(OBJ)\recover.o : $(UTIL)\$(CB) $(CONFIG_H)
1078	$(UTILCC)
1079
1080#
1081#	Targets for the dlb.
1082#
1083
1084dlb : $(TEMP)\dlb.exe
1085$(TEMP)\dlb.exe : $(TEMP)\dlb.rsp
1086	$(DLBRLN)
1087
1088$(TEMP)\dlb.rsp : $(DLBOBJS) $(TEMP)\$(DLBDEF)
1089	$(ECHO) $(SYSOBJ) $(DLBOBJS)> $@
1090	$(ECHO) $(TEMP)\dlb.exe>> $@
1091	$(ECHO) nul>> $@
1092	$(ECHO) $(PLIBS)>> $@
1093	$(ECHO) $(TEMP)\$(DLBDEF) $(LFLAGS);>> $@
1094
1095$(OBJ)\dlb_main.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\dlb.h
1096	$(UTILCC)
1097
1098$(GAMEDIR)\nhdat : $(WINX11VARDAT)
1099	$(MAKEB) do_dlb
1100
1101dlb_yup : dlb
1102	$(TEMP)\dlb cCf $(GAMEDIR) $(GAMEDIR)\nhdat $(DATDLB)
1103	-$(RM) $(GAMEDIR)\help
1104	-$(RM) $(GAMEDIR)\hh
1105	-$(RM) $(GAMEDIR)\cmdhelp
1106	-$(RM) $(GAMEDIR)\history
1107	-$(RM) $(GAMEDIR)\opthelp
1108	-$(RM) $(GAMEDIR)\wizhelp
1109	-$(RM) $(GAMEDIR)\asmodeus.lev
1110	-$(RM) $(GAMEDIR)\baalz.lev
1111	-$(RM) $(GAMEDIR)\bigrm-?.lev
1112	-$(RM) $(GAMEDIR)\castle.lev
1113	-$(RM) $(GAMEDIR)\fakewiz?.lev
1114	-$(RM) $(GAMEDIR)\juiblex.lev
1115	-$(RM) $(GAMEDIR)\knox.lev
1116	-$(RM) $(GAMEDIR)\medusa-?.lev
1117	-$(RM) $(GAMEDIR)\minend-?.lev
1118	-$(RM) $(GAMEDIR)\minefill.lev
1119	-$(RM) $(GAMEDIR)\minetn-?.lev
1120	-$(RM) $(GAMEDIR)\oracle.lev
1121	-$(RM) $(GAMEDIR)\orcus.lev
1122	-$(RM) $(GAMEDIR)\sanctum.lev
1123	-$(RM) $(GAMEDIR)\tower?.lev
1124	-$(RM) $(GAMEDIR)\valley.lev
1125	-$(RM) $(GAMEDIR)\wizard?.lev
1126	-$(RM) $(GAMEDIR)\astral.lev
1127	-$(RM) $(GAMEDIR)\air.lev
1128	-$(RM) $(GAMEDIR)\earth.lev
1129	-$(RM) $(GAMEDIR)\fire.lev
1130	-$(RM) $(GAMEDIR)\water.lev
1131	-$(RM) $(GAMEDIR)\???-goal.lev
1132	-$(RM) $(GAMEDIR)\???-fil?.lev
1133	-$(RM) $(GAMEDIR)\???-loca.lev
1134	-$(RM) $(GAMEDIR)\???-strt.lev
1135	-$(RM) $(GAMEDIR)\data
1136	-$(RM) $(GAMEDIR)\oracles
1137	-$(RM) $(GAMEDIR)\options
1138	-$(RM) $(GAMEDIR)\quest.dat
1139	-$(RM) $(GAMEDIR)\rumors
1140	-$(RM) $(GAMEDIR)\dungeon
1141	-$(RM) $(GAMEDIR)\soko?-?.lev
1142#	-$(RM) $(GAMEDIR)\pet_mark.xbm
1143#	-$(RM) $(GAMEDIR)\rip.xpm
1144
1145dlb_nope :
1146	$(ECHO) DLB not requested.
1147
1148#
1149#	The following files depend on makedefs to be created.
1150#
1151#	date.h should be remade every time any of the source or include
1152#	files is modified.
1153#
1154
1155$(INCL)\date.h : $(VOBJ) $(TEMP)\makedefs.exe
1156	$(TEMP)\makedefs -v
1157	$(CP) $(DAT)\options $(GAMEDIR)
1158	$(RM) $(DAT)\options
1159
1160$(INCL)\onames.h : $(TEMP)\makedefs.exe
1161	$(TEMP)\makedefs -o
1162
1163$(INCL)\pm.h : $(TEMP)\makedefs.exe
1164	$(TEMP)\makedefs -p
1165
1166monstr.c : $(TEMP)\makedefs.exe
1167	$(TEMP)\makedefs -m
1168
1169$(OBJ)\monstr.o : $(CB)
1170	$(SRCCC)
1171
1172$(GAMEDIR)\data : $(DAT)\$(DATABASE) $(TEMP)\makedefs.exe
1173	$(TEMP)\makedefs -d
1174	$(CP) $(DAT)\data $(GAMEDIR)
1175	$(RM) $(DAT)\data
1176
1177$(GAMEDIR)\rumors : $(DAT)\rumors.tru $(DAT)\rumors.fal $(TEMP)\makedefs.exe
1178	$(TEMP)\makedefs -r
1179	$(CP) $(DAT)\rumors $(GAMEDIR)
1180	$(RM) $(DAT)\rumors
1181
1182$(GAMEDIR)\oracles : $(DAT)\oracles.txt $(TEMP)\makedefs.exe
1183	$(TEMP)\makedefs -h
1184	$(CP) $(DAT)\oracles $(GAMEDIR)
1185	$(RM) $(DAT)\oracles
1186
1187$(GAMEDIR)\quest.dat : $(DAT)\quest.txt $(TEMP)\makedefs.exe
1188	$(TEMP)\makedefs -q
1189	$(CP) $(DAT)\quest.dat $(GAMEDIR)
1190	$(RM) $(DAT)\quest.dat
1191
1192#
1193#	Vision tables for algorithm D.
1194#
1195
1196vis_tab.c : $(INCL)\vis_tab.h
1197$(INCL)\vis_tab.h : $(TEMP)\makedefs.exe
1198	$(TEMP)\makedefs -z
1199
1200$(OBJ)\vis_tab.o : $(CB)
1201	$(SRCCC)
1202
1203#
1204#	The following programs vary depending on what OS you are using.
1205#
1206
1207$(OBJ)\main.o : $(SSYS)\pc$(CB) $(HACK_H) $(INCL)\dlb.h
1208	$(PSYSCC)
1209$(OBJ)\tty.o  : $(SSYS)\pc$(CB) $(HACK_H) $(INCL)\func_tab.h
1210	$(PSYSCC)
1211$(OBJ)\unix.o : $(SSYS)\pc$(CB) $(HACK_H)
1212	$(PSYSCC)
1213
1214#
1215#	Other system specific modules.
1216#
1217
1218$(OBJ)\os2.o   : $(SYS)\$(CB) $(HACK_H) $(INCL)\tcap.h $(INCL)\def_os2.h
1219	$(SYSCC)
1220$(OBJ)\pcsys.o : $(SSYS)\$(CB) $(HACK_H)
1221	$(SSYSCC)
1222
1223#
1224#	Berkeley random(3) routines.
1225#
1226
1227$(OBJ)\random.o : $(SSYS)\$(CB)
1228	$(SSYSCC)
1229
1230#
1231#	Window source.
1232#
1233
1234$(OBJ)\getline.o : $(WIN)\$(CB) $(HACK_H) $(INCL)\func_tab.h
1235	$(WINCC)
1236$(OBJ)\termcap.o : $(WIN)\$(CB) $(HACK_H) $(INCL)\tcap.h
1237	$(WINCC)
1238$(OBJ)\topl.o    : $(WIN)\$(CB) $(HACK_H) $(INCL)\tcap.h
1239	$(WINCC)
1240$(OBJ)\wintty.o  : $(WIN)\$(CB) $(HACK_H) $(INCL)\tcap.h
1241	$(WINCC)
1242
1243#
1244#	Secondary targets.
1245#
1246
1247dat :	spec_lev help_fil $(GAMEDIR)\dungeon $(GAMEDIR)\data $(GAMEDIR)\rumors \
1248	$(GAMEDIR)\oracles $(GAMEDIR)\quest.dat	$(GAMEDIR)\$(GAME).ico \
1249	$(GAMEDIR)\$(GAME).cmd $(GAMEDIR)\nethack.cnf $(GAMEDIR)\nhdat \
1250	$(WINX11VARDAT)
1251
1252help_fil : $(GAMEDIR)\cmdhelp $(GAMEDIR)\help $(GAMEDIR)\hh $(GAMEDIR)\history \
1253	$(GAMEDIR)\license $(GAMEDIR)\opthelp $(GAMEDIR)\wizhelp
1254
1255$(GAMEDIR)\cmdhelp : $(DAT)\cmdhelp
1256	$(CP) $(DAT)\cmdhelp $(GAMEDIR)
1257$(GAMEDIR)\help : $(DAT)\help
1258	$(CP) $(DAT)\help $(GAMEDIR)
1259$(GAMEDIR)\hh : $(DAT)\hh
1260	$(CP) $(DAT)\hh $(GAMEDIR)
1261$(GAMEDIR)\history : $(DAT)\history
1262	$(CP) $(DAT)\history $(GAMEDIR)
1263$(GAMEDIR)\license : $(DAT)\license
1264	$(CP) $(DAT)\license $(GAMEDIR)
1265$(GAMEDIR)\opthelp : $(DAT)\opthelp
1266	$(CP) $(DAT)\opthelp $(GAMEDIR)
1267$(GAMEDIR)\wizhelp : $(DAT)\wizhelp
1268	$(CP) $(DAT)\wizhelp $(GAMEDIR)
1269
1270$(GAMEDIR)\dungeon : $(DAT)\dungeon.def $(TEMP)\makedefs.exe $(TEMP)\dgn_comp.exe
1271	$(TEMP)\makedefs -e
1272	$(TEMP)\dgn_comp $(DAT)\dungeon.pdf
1273	$(CP) $(DAT)\dungeon $(GAMEDIR)
1274	$(RM) $(DAT)\dungeon.pdf
1275	$(RM) $(DAT)\dungeon
1276
1277AFILES = $(GAMEDIR)\Arc-goal.lev
1278BFILES = $(GAMEDIR)\Bar-goal.lev
1279CFILES = $(GAMEDIR)\Cav-goal.lev
1280HFILES = $(GAMEDIR)\Hea-goal.lev
1281KFILES = $(GAMEDIR)\Kni-goal.lev
1282MFILES = $(GAMEDIR)\Mon-goal.lev
1283PFILES = $(GAMEDIR)\Pri-goal.lev
1284RANFILES = $(GAMEDIR)\Ran-goal.lev
1285RFILES = $(GAMEDIR)\Rog-goal.lev
1286SFILES = $(GAMEDIR)\Sam-goal.lev
1287TFILES = $(GAMEDIR)\Tou-goal.lev
1288VFILES = $(GAMEDIR)\Val-goal.lev
1289WFILES = $(GAMEDIR)\Wiz-goal.lev
1290
1291XFILES = $(AFILES) $(BFILES) $(CFILES) $(HFILES) $(KFILES) $(MFILES) \
1292	 $(PFILES) $(RANFILES) $(RFILES) $(SFILES) $(TFILES) $(VFILES) $(WFILES)
1293
1294spec_lev : $(GAMEDIR)\astral.lev $(GAMEDIR)\bigrm-1.lev $(GAMEDIR)\castle.lev \
1295	   $(GAMEDIR)\knox.lev $(GAMEDIR)\medusa-1.lev $(GAMEDIR)\minefill.lev \
1296	   $(GAMEDIR)\oracle.lev $(GAMEDIR)\tower1.lev $(GAMEDIR)\valley.lev \
1297	   $(GAMEDIR)\wizard1.lev $(GAMEDIR)\soko1-1.lev $(XFILES)
1298
1299#	Single special level files
1300
1301$(GAMEDIR)\castle.lev : $(DAT)\castle.des $(TEMP)\lev_comp.exe
1302	$(MAKEB) LF=castle do_slev
1303$(GAMEDIR)\knox.lev : $(DAT)\knox.des $(TEMP)\lev_comp.exe
1304	$(MAKEB) LF=knox do_slev
1305$(GAMEDIR)\oracle.lev : $(DAT)\oracle.des $(TEMP)\lev_comp.exe
1306	$(MAKEB) LF=oracle do_slev
1307
1308do_slev :
1309	$(TEMP)\lev_comp $(DAT)\$(LF).des
1310	$(CP) $(LF).lev $(GAMEDIR)
1311	$(RM) $(LF).lev
1312
1313#	Multiple special level files
1314
1315$(GAMEDIR)\astral.lev : $(DAT)\endgame.des $(TEMP)\lev_comp.exe
1316	$(TEMP)\lev_comp $(DAT)\endgame.des
1317	$(CP) air.lev $(GAMEDIR)
1318	$(CP) astral.lev $(GAMEDIR)
1319	$(CP) earth.lev $(GAMEDIR)
1320	$(CP) fire.lev $(GAMEDIR)
1321	$(CP) water.lev $(GAMEDIR)
1322	$(RM) air.lev
1323	$(RM) astral.lev
1324	$(RM) earth.lev
1325	$(RM) fire.lev
1326	$(RM) water.lev
1327
1328$(GAMEDIR)\bigrm-1.lev : $(DAT)\bigroom.des $(TEMP)\lev_comp.exe
1329	$(TEMP)\lev_comp $(DAT)\bigroom.des
1330	$(CP) bigrm-?.lev $(GAMEDIR)
1331	$(RM) bigrm-?.lev
1332
1333$(GAMEDIR)\medusa-1.lev : $(DAT)\medusa.des $(TEMP)\lev_comp.exe
1334	$(TEMP)\lev_comp $(DAT)\medusa.des
1335	$(CP) medusa-?.lev $(GAMEDIR)
1336	$(RM) medusa-?.lev
1337
1338$(GAMEDIR)\minefill.lev : $(DAT)\mines.des $(TEMP)\lev_comp.exe
1339	$(TEMP)\lev_comp $(DAT)\mines.des
1340	$(CP) minend-?.lev $(GAMEDIR)
1341	$(CP) minefill.lev $(GAMEDIR)
1342	$(CP) minetn-?.lev $(GAMEDIR)
1343	$(RM) minend-?.lev
1344	$(RM) minefill.lev
1345	$(RM) minetn-?.lev
1346
1347$(GAMEDIR)\tower1.lev : $(DAT)\tower.des $(TEMP)\lev_comp.exe
1348	$(TEMP)\lev_comp $(DAT)\tower.des
1349	$(CP) tower?.lev $(GAMEDIR)
1350	$(RM) tower?.lev
1351
1352$(GAMEDIR)\valley.lev : $(DAT)\gehennom.des $(TEMP)\lev_comp.exe
1353	$(TEMP)\lev_comp $(DAT)\gehennom.des
1354	$(CP) asmodeus.lev $(GAMEDIR)
1355	$(CP) baalz.lev $(GAMEDIR)
1356	$(CP) juiblex.lev $(GAMEDIR)
1357	$(CP) orcus.lev $(GAMEDIR)
1358	$(CP) sanctum.lev $(GAMEDIR)
1359	$(CP) valley.lev $(GAMEDIR)
1360	$(RM) asmodeus.lev
1361	$(RM) baalz.lev
1362	$(RM) juiblex.lev
1363	$(RM) orcus.lev
1364	$(RM) sanctum.lev
1365	$(RM) valley.lev
1366
1367$(GAMEDIR)\wizard1.lev : $(DAT)\yendor.des $(TEMP)\lev_comp.exe
1368	$(TEMP)\lev_comp $(DAT)\yendor.des
1369	$(CP) wizard?.lev $(GAMEDIR)
1370	$(CP) fakewiz?.lev $(GAMEDIR)
1371	$(RM) wizard?.lev
1372	$(RM) fakewiz?.lev
1373
1374$(GAMEDIR)\soko1-1.lev : $(DAT)\sokoban.des $(TEMP)\lev_comp.exe
1375	$(TEMP)\lev_comp $(DAT)\sokoban.des
1376	$(CP) soko?-?.lev $(GAMEDIR)
1377	$(RM) soko?-?.lev
1378
1379
1380#	Quest dungeons
1381
1382$(AFILES) : $(DAT)\Arch.des $(TEMP)\lev_comp.exe
1383	$(MAKEB) QQ=Arc QF=Arch do_quest
1384$(BFILES) : $(DAT)\Barb.des $(TEMP)\lev_comp.exe
1385	$(MAKEB) QQ=Bar QF=Barb do_quest
1386$(CFILES) : $(DAT)\Caveman.des $(TEMP)\lev_comp.exe
1387	$(MAKEB) QQ=Cav QF=Caveman do_quest
1388$(HFILES) : $(DAT)\Healer.des $(TEMP)\lev_comp.exe
1389	$(MAKEB) QQ=Hea QF=Healer do_quest
1390$(KFILES) : $(DAT)\Knight.des $(TEMP)\lev_comp.exe
1391	$(MAKEB) QQ=Kni QF=Knight do_quest
1392$(MFILES) : $(DAT)\Monk.des $(TEMP)\lev_comp.exe
1393	$(MAKEB) QQ=Mon QF=Monk do_quest
1394$(PFILES) : $(DAT)\Priest.des $(TEMP)\lev_comp.exe
1395	$(MAKEB) QQ=Pri QF=Priest do_quest
1396$(RANFILES) : $(DAT)\Ranger.des $(TEMP)\lev_comp.exe
1397	$(MAKEB) QQ=Ran QF=Ranger do_quest
1398$(RFILES) : $(DAT)\Rogue.des $(TEMP)\lev_comp.exe
1399	$(MAKEB) QQ=Rog QF=Rogue do_quest
1400$(SFILES) : $(DAT)\Samurai.des $(TEMP)\lev_comp.exe
1401	$(MAKEB) QQ=Sam QF=Samurai do_quest
1402$(TFILES) : $(DAT)\Tourist.des $(TEMP)\lev_comp.exe
1403	$(MAKEB) QQ=Tou QF=Tourist do_quest
1404$(VFILES) : $(DAT)\Valkyrie.des $(TEMP)\lev_comp.exe
1405	$(MAKEB) QQ=Val QF=Valkyrie do_quest
1406$(WFILES) : $(DAT)\Wizard.des $(TEMP)\lev_comp.exe
1407	$(MAKEB) QQ=Wiz QF=Wizard do_quest
1408
1409do_quest :
1410	$(TEMP)\lev_comp $(DAT)\$(QF).des
1411	$(CP) $(QQ)-fil?.lev $(GAMEDIR)
1412	$(CP) $(QQ)-goal.lev $(GAMEDIR)
1413	$(CP) $(QQ)-loca.lev $(GAMEDIR)
1414	$(CP) $(QQ)-strt.lev $(GAMEDIR)
1415	$(RM) $(QQ)-fil?.lev
1416	$(RM) $(QQ)-goal.lev
1417	$(RM) $(QQ)-loca.lev
1418	$(RM) $(QQ)-strt.lev
1419
1420#
1421#	NetHack icon for Presentation Manager.
1422#
1423
1424$(GAMEDIR)\$(GAME).ico : $(SYS)\nhpmico.uu
1425	$(MAKEB) do_icon
1426
1427icon_msg :
1428	$(ECHO) Icon file not extracted.  Extract manually if required.
1429
1430icon_act :
1431	$(UUDECODE) $(SYS)\nhpmico.uu
1432	$(CP) nethack.ico $(GAMEDIR)\$(GAME).ico
1433	$(RM) nethack.ico
1434
1435#
1436#	NetHack command file to use with Presentation Manager.
1437#
1438
1439$(GAMEDIR)\$(GAME).cmd :
1440	$(MAKEB) CMDF=$@ do_cmd
1441
1442cmd_msg :
1443	$(ECHO) Command file not created.  Create manually if required.
1444
1445cmd_act :
1446	$(ECHO) @echo off> $(CMDF)
1447	$(ECHO) REM Command file for starting nethack.exe from PM/WPS Desktop>> $(CMDF)
1448	$(ECHO) $(GAME).exe $(P)1 $(P)2 $(P)3 $(P)4 $(P)5 $(P)6 $(P)7>> $(CMDF)
1449	$(ECHO) pause>> $(CMDF)
1450
1451#
1452#	NetHack configuration file.  Will not overwrite an existing file.
1453#
1454
1455$(GAMEDIR)\nethack.cnf :
1456	$(CP) $(SSYS)\nethack.cnf $(GAMEDIR)
1457
1458#
1459#	Documentation.
1460#
1461
1462$(TEMP)\$(GUIDEBOO).dvi : $(DOC)\$(GUIDEBOO).tex
1463	$(LATEX) $(DOC)\$(GUIDEBOO).tex
1464	$(CP) $(GUIDEBOO).dvi $(TEMP)
1465	$(CP) $(GUIDEBOO).aux $(TEMP)
1466	$(CP) $(GUIDEBOO).log $(TEMP)
1467	$(RM) $(GUIDEBOO).dvi
1468	$(RM) $(GUIDEBOO).aux
1469	$(RM) $(GUIDEBOO).log
1470
1471#
1472#	Housekeeping.
1473#
1474
1475clean :
1476	-$(RM) $(OBJ)\*.o
1477
1478spotless : clean
1479	-$(RM) $(INCL)\date.h
1480	-$(RM) $(INCL)\onames.h
1481	-$(RM) $(INCL)\pm.h
1482	-$(RM) $(INCL)\vis_tab.h
1483	-$(RM) vis_tab.c
1484	-$(RM) monstr.c
1485	-$(RM) *.lev
1486	-$(RM) nethack.ico
1487	-$(RM) $(TEMP)\makedefs.exe
1488	-$(RM) $(TEMP)\lev_comp.exe
1489	-$(RM) $(TEMP)\dgn_comp.exe
1490	-$(RM) $(TEMP)\*.rsp
1491	-$(RM) $(TEMP)\*.def
1492	-$(RM) $(TEMP)\*.map
1493	-$(RM) $(TEMP)\$(GUIDEBOO).dvi
1494	-$(RM) $(TEMP)\$(GUIDEBOO).aux
1495	-$(RM) $(TEMP)\$(GUIDEBOO).log
1496
1497#
1498#	Main source.
1499#
1500#	Default rules are sooo difficult for so many make
1501#	programs that we do this the most straightforward way.
1502#
1503
1504$(OBJ)\allmain.o  : $(SRC)\$(CB) $(HACK_H)
1505	$(SRCCC)
1506$(OBJ)\alloc.o    : $(SRC)\$(CB) $(CONFIG_H)
1507	$(SRCCC)
1508$(OBJ)\apply.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h
1509	$(SRCCC)
1510$(OBJ)\artifact.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\artilist.h
1511	$(SRCCC)
1512$(OBJ)\attrib.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
1513	$(SRCCC)
1514$(OBJ)\ball.o     : $(SRC)\$(CB) $(HACK_H)
1515	$(SRCCC)
1516$(OBJ)\bones.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
1517	$(SRCCC)
1518$(OBJ)\botl.o     : $(SRC)\$(CB) $(HACK_H)
1519	$(SRCCC)
1520$(OBJ)\cmd.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\func_tab.h
1521	$(SRCCC)
1522$(OBJ)\dbridge.o  : $(SRC)\$(CB) $(HACK_H)
1523	$(SRCCC)
1524$(OBJ)\decl.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\quest.h
1525	$(SRCCC)
1526$(OBJ)\detect.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
1527	$(SRCCC)
1528$(OBJ)\dig.o      : $(SRC)\$(CB) $(HACK_H)
1529	$(SRCCC)
1530$(OBJ)\display.o  : $(SRC)\$(CB) $(HACK_H)
1531	$(SRCCC)
1532$(OBJ)\dlb.o      : $(SRC)\$(CB) $(CONFIG_H) $(INCL)\dlb.h
1533	$(SRCCC)
1534$(OBJ)\do.o       : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
1535	$(SRCCC)
1536$(OBJ)\do_name.o  : $(SRC)\$(CB) $(HACK_H)
1537	$(SRCCC)
1538$(OBJ)\do_wear.o  : $(SRC)\$(CB) $(HACK_H)
1539	$(SRCCC)
1540$(OBJ)\dog.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h
1541	$(SRCCC)
1542$(OBJ)\dogmove.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
1543	$(SRCCC)
1544$(OBJ)\dokick.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
1545	$(SRCCC)
1546$(OBJ)\dothrow.o  : $(SRC)\$(CB) $(HACK_H)
1547	$(SRCCC)
1548$(OBJ)\drawing.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\tcap.h
1549	$(SRCCC)
1550$(OBJ)\dungeon.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\dgn_file.h
1551	$(SRCCC)
1552$(OBJ)\eat.o      : $(SRC)\$(CB) $(HACK_H)
1553	$(SRCCC)
1554$(OBJ)\end.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
1555	$(SRCCC)
1556$(OBJ)\engrave.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
1557	$(SRCCC)
1558$(OBJ)\exper.o    : $(SRC)\$(CB) $(HACK_H)
1559	$(SRCCC)
1560$(OBJ)\explode.o  : $(SRC)\$(CB) $(HACK_H)
1561	$(SRCCC)
1562$(OBJ)\extralev.o : $(SRC)\$(CB) $(HACK_H)
1563	$(SRCCC)
1564$(OBJ)\files.o    : $(SRC)\$(CB) $(HACK_H)
1565	$(SRCCC)
1566$(OBJ)\fountain.o : $(SRC)\$(CB) $(HACK_H)
1567	$(SRCCC)
1568$(OBJ)\hack.o     : $(SRC)\$(CB) $(HACK_H)
1569	$(SRCCC)
1570$(OBJ)\hacklib.o  : $(SRC)\$(CB) $(HACK_H)
1571	$(SRCCC)
1572$(OBJ)\invent.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
1573	$(SRCCC)
1574$(OBJ)\light.o    : $(SRC)\$(CB) $(HACK_H)
1575	$(SRCCC)
1576$(OBJ)\lock.o     : $(SRC)\$(CB) $(HACK_H)
1577	$(SRCCC)
1578$(OBJ)\mail.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\mail.h
1579	$(SRCCC)
1580$(OBJ)\makemon.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h $(INCL)\emin.h
1581	$(SRCCC)
1582$(OBJ)\mapglyph.o : $(SRC)\$(CB) $(HACK_H)
1583	$(SRCCC)
1584$(OBJ)\mcastu.o   : $(SRC)\$(CB) $(HACK_H)
1585	$(SRCCC)
1586$(OBJ)\mhitm.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
1587	$(SRCCC)
1588$(OBJ)\mhitu.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
1589	$(SRCCC)
1590$(OBJ)\minion.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\emin.h $(INCL)\epri.h
1591	$(SRCCC)
1592$(OBJ)\mklev.o    : $(SRC)\$(CB) $(HACK_H)
1593	$(SRCCC)
1594$(OBJ)\mkmap.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h
1595	$(SRCCC)
1596$(OBJ)\mkmaze.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h
1597	$(SRCCC)
1598$(OBJ)\mkobj.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
1599	$(SRCCC)
1600$(OBJ)\mkroom.o   : $(SRC)\$(CB) $(HACK_H)
1601	$(SRCCC)
1602$(OBJ)\mon.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
1603	$(SRCCC)
1604$(OBJ)\mondata.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
1605	$(SRCCC)
1606$(OBJ)\monmove.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
1607	$(SRCCC)
1608$(OBJ)\monst.o    : $(SRC)\$(CB) $(CONFIG_H) $(PERMONST_H) $(INCL)\monsym.h $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h $(INCL)\color.h
1609	$(SRCCC)
1610$(OBJ)\mplayer.o  : $(SRC)\$(CB) $(HACK_H)
1611	$(SRCCC)
1612$(OBJ)\mthrowu.o  : $(SRC)\$(CB) $(HACK_H)
1613	$(SRCCC)
1614$(OBJ)\muse.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h
1615	$(SRCCC)
1616$(OBJ)\music.o    : $(SRC)\$(CB) $(HACK_H)
1617	$(SRCCC)
1618$(OBJ)\o_init.o   : $(SRC)\$(CB) $(HACK_H)
1619	$(SRCCC)
1620$(OBJ)\objects.o  : $(SRC)\$(CB) $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h $(INCL)\color.h
1621	$(SRCCC)
1622$(OBJ)\objnam.o   : $(SRC)\$(CB) $(HACK_H)
1623	$(SRCCC)
1624$(OBJ)\options.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\tcap.h
1625	$(SRCCC)
1626$(OBJ)\pager.o    : $(SRC)\$(CB) $(HACK_H)
1627	$(SRCCC)
1628$(OBJ)\pickup.o   : $(SRC)\$(CB) $(HACK_H)
1629	$(SRCCC)
1630$(OBJ)\pline.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h
1631	$(SRCCC)
1632$(OBJ)\polyself.o : $(SRC)\$(CB) $(HACK_H)
1633	$(SRCCC)
1634$(OBJ)\potion.o   : $(SRC)\$(CB) $(HACK_H)
1635	$(SRCCC)
1636$(OBJ)\pray.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h
1637	$(SRCCC)
1638$(OBJ)\priest.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h $(INCL)\emin.h
1639	$(SRCCC)
1640$(OBJ)\quest.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\quest.h $(INCL)\qtext.h
1641	$(SRCCC)
1642$(OBJ)\questpgr.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\qtext.h
1643	$(SRCCC)
1644$(OBJ)\read.o     : $(SRC)\$(CB) $(HACK_H)
1645	$(SRCCC)
1646$(OBJ)\region.o     : $(SRC)\$(CB) $(HACK_H)
1647	$(SRCCC)
1648$(OBJ)\rect.o     : $(SRC)\$(CB) $(HACK_H)
1649	$(SRCCC)
1650$(OBJ)\restore.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\tcap.h $(INCL)\quest.h
1651	$(SRCCC)
1652$(OBJ)\rip.o      : $(SRC)\$(CB) $(HACK_H)
1653	$(SRCCC)
1654$(OBJ)\rnd.o      : $(SRC)\$(CB) $(HACK_H)
1655	$(SRCCC)
1656$(OBJ)\role.o     : $(SRC)\$(CB) $(HACK_H)
1657	$(SRCCC)
1658$(OBJ)\rumors.o   : $(SRC)\$(CB) $(HACK_H)
1659	$(SRCCC)
1660$(OBJ)\save.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\quest.h
1661	$(SRCCC)
1662$(OBJ)\shk.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
1663	$(SRCCC)
1664$(OBJ)\shknam.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
1665	$(SRCCC)
1666$(OBJ)\sit.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
1667	$(SRCCC)
1668$(OBJ)\sounds.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
1669	$(SRCCC)
1670$(OBJ)\sp_lev.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\rect.h
1671	$(SRCCC)
1672$(OBJ)\spell.o    : $(SRC)\$(CB) $(HACK_H)
1673	$(SRCCC)
1674$(OBJ)\steal.o    : $(SRC)\$(CB) $(HACK_H)
1675	$(SRCCC)
1676$(OBJ)\steed.o    : $(SRC)\$(CB) $(HACK_H)
1677	$(SRCCC)
1678$(OBJ)\teleport.o : $(SRC)\$(CB) $(HACK_H)
1679	$(SRCCC)
1680$(OBJ)\timeout.o  : $(SRC)\$(CB) $(HACK_H)
1681	$(SRCCC)
1682$(OBJ)\topten.o   : $(SRC)\$(CB) $(HACK_H)
1683	$(SRCCC)
1684$(OBJ)\track.o    : $(SRC)\$(CB) $(HACK_H)
1685	$(SRCCC)
1686$(OBJ)\trap.o     : $(SRC)\$(CB) $(HACK_H)
1687	$(SRCCC)
1688$(OBJ)\u_init.o   : $(SRC)\$(CB) $(HACK_H)
1689	$(SRCCC)
1690$(OBJ)\uhitm.o    : $(SRC)\$(CB) $(HACK_H)
1691	$(SRCCC)
1692$(OBJ)\vault.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\vault.h
1693	$(SRCCC)
1694$(OBJ)\version.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\date.h $(INCL)\$(PATCHLEV).h
1695	$(SRCCC)
1696$(OBJ)\vision.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\vis_tab.h
1697	$(SRCCC)
1698$(OBJ)\weapon.o   : $(SRC)\$(CB) $(HACK_H)
1699	$(SRCCC)
1700$(OBJ)\were.o     : $(SRC)\$(CB) $(HACK_H)
1701	$(SRCCC)
1702$(OBJ)\wield.o    : $(SRC)\$(CB) $(HACK_H)
1703	$(SRCCC)
1704$(OBJ)\windows.o  : $(SRC)\$(CB) $(HACK_H)
1705	$(SRCCC)
1706$(OBJ)\wizard.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\qtext.h
1707	$(SRCCC)
1708$(OBJ)\worm.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
1709	$(SRCCC)
1710$(OBJ)\worn.o     : $(SRC)\$(CB) $(HACK_H)
1711	$(SRCCC)
1712$(OBJ)\write.o    : $(SRC)\$(CB) $(HACK_H)
1713	$(SRCCC)
1714$(OBJ)\zap.o      : $(SRC)\$(CB) $(HACK_H)
1715	$(SRCCC)
1716
1717$(OBJ)/Window.o: $(WINX11)\Window.c $(INCL)\xwindowp.h $(INCL)\xwindow.h \
1718		$(CONFIG_H)
1719	$(CC) -o$(OBJ)\Window.o $(CFLAGS) -c $(WINX11)\Window.c
1720$(OBJ)/dialogs.o: $(WINX11)\dialogs.c $(CONFIG_H)
1721	$(CC) -o$(OBJ)\dialogs.o $(CFLAGS) -c $(WINX11)\dialogs.c
1722$(OBJ)/winX.o: $(WINX11)\winX.c $(HACK_H) $(INCL)\winX.h $(INCL)\dlb.h \
1723		$(INCL)\patchlevel.h $(WINX11)\nh72icon \
1724		$(WINX11)\nh56icon $(WINX11)\nh32icon
1725	$(CC) $(CFLAGS) -c $(WINX11)\winX.c -o$(OBJ)\winX.o
1726$(OBJ)/winmap.o: $(WINX11)\winmap.c $(INCL)\xwindow.h $(HACK_H) $(INCL)\dlb.h \
1727		$(INCL)\winX.h $(INCL)\tile2x11.h
1728	$(CC) $(CFLAGS) -c $(WINX11)\winmap.c -o $(OBJ)\winmap.o
1729$(OBJ)/winmenu.o: $(WINX11)\winmenu.c $(HACK_H) $(INCL)\winX.h
1730	$(CC) $(CFLAGS) -c $(WINX11)\winmenu.c -o $(OBJ)\winmenu.o
1731$(OBJ)/winmesg.o: $(WINX11)\winmesg.c $(INCL)\xwindow.h $(HACK_H) $(INCL)\winX.h
1732	$(CC) $(CFLAGS) -c $(WINX11)\winmesg.c -o$(OBJ)\winmesg.o
1733$(OBJ)/winmisc.o: $(WINX11)\winmisc.c $(HACK_H) $(INCL)\func_tab.h \
1734		$(INCL)\winX.h
1735	$(CC) $(CFLAGS) -c $(WINX11)\winmisc.c -o$(OBJ)\winmisc.o
1736$(OBJ)/winstat.o: $(WINX11)\winstat.c $(HACK_H) $(INCL)\winX.h
1737	$(CC) $(CFLAGS) -c $(WINX11)\winstat.c -o$(OBJ)\winstat.o
1738$(OBJ)/wintext.o: $(WINX11)\wintext.c $(HACK_H) $(INCL)\winX.h $(INCL)\xwindow.h
1739	$(CC) $(CFLAGS) -c $(WINX11)\wintext.c -o$(OBJ)\wintext.o
1740$(OBJ)/winval.o: $(WINX11)\winval.c $(HACK_H) $(INCL)\winX.h
1741	$(CC) $(CFLAGS) -c $(WINX11)\winval.c -o$(OBJ)\winval.o
1742
1743$(OBJ)/tile.o: $(NHSRC)\src\tile.c $(HACK_H)
1744	$(CC) $(CFLAGS) -c $(NHSRC)\src\tile.c -o$(OBJ)\tile.o
1745
1746$(TEMP)\tilemap.exe: ..\win\share\tilemap.c $(HACK_H)
1747	$(CC) $(GCCO) $(WARN) -I$(INCL) $(CDFLAGS) $(STDC) $(WINX11CFLAGS) $(LFLAGS) -o $(TEMP)\tilemap.exe ..\win\share\tilemap.c $(LIBS)
1748$(NHSRC)\src\tile.c: $(TEMP)\tilemap.exe
1749	$(TEMP)\tilemap
1750
1751x11tiles: $(TEMP)\tile2x11.exe $(WINSHARE)\monsters.txt \
1752				$(WINSHARE)\objects.txt \
1753				$(WINSHARE)\other.txt
1754	$(TEMP)\tile2x11.exe $(WINSHARE)\monsters.txt $(WINSHARE)\objects.txt \
1755				$(WINSHARE)\other.txt
1756	$(CP) x11tiles $(GAMEDIR)\x11tiles
1757
1758TEXT_IO = $(OBJ)\tiletext.o \
1759	  $(OBJ)\tiletxt.o \
1760	  $(OBJ)\drawing.o \
1761	  $(OBJ)\decl.o \
1762	  $(OBJ)\monst.o \
1763	  $(OBJ)\objects.o
1764
1765$(OBJ)\tiletext.o: ../win/share/tiletext.c $(CONFIG_H) $(WINSHARE)\tile.h
1766	$(CC) $(CFLAGS) -c $(WINSHARE)\tiletext.c -o$(OBJ)\tiletext.o
1767$(OBJ)\tiletxt.o: $(WINSHARE)\tilemap.c $(HACK_H)
1768	$(CC) $(CFLAGS) -c -DTILETEXT $(WINSHARE)\tilemap.c -o$(OBJ)\tiletxt.o
1769
1770$(TEMP)\tile2x11.exe: $(OBJ)\tile2x11.o $(TEXT_IO)
1771	$(CC) $(LFLAGS) -o $(TEMP)\tile2x11.exe $(OBJ)\tile2x11.o $(TEXT_IO) $(LIBS)
1772
1773pet_mark.xbm: $(WINX11)\pet_mark.xbm
1774	$(CP) $(WINX11)\pet_mark.xbm $(GAMEDIR)\pet_mark.xbm
1775
1776rip.xpm: $(WINX11)\rip.xpm
1777	$(CP) $(WINX11)\rip.xpm $(GAMEDIR)\rip.xpm
1778
1779$(OBJ)\tile2x11.o : $(WINX11)\tile2x11.c $(INCL)\tile2x11.h
1780	$(CC) $(CFLAGS) -o$(OBJ)\tile2x11.o -c $(WINX11)\tile2x11.c \
1781		-I$(WINSHARE)
1782
1783