1#	NetHack Makefile.
2# Copyright (c) Kenneth Lorber, Bethesda, Maryland, 1991,1992,1993,1996.
3# NetHack may be freely redistributed.  See license for details.
4
5###
6### INTRODUCTION
7###
8
9# This makefile is arranged for compiling for the Amiga with SAS/C 6.51 but
10# can be configured for compiling with Manx C 5 or commercial DICE with
11# simple changes.  The appropriate changes are identified by #[compiler]
12# where compiler is one of: SAS6, MANX, or DICE; the options in this
13# makefile as should be set according to the compiler being used.  (But see
14# note 3 below.)
15
16# Note: When using the Manx compiler, an alternate make utility is
17# required. The bundled Aztec make is just too damaged.
18
19# Note 2: The #SFD_xxx lines are used with mkdmake to generate a DMake-
20# compatible makefile (DMakefile) from this file.  Any line beginning with
21# #SFD_INSTEAD replaces, in DMakefile, the following line from Makefile.ami.
22# #SFD_BEGIN, #SFD_ELSE, and #SFD_END bracket multi-line sections for the two
23# makefile formats.
24# When changing this file, #SFD_INSTEAD lines will need to be inserted for
25# the following cases:
26#	- Dependencies with different numbers of filenames (both > 1) on
27#	    either side.  The #SFD_INSTEAD line should immediately precede
28#	    the line with the colon, and should contain a double colon "::"
29#	    instead of a single colon.
30#	- Special command lists that override the default.  A line containing
31#	    "#SFD_INSTEAD #none" should precede such a rule.  If the rule is
32#	    more than one line long, precede it with "#SFD_BEGIN" and
33#	    "#SFD_ELSE", and follow it with "#SFD_END".
34#	- Files not in the src, sys/amiga, sys/share, or win/tty directories
35#	    that rely on the default ".c.o" rule.  Following the dependency
36#	    should be "#SFD_INSTEAD <default>" with the filename inserted
37#	    into the default rule where appropriate, then a line contianing
38#	    "#none".
39# In any SFD_BEGIN/ELSE/END block added, put a '##' before every line
40# between the BEGIN and ELSE.  Any line that's really a comment needs three
41# '#'s, e.g. "### DICE comment".
42
43# Note 2A: Whenever an SFD line/block is added, the appropriate repeat count
44#          in mkdmake must be changed.  (The repeat count "0" meaning "repeat
45#          until end of file" doesn't work as advertised.)
46
47# Note 3: mkdmake will automatically substitute DICE flags, etc. for SAS
48#         where appropriate.  Since the makefile is already set up for SAS,
49#         the only people who end up having to make changes here are Manx
50#         users (or people who want to change the defaults).
51
52###
53### DIRECTORY STRUCTURE
54###
55
56NH = NH:
57SBIN = $(NH)sbin/
58SLIB = $(NH)slib/
59NETHACK = $(NH)NetHack/
60HACKEXE = $(NH)HackExe/
61AMI = $(NH)sys/amiga/
62DAT = $(NH)dat/
63DOC = $(NH)doc/
64I = $(NH)include/
65SHARE = $(NH)sys/share/
66NHS = $(NH)src/
67TTY = $(NH)win/tty/
68WSHARE  = $(NH)win/share/
69UTIL = $(NH)util/
70O = $(NH)obj/
71OO = $(NH)objo/
72#	NB: O and OO MUST be different directories
73
74###
75### INVOCATION
76###
77
78#[SAS6]
79#MAKE = smake
80#[MANX]
81#MAKE = make
82#[DICE]
83#MAKE = dmake
84
85# Startup makefile with:
86#
87#[SAS6]
88#[MANX]
89#	$(MAKE) -f $(AMI)Makefile.ami
90#	$(MAKE) -f $(AMI)Makefile.ami install
91#
92#[DICE]
93#	$(MAKE) -f $(AMI)DMakefile
94#	$(MAKE) -f $(AMI)DMakefile install
95#
96#
97# You may use following targets on $(MAKE) command lines:
98#   all		do it all (default)
99#   link	just create binary from object files
100#   obj		just create common object files
101#   obja	just create amiga object files
102#   objs	just create shared object files
103#   clean	deletes the object files
104#   spotless	deletes the object files, main binary, and more
105#
106# Note:  We do not build the Guidebook here since it needs tbl
107# (See the file sys/unix/Makefile.doc for more information)
108
109#X# Precompiled header files:
110#X#   $(HDEP) should appear in any dependency list for an object file where
111#X#   we would want to make use of the precompiled version of $(I)hack.h,
112#X#   while $(CSYM) should appear in the C compiler command line that creates
113#X#   any such object file.  (Changes made here should agree with the $(HDEP):
114#X#   target that appears later in this makefile.)
115#X#
116
117#SFD_BEGIN
118##
119###[DICE]
120###   If we were compiling with DICE and wanted to use the symbol table
121###   pre-loading feature, we would uncomment these following two lines.
122##
123##HDEP	= $(I)hack.sym
124##CSYM	= -H$(I)hack.sym=hack.h
125##
126#SFD_ELSE
127
128#[SAS5]
129#   If we were to use the precompiled header file feature in a newer version
130#   of SAS/C, we would comment out these following two lines.
131#   If we don't use precompiled header files, we uncomment it as well.
132
133HDEP	= $(I)hack.h $(I)pm.h $(I)onames.h
134CSYM	=
135
136#[MANX]
137#   If we were compiling with Aztec, and wanted to use the symbol table
138#   pre-loading feature, we would uncomment these following two lines.
139
140#HDEP	= Ram:hack.sym
141#CSYM	= +IRam:hack.sym
142
143#SFD_END
144
145#Pathname for uudecode program:
146UUDEC	= uudecode
147
148# Flex/Bison command assignments -- Useful only if you have flex/bison
149FLEX	= flex
150BISON	= bison
151# FBFIL and FBLIB may be used, if required by your version of flex or bison,
152# to specify additional files or libraries to be linked with
153FBFIL	=
154FBLIB	= #lib lib:compat.lib
155
156# If you're compiling this on a 1.3 system, you'll have to uncomment the
157# following (for use with the ifchange script below).  Also useful instead of
158# "protect ifchange +s"
159EXECUTE = execute
160
161# Headers we depend on
162AMDEP = $(AMI)winproto.h $(AMI)winext.h $(AMI)windefs.h $(I)winami.h
163
164# Pathname for the C compiler being used.
165
166#SFD_BEGIN
167##
168###[DICE]
169##CC	= dcc
170##ASM	= das
171##
172#SFD_ELSE
173
174#[SAS6]
175CC	= sc
176ASM	= asm
177
178#[MANX]
179#CC	= cc
180
181#SFD_END
182
183# Compilation flags for selected C Compiler:
184#   $(CFLAGS) should appear before filename arguments of $(CC) command line.
185
186#SFD_BEGIN
187##
188###[DICE]
189##CFLAGS = -c -I$(I) -mC -mD -ms -//
190##CFLAGS2 =
191##WBCFLAGS = -c -I$(I) -mC -mD -ms -//
192##WBC2FLAGS = -DCLI
193##SPLFLAGS = -DSPLIT
194##
195#SFD_ELSE
196
197#[SAS6]
198#   Note: make sure your CLI stack size is large (at least 50K) or lev_comp
199#   and makedefs may fail terribly - stack checking is disabled.
200#
201#  **** WARNING ****	GST support is not fool proof.  You must make makedefs
202#			without a GST first so that the generated headers
203#			that are part of the GST can be made.
204#
205#GSTSRC=$(AMI)gst.c
206#
207#GSTHEAD=$(I)hack.h $(I)pm.h $(I)trap.h $(I)onames.h \
208#	$(AMI)winami.p $(AMI)amidos.p $(AMI)amiwind.p
209#
210#GSTFILE=$(O)NetHack.gst
211# undefine this to not compile with GSTs
212#GST=gst=$(GSTFILE)
213#
214DEBUG=debug=symbol
215CPU=cpu=68000
216#OPTFLAGS=opt opttime optpeep optgo optinl optsched optcomp=10 optdep=5 optrdep=5 #optalias +OPTTIME -OPTSIZE
217CFLAGS	= data=far nominc $(DEBUG) idir=$(I) $(CPU) nostkchk nover \
218	codename=nhcode dataname=nhdata strmerge $(OPTFLAGS) $(TILES) $(SAVEDS) \
219	afp $(ERRREXX) $(GST)
220# for files that are too large for the standard flags:
221CFLAGS2 = code=far strmerge $(SAVEDS)
222WBCFLAGS = ignore=217,62 data=far ansi nminc code=far idir=$(I) $(CPU) afp \
223	$(DEBUG) $(ERRREXX) define=AMIGA $(GST)
224XXX = data=far ansi nminc idir=$(I) $(CPU) afp opt optinline optinlocal \
225	optloop opttime
226WBC2FLAGS = define=CLI
227SPLFLAGS = define=SPLIT #dollarok
228#for amistack.c
229CFLAGS3	= data=near dataname=__MERGED nominc $(DEBUG) idir=$(I) $(CPU) nover nostkchk \
230	codename=nhcode strmerge $(OPTFLAGS) $(TILES) $(SAVEDS) \
231	afp $(ERRREXX) $(GST)
232
233#[MANX]
234#CFLAGS = -i$(I) -mc -md -ms -pa -ps -bs -wo -qq
235#WBCFLAGS = -mc -md -ms -pa -ps -bs -wo -qq -pp
236
237#SFD_END
238
239# Assembly flags:
240
241#SFD_BEGIN
242##
243###[DICE]
244##AFLAGS =
245##AOBJSPEC = -o
246##
247#SFD_ELSE
248
249#[SAS6]
250AFLAGS = #what to put here?
251AOBJSPEC = -o
252
253#SFD_END
254
255# Components of various link command lines:
256#   $(LINK) should be the pathname of the linker being used (with any options
257#   that should appear at the beginning of the command line).  The name of the
258#   output file should appear immediately after $(LNSPEC).  $(LIN) should
259#   appear before the list of object files in each link command.  $(LLINK)
260#   should appear as the list of object files in the link command line that
261#   creates the NetHack executable.  $(LLIB) should appear at the end of each
262#   link command line.
263
264# Note: amiga.lib added due to missing prototypes/pragmas.
265# Should be deleted when this is resolved.
266
267#SFD_BEGIN
268##
269###[DICE]
270### If you have flex/bison libraries, use the second definition of FLLIB
271### instead of the first.
272##
273##LINK	 = dcc -mD
274##LIN	 =
275##LLINK	 = @$(AMI)ami.lnk
276##LLIB	 =
277##FLLIB	 =
278###FLLIB	 = -l$(FBLIB)
279##OBJSPEC = -o
280##PNSPEC	= -o
281##LNSPEC = -o
282##CCLINK	= dcc
283##CLFLAGS = -I$(I) -mC -mD -ms -//
284##INCLSPEC = -I
285##DEFSPEC = -D
286##IGNSPEC = -j
287##
288#SFD_ELSE
289
290#[SAS6]
291
292LINK	= slink noicons verbose maxhunk 262144 stripdebug
293LIN	= from lib:catch.o
294LLINK	= with $(AMI)ami.lnk
295LLIB	= lib lib:scnb.lib BATCH #lib lib:amiga.lib BATCH #scnb.lib or sc.lib
296FLLIB	= $(FBLIB) lib Lib:sc.lib BATCH
297OBJSPEC = objname=
298PNSPEC = noicons to #pname=
299LNSPEC = to
300CCLINK =  sc link
301INCLSPEC = idir=
302DEFSPEC = define=
303IGNSPEC = ignore=
304COMPACT_HEADERS=$(GSTFILE)
305
306#[MANX]
307
308#LINK	= ln -g +q +ss -o
309#LIN	=
310#LLINK	= -f $(AMI)ami.lnk
311#LLIB	= -lcl16
312#FLLIB  = -lcl16
313#OBJSPEC = -o
314#PNSPEC = -o
315#LNSPEC = -o
316#CCLINK = cc
317#INCLSPEC = -i
318#DEFSPEC = -d
319#IGNSPEC = -j
320
321#SFD_END
322
323###
324### FILE LISTS
325###
326
327# A more reasonable random number generator (recommended for the Amiga):
328
329RANDOBJ	= $(O)random.o
330
331#SFD_INSTEAD #none
332.PRECIOUS:  $(I)config.h $(I)decl.h $(I)hack.h $(I)permonst.h $(I)you.h
333
334# Almost nothing below this line should have to be changed.
335# (Exceptions are marked by [SAS6], [MANX], etc.)
336#
337# Other things that have to be reconfigured are in config.h,
338# (amiconf.h, pcconf.h), and possibly system.h, tradstdc.h.
339
340# Object files for makedefs:
341
342MAKEOBJS = \
343	$(OO)makedefs.o $(O)monst.o $(O)objects.o
344
345# Object files for special levels compiler:
346
347SPLEVOBJS = \
348	$(OO)lev_yacc.o $(OO)lev_lex.o	$(OO)lev_main.o \
349	$(O)decl.o 	$(O)drawing.o	$(O)monst.o \
350	$(O)objects.o	$(OO)panic.o
351
352# Object files for dungeon compiler
353
354DGNCOMPOBJS = \
355	$(OO)dgn_yacc.o	$(OO)dgn_lex.o	$(OO)dgn_main.o $(O)alloc.o $(OO)panic.o
356
357# Object files for NetHack:
358
359COMMOBJ = \
360	$(O)allmain.o	$(O)alloc.o	$(O)apply.o 	$(O)artifact.o	\
361	$(O)attrib.o	$(O)ball.o	$(O)bones.o	$(O)botl.o	\
362	$(O)cmd.o	$(O)dbridge.o	$(O)decl.o	$(O)detect.o	\
363	$(O)dig.o	$(O)display.o	$(O)dlb.o	$(O)do.o	\
364	$(O)do_name.o	$(O)do_wear.o	$(O)dog.o	$(O)dogmove.o	\
365	$(O)dokick.o	$(O)dothrow.o	$(O)drawing.o	$(O)dungeon.o	\
366	$(O)eat.o	$(O)end.o	$(O)engrave.o	$(O)exper.o	\
367	$(O)explode.o	$(O)extralev.o	$(O)files.o 	$(O)fountain.o	\
368	$(O)hack.o	$(O)hacklib.o	$(O)invent.o	$(O)light.o	\
369	$(O)lock.o	$(O)mail.o	$(O)makemon.o	$(O)mapglyph.o  \
370	$(O)mcastu.o	$(O)mhitm.o	$(O)mhitu.o	$(O)minion.o	\
371	$(O)mklev.o	$(O)mkmap.o	$(O)mkmaze.o	$(O)mkobj.o	\
372	$(O)mkroom.o	$(O)mon.o	$(O)mondata.o	$(O)monmove.o	\
373	$(O)monst.o	$(O)mplayer.o	$(O)mthrowu.o	$(O)muse.o	\
374	$(O)music.o	$(O)o_init.o	$(O)objects.o	$(O)objnam.o	\
375	$(O)options.o	$(O)pager.o	$(O)pickup.o	$(O)pline.o	\
376	$(O)polyself.o	$(O)potion.o	$(O)pray.o	$(O)priest.o	\
377	$(O)quest.o	$(O)questpgr.o	$(O)read.o	$(O)rect.o	\
378	$(O)region.o	$(O)restore.o	$(O)rnd.o	$(O)role.o	\
379	$(O)rumors.o	$(O)save.o	$(O)shk.o	$(O)shknam.o	\
380	$(O)sit.o	$(O)sounds.o	$(O)sp_lev.o	$(O)spell.o	\
381	$(O)steal.o	$(O)steed.o	$(O)sys.o	$(O)teleport.o	\
382	$(O)timeout.o	$(O)topten.o	$(O)track.o	$(O)trap.o	\
383	$(O)u_init.o	$(O)uhitm.o	$(O)vault.o	$(O)version.o	\
384	(O)vision.o	$(O)weapon.o	$(O)were.o	$(O)wield.o	\
385	$(O)windows.o	$(O)wizard.o	$(O)worm.o	$(O)worn.o	\
386	$(O)write.o	$(O)zap.o
387
388MAKEDEFOBJ = \
389	$(O)monstr.o
390
391AMIGAOBJ = \
392	$(O)amidos.o	$(O)amirip.o 	$(O)amisnd.o	$(O)amistack.o \
393	$(O)amiwind.o	$(O)winami.o	$(O)winchar.o	$(O)winfuncs.o	\
394	$(O)winkey.o	$(O)winmenu.o	$(O)winreq.o	$(O)winstr.o
395
396# Objects from assembly sources (because DMake can't handle default rules)
397AMIGAOBJ2 = \
398#	$(O)dispmap.o
399
400SHAREOBJ = \
401	$(O)pcmain.o	$(RANDOBJ)
402
403TTYOBJ = \
404	$(O)getline.o $(O)termcap.o $(O)topl.o $(O)wintty.o $(O)amitty.o \
405	$(O)rip.o
406
407# Yuck yuck yuck.  Have to tell DMake where these are, since they're not
408# all in the same place.
409TTYSRC = \
410	$(TTY)getline.c $(TTY)termcap.c $(TTY)topl.c $(TTY)wintty.c \
411	$(AMI)amitty.c $(NHS)rip.c
412
413# All the object files for NetHack:
414
415HOBJ = $(COMMOBJ) $(AMIGAOBJ) $(AMIGAOBJ2) $(SHAREOBJ) $(MAKEDEFOBJ) $(TTYOBJ)
416
417###
418### DATA FILES
419###
420
421# quest files
422ADFILES1= $(SLIB)Arc-fila.lev $(SLIB)Arc-filb.lev $(SLIB)Arc-loca.lev \
423	$(SLIB)Arc-strt.lev
424ADFILES= $(SLIB)Arc-goal.lev $(ADFILES1)
425
426BDFILES1= $(SLIB)Bar-fila.lev $(SLIB)Bar-filb.lev $(SLIB)Bar-loca.lev \
427	$(SLIB)Bar-strt.lev
428BDFILES= $(SLIB)Bar-goal.lev $(BDFILES1)
429
430CDFILES1= $(SLIB)Cav-fila.lev $(SLIB)Cav-filb.lev $(SLIB)Cav-loca.lev \
431	$(SLIB)Cav-strt.lev
432CDFILES= $(SLIB)Cav-goal.lev $(CDFILES1)
433
434HDFILES1= $(SLIB)Hea-fila.lev $(SLIB)Hea-filb.lev $(SLIB)Hea-loca.lev \
435	$(SLIB)Hea-strt.lev
436HDFILES= $(SLIB)Hea-goal.lev $(HDFILES1)
437
438KDFILES1= $(SLIB)Kni-fila.lev $(SLIB)Kni-filb.lev $(SLIB)Kni-loca.lev \
439	$(SLIB)Kni-strt.lev
440KDFILES= $(SLIB)Kni-goal.lev $(KDFILES1)
441
442MDFILES1= $(SLIB)Mon-fila.lev $(SLIB)Mon-filb.lev $(SLIB)Mon-loca.lev \
443	$(SLIB)Mon-strt.lev
444MDFILES= $(SLIB)Mon-goal.lev $(MDFILES1)
445
446PDFILES1= $(SLIB)Pri-fila.lev $(SLIB)Pri-filb.lev $(SLIB)Pri-loca.lev \
447	$(SLIB)Pri-strt.lev
448PDFILES= $(SLIB)Pri-goal.lev $(PDFILES1)
449
450RDFILES1= $(SLIB)Rog-fila.lev $(SLIB)Rog-filb.lev $(SLIB)Rog-loca.lev \
451	$(SLIB)Rog-strt.lev
452RDFILES= $(SLIB)Rog-goal.lev $(RDFILES1)
453
454RANFILES1= $(SLIB)Ran-fila.lev $(SLIB)Ran-filb.lev $(SLIB)Ran-loca.lev \
455	$(SLIB)Ran-strt.lev
456RANFILES= $(SLIB)Ran-goal.lev $(RANFILES1)
457
458SDFILES1= $(SLIB)Sam-fila.lev $(SLIB)Sam-filb.lev $(SLIB)Sam-loca.lev \
459	$(SLIB)Sam-strt.lev
460SDFILES= $(SLIB)Sam-goal.lev $(SDFILES1)
461
462TDFILES1= $(SLIB)Tou-fila.lev $(SLIB)Tou-filb.lev $(SLIB)Tou-loca.lev \
463	$(SLIB)Tou-strt.lev
464TDFILES= $(SLIB)Tou-goal.lev $(TDFILES1)
465
466VDFILES1= $(SLIB)Val-fila.lev $(SLIB)Val-filb.lev $(SLIB)Val-loca.lev \
467	$(SLIB)Val-strt.lev
468VDFILES= $(SLIB)Val-goal.lev $(VDFILES1)
469
470WDFILES1= $(SLIB)Wiz-fila.lev $(SLIB)Wiz-filb.lev $(SLIB)Wiz-loca.lev \
471	$(SLIB)Wiz-strt.lev
472WDFILES= $(SLIB)Wiz-goal.lev $(WDFILES1)
473
474XDFILES=	$(ADFILES) $(BDFILES) $(CDFILES) $(HDFILES) $(KDFILES) \
475		$(MDFILES) $(PDFILES) $(RDFILES) $(RANFILES) $(SDFILES) $(TDFILES) \
476		$(VDFILES) $(WDFILES)
477
478SOUNDFILES= \
479	$(SBIN)cvtsnd \
480	$(SLIB)sounds \
481	$(SLIB)sounds/Bell $(SLIB)sounds/Bugle \
482	$(SLIB)sounds/Drum_Of_Earthquake \
483	$(SLIB)sounds/Fire_Horn $(SLIB)sounds/Frost_Horn \
484	$(SLIB)sounds/Leather_Drum $(SLIB)sounds/Magic_Flute \
485	$(SLIB)sounds/Magic_Harp $(SLIB)sounds/Tooled_Horn \
486	$(SLIB)sounds/Wooden_Flute $(SLIB)sounds/Wooden_Harp
487
488TILEFILES= \
489	$(SBIN)txt2iff \
490	$(NETHACK)tiles \
491	$(NETHACK)tiles/objects.iff \
492	$(NETHACK)tiles/monsters.iff \
493	$(NETHACK)tiles/other.iff
494
495INSTDUNGEONFILES1= \
496	$(SLIB)air.lev		$(SLIB)asmodeus.lev	$(SLIB)astral.lev \
497	$(SLIB)baalz.lev	$(SLIB)bigrm-1.lev	$(SLIB)bigrm-2.lev \
498	$(SLIB)bigrm-3.lev	$(SLIB)bigrm-4.lev	$(SLIB)bigrm-5.lev \
499	$(SLIB)castle.lev	$(SLIB)dungeon		$(SLIB)earth.lev \
500	$(SLIB)fakewiz1.lev	$(SLIB)fakewiz2.lev	$(SLIB)fire.lev \
501	$(SLIB)juiblex.lev	$(SLIB)knox.lev		$(SLIB)medusa-1.lev \
502	$(SLIB)medusa-2.lev	$(SLIB)minend-1.lev	$(SLIB)minend-2.lev \
503	$(SLIB)minetn-1.lev	$(SLIB)minetn-2.lev	$(SLIB)minefill.lev \
504	$(SLIB)options		$(SLIB)oracle.lev	$(SLIB)orcus.lev \
505	$(SLIB)sanctum.lev	$(SLIB)soko1-1.lev	$(SLIB)soko1-2.lev \
506	$(SLIB)soko2-1.lev	$(SLIB)soko2-2.lev	$(SLIB)soko3-1.lev \
507	$(SLIB)soko3-2.lev	$(SLIB)soko4-1.lev	$(SLIB)soko4-2.lev \
508	$(SLIB)tower1.lev	$(SLIB)tower2.lev	$(SLIB)tower3.lev \
509	$(SLIB)valley.lev	$(SLIB)water.lev	$(SLIB)wizard1.lev \
510	$(SLIB)wizard2.lev	$(SLIB)wizard3.lev \
511	$(XDFILES)
512
513INSTDUNGEONFILES= $(NETHACK)NetHack.cnf $(INSTDUNGEONFILES1)
514
515
516INSTDATAFILES= \
517	$(NETHACK)license	$(NETHACK)logfile	$(NETHACK)record \
518	$(NETHACK)tomb.iff	$(NETHACK)amii.hlp 	$(NETHACK)Recover.txt \
519	$(NETHACK)GuideBook.txt	$(NETHACK)NetHack.txt	$(NETHACK)Install.ami
520
521LIBFILES= \
522	$(INSTDUNGEONFILES1) \
523	$(SLIB)cmdhelp	 	$(SLIB)data		$(SLIB)dungeon \
524	$(SLIB)help		$(SLIB)hh		$(SLIB)history \
525	$(SLIB)opthelp		$(SLIB)oracles		$(SLIB)rumors \
526	$(SLIB)quest.dat	$(SLIB)wizhelp
527
528###
529### Getting down to business:
530###
531
532#SFD_INSTEAD all:  $(SBIN)lev_comp $(SBIN)dgn_comp $(SBIN)NetHack \
533all:  $(COMPACT_HEADERS) $(SBIN)lev_comp $(SBIN)dgn_comp $(SBIN)NetHack \
534	$(SBIN)dlb $(NETHACK)recover
535
536install: all inst-data inst-dungeon inst-fonts inst-sounds inst-tiles \
537	$(NETHACK)nhdat $(NETHACK)NetHack
538
539$(SBIN)NetHack:  $(HOBJ) $(AMI)ami.lnk
540	$(LINK) $(LNSPEC) $(SBIN)NetHack $(LIN) $(LLINK) $(LLIB)
541
542$(NETHACK)NetHack: $(SBIN)NetHack
543	copy $(SBIN)NetHack $(NETHACK)NetHack
544
545link:
546	$(LINK) $(LNSPEC) $(SBIN)NetHack $(LIN) $(LLINK) $(LLIB)
547
548$(AMI)ami.lnk: $(AMI)Makefile.ami
549	list to $(AMI)ami.lnk lformat="$(O)%s" $(O)\#?.o QUICK NOHEAD
550
551## dlb support
552$(OO)dlb_main.o:	$(UTIL)dlb_main.c $(HDEP) $(I)dlb.h $(I)date.h
553	$(CC) $(CFLAGS) $(OBJSPEC)$(OO)dlb_main.o $(UTIL)dlb_main.c
554
555$(SBIN)dlb:	$(OO)dlb_main.o $(O)dlb.o $(O)alloc.o $(OO)panic.o
556	$(LINK) $(PNSPEC) $(SBIN)dlb $(LIN) $(OO)dlb_main.o $(O)dlb.o \
557	  $(O)alloc.o $(OO)panic.o $(LLIB)
558
559obj:  $(HOBJ)
560
561obja:  $(AMIGAOBJ)
562
563objs:  $(SHAREOBJ)
564
565
566#SFD_BEGIN
567#SFD_ELSE
568SUFFIXES = .lev .des
569.des.lev:
570	$(SBIN)lev_comp $<
571#SFD_END
572
573
574# The default method for creating object files:
575
576#SFD_BEGIN
577##
578###[DICE]
579##
580##$(COMMOBJ): $(COMMOBJ:"$(O)*.o":"$(NHS)%1.c")
581##	$(CC) $(CFLAGS) $(CSYM) $(OBJSPEC)%(left) %(right)
582##
583##$(AMIGAOBJ): $(AMIGAOBJ:"$(O)*.o":"$(AMI)%1.c")
584##	$(CC) $(CFLAGS) $(CSYM) $(OBJSPEC)%(left) %(right)
585##
586##$(SHAREOBJ): $(SHAREOBJ:"$(O)*.o":"$(SHARE)%1.c")
587##	$(CC) $(CFLAGS) $(CSYM) $(OBJSPEC)%(left) %(right)
588##
589##$(TTYOBJ): $(TTYSRC)
590##	$(CC) $(CFLAGS) $(CSYM) $(OBJSPEC)%(left) %(right)
591##
592#SFD_ELSE
593
594#[SAS6]
595
596.c.o:
597	$(CC) $(CFLAGS) $(CSYM) $(OBJSPEC)$@ $<
598
599#SFD_END
600
601
602clean:
603	-delete $(O)\#?.o $(OO)\#?.o
604
605spotless:  clean
606	-delete $(SBIN)NetHack $(SBIN)lev_comp $(SBIN)makedefs $(SBIN)dgn_comp
607	-delete $(SBIN)cvtsnd $(SBIN)dlb $(SBIN)txt2iff $(SBIN)splitter
608	-delete $(SBIN)tilemap
609	-delete $(SLIB)data $(SLIB)rumors
610	-delete $(SLIB)\#?.lev
611	-delete $(SLIB)dungeon
612	-delete $(SLIB)cmdhelp $(SLIB)help $(SLIB)hh $(SLIB)history
613	-delete $(SLIB)opthelp $(SLIB)options $(SLIB)oracles
614	-delete $(SLIB)quest.dat $(SLIB)wizhelp
615#	-delete $(SLIB)earth.lev $(SLIB)air.lev $(SLIB)fire.lev
616#	-delete $(SLIB)water.lev $(SLIB)astral.lev
617#	-delete $(SLIB)tower1.lev $(SLIB)tower2.lev $(SLIB)tower3.lev
618#	-delete $(SLIB)fakewiz1.lev $(SLIB)fakewiz2.lev
619#	-delete $(SLIB)medusa-1.lev $(SLIB)medusa-2.lev
620#	-delete $(SLIB)oracle.lev $(SLIB)wizard1.lev $(SLIB)wizard2.lev
621#	-delete $(SLIB)wizard3.lev $(DAT)dungeon.pdf $(SLIB)valley.lev
622#	-delete $(SLIB)minefill.lev
623#	-delete $(SLIB)minetn-1 $(SLIB)minetn-2 $(SLIB)minend-1 $(SLIB)minend-2
624#	-delete	$(SLIB)soko1-1.lev $(SLIB)soko1-2.lev $(SLIB)soko2-1.lev
625#	-delete $(SLIB)soko2-2.lev $(SLIB)soko3-1.lev $(SLIB)soko3-2.lev
626#	-delete $(SLIB)soko4-1.lev $(SLIB)soko4-2.lev
627#	-delete $(ADFILES)
628#	-delete $(BDFILES)
629#	-delete $(CDFILES)
630#	-delete $(HDFILES)
631#	-delete $(KDFILES)
632#	-delete $(MDFILES)
633#	-delete $(PDFILES)
634#	-delete $(RDFILES)
635#	-delete $(RANFILES)
636#	-delete $(SDFILES)
637#	-delete $(TDFILES)
638#	-delete $(VDFILES)
639#	-delete $(WDFILES)
640	-delete $(I)onames.h $(I)pm.h $(I)date.h
641	-delete $(NHS)tile.c $(NHS)monstr.c
642	-delete $(I)tile.h
643#	-echo to $(I)onames.h "" noline
644#	-wait 2
645#	-echo to $(I)pm.h "" noline
646#	-wait 2
647#	-setdate $(UTIL)makedefs.c
648#	-wait 2
649
650# Creating precompiled version of $(I)hack.h to save disk I/O.
651
652#SFD_BEGIN
653##
654###[DICE]
655###   If we were compiling with DICE and wanted to use the symbol table
656###   pre-loading feature, we would technically not need a rule to make the
657###   precompiled header file, because DCC handles this automatically;
658###   however, we must delete the precompiled header file if any of the
659###   includes change, and we need to create it manually because the
660###   sys/amiga sources, compiled first, define things differently than the
661###   main sources want them.
662##
663##$(HDEP):  $(I)hack.h $(I)pm.h $(I)onames.h
664##	-delete $(I)hack.sym
665##	echo to Ram:hackincl.c "#include <hack.h>"
666##	$(CC) $(CFLAGS) $(CSYM) $(OBJSPEC)Ram:hackincl.o Ram:hackincl.c
667##	-delete Ram:hackincl.c Ram:hackincl.o
668##
669#SFD_ELSE
670
671#X#[SAS5]
672#X#   If we were to use the precompiled header file feature of SAS/C, we
673#X#   would uncomment the following lines.  (Also see defines for HDEP and
674#X#   CSYM near the beginning of this file, as these should be appropriately
675#X#   defined.)
676
677#X#$(HDEP):  $(I)hack.h $(SBIN)makedefs
678#X#	echo to Ram:hackincl.c "#include <$(I)hack.h>"
679#X#	$(CC) $(CFLAGS) -ph $(OBJSPEC)$@ Ram:hackincl.c
680#X#	-delete Ram:hackincl.c
681
682#[MANX]
683#   If we were compiling with Aztec, and wanted to use the symbol table
684#   pre-loading feature, we would uncomment these following two lines.
685
686#$(HDEP):  $(I)hack.h $(SBIN)makedefs
687#	$(CC) $(CFLAGS) -a $(OBJSPEC)Ram:hack.asm +h$@ $(I)hack.h
688#	-delete Ram:hack.asm
689
690#SFD_END
691
692#
693#	Please note:	The dependency lines for the modules here are
694#			deliberately incorrect.  Including "hack.h" in
695#			the dependency list would cause a dependency
696#			loop.
697#
698
699$(SBIN)makedefs:  $(MAKEOBJS)
700	$(LINK) $(LNSPEC) $(SBIN)makedefs $(LIN) $(MAKEOBJS) $(LLIB)
701
702$(OO)makedefs.o:  $(UTIL)makedefs.c $(I)config.h $(I)permonst.h $(I)monsym.h \
703		$(I)objclass.h  $(I)patchlevel.h $(I)qtext.h $(I)artilist.h
704	$(CC) $(DEFSPEC)MAKEDEFS_C $(CFLAGS) $(OBJSPEC)$@ $(UTIL)makedefs.c
705
706$(SBIN)lev_comp:  $(SPLEVOBJS)
707	$(LINK) $(LNSPEC) $(SBIN)lev_comp $(LIN) $(SPLEVOBJS) $(FBFIL) $(FLLIB)
708
709$(SBIN)dgn_comp:  $(DGNCOMPOBJS)
710	$(LINK) $(LNSPEC) $(SBIN)dgn_comp $(LIN) $(DGNCOMPOBJS) $(FBFIL) $(FLLIB)
711
712$(OO)lev_yacc.o:  $(UTIL)lev_yacc.c $(HDEP) $(I)sp_lev.h $(I)pm.h $(I)onames.h
713#	setdate $(UTIL)lev_yacc.c
714	$(CC) $(DEFSPEC)LEV_LEX_C $(DEFSPEC)PREFIX="NH:slib/" $(CFLAGS) \
715		$(DEFSPEC)alloca=malloc $(OBJSPEC)$@ $(UTIL)lev_yacc.c
716
717$(OO)lev_lex.o: $(UTIL)lev_lex.c $(HDEP) $(I)lev_comp.h $(I)sp_lev.h
718	$(CC) $(DEFSPEC)LEV_LEX_C $(CFLAGS) $(OBJSPEC)$@ $(UTIL)lev_lex.c
719
720$(OO)lev_main.o:  $(UTIL)lev_main.c $(HDEP) $(I)pm.h $(I)onames.h $(I)date.h
721	$(CC) $(DEFSPEC)LEV_LEX_C $(DEFSPEC)AMIGA $(CFLAGS) $(OBJSPEC)$@ \
722		$(UTIL)lev_main.c
723
724$(OO)dgn_yacc.o:  $(UTIL)dgn_yacc.c $(HDEP) $(I)dgn_file.h $(I)patchlevel.h
725	$(CC) $(DEFSPEC)LEV_LEX_C $(CFLAGS) $(DEFSPEC)alloca=malloc \
726		$(OBJSPEC)$@ $(UTIL)dgn_yacc.c
727
728$(OO)dgn_lex.o: $(UTIL)dgn_lex.c $(I)config.h $(I)dgn_comp.h $(I)dgn_file.h
729	$(CC) $(DEFSPEC)LEV_LEX_C $(CFLAGS) $(OBJSPEC)$@ $(UTIL)dgn_lex.c
730
731$(OO)dgn_main.o: $(UTIL)dgn_main.c $(I)config.h $(I)date.h
732	$(CC) $(DEFSPEC)LEV_LEX_C $(DEFSPEC)AMIGA $(CFLAGS) $(OBJSPEC)$@ \
733		$(UTIL)dgn_main.c
734
735$(OO)panic.o: $(UTIL)panic.c $(HDEP)
736#SFD_INSTEAD 	$(CC) $(CFLAGS) $(OBJSPEC)%(left) $(UTIL)panic.c
737#none
738
739$(OO)recover.o: $(UTIL)recover.c $(I)config.h $(I)date.h
740	$(CC) $(DEFSPEC)LEV_LEX_C $(DEFSPEC)AMIGA $(CFLAGS) $(OBJSPEC)$@ \
741		$(UTIL)recover.c
742
743$(NETHACK)recover: $(OO)recover.o
744	$(LINK) $(LNSPEC) $(NETHACK)recover $(LIN) $(OO)recover.o $(LLIB)
745
746# [OPTION] -- If you have flex/bison, leave these uncommented.  Otherwise,
747# comment them out and be careful! (You're not guaranteed to have the most
748# up to date *_comp.c, *_comp.h and *_lex.c)
749
750$(I)lev_comp.h: $(UTIL)lev_yacc.c $(I)patchlevel.h
751
752$(UTIL)lev_yacc.c:  $(UTIL)lev_comp.y $(I)patchlevel.h
753	$(BISON) -d $(UTIL)lev_comp.y
754#	copy y.tab.c $(UTIL)lev_yacc.c
755#	copy y.tab.h $(I)lev_comp.h
756	copy $(UTIL)lev_comp.tab.c $(UTIL)lev_yacc.c
757	copy $(UTIL)lev_comp.tab.h $(I)lev_comp.h
758#	delete y.tab.c
759#	delete y.tab.h
760	delete $(UTIL)lev_comp.tab.c
761	delete $(UTIL)lev_comp.tab.h
762
763$(UTIL)lev_lex.c:  $(UTIL)lev_comp.l $(I)patchlevel.h
764	$(FLEX) $(UTIL)lev_comp.l
765	copy lex.yy.c $(UTIL)lev_lex.c
766	delete lex.yy.c
767
768$(I)dgn_comp.h: $(UTIL)dgn_yacc.c $(I)patchlevel.h
769
770$(UTIL)dgn_yacc.c:  $(UTIL)dgn_comp.y $(I)patchlevel.h
771	$(BISON) -d $(UTIL)dgn_comp.y
772#	copy y.tab.c $(UTIL)dgn_yacc.c
773#	copy y.tab.h $(I)dgn_comp.h
774	copy $(UTIL)dgn_comp.tab.c $(UTIL)dgn_yacc.c
775	copy $(UTIL)dgn_comp.tab.h $(I)dgn_comp.h
776#	delete y.tab.c
777#	delete y.tab.h
778	delete $(UTIL)dgn_comp.tab.c
779	delete $(UTIL)dgn_comp.tab.h
780
781$(UTIL)dgn_lex.c:  $(UTIL)dgn_comp.l $(I)patchlevel.h
782	$(FLEX) $(UTIL)dgn_comp.l
783	copy lex.yy.c $(UTIL)dgn_lex.c
784	delete lex.yy.c
785
786#
787#	The following include files depend on makedefs to be created.
788#	As a result, they are not defined in HACKINCL, instead, their
789#	dependencies are explicitly outlined here.
790#
791
792#
793#	date.h should be remade any time any of the source or include code
794#	is modified.  Unfortunately, this would make the contents of this
795#	file far more complex.	Since "hack.h" depends on most of the include
796#	files, we kludge around this by making date.h dependent on hack.h,
797#	even though it doesn't include this file.
798#
799
800#SFD_INSTEAD $(I)date.h $(DAT)options::  $(HDEP) $(SBIN)makedefs $(AMIGAOBJ)
801$(I)date.h $(DAT)options:  $(HDEP) $(SBIN)makedefs $(AMIGAOBJ) $(I)patchlevel.h
802	$(SBIN)makedefs -v
803	$(EXECUTE) $(AMI)ifchange MOVE $(I)t.date.h $(I)date.h
804	-wait 2
805
806$(I)onames.h:  $(SBIN)makedefs
807	$(SBIN)makedefs -o
808	$(EXECUTE) $(AMI)ifchange TOUCH $(I)t.onames.h $(I)onames.h $(I)decl.h
809	$(EXECUTE) $(AMI)ifchange MOVE $(I)t.onames.h $(I)onames.h
810	-wait 2
811
812$(I)pm.h:  $(SBIN)makedefs
813	$(SBIN)makedefs -p
814	$(EXECUTE) $(AMI)ifchange TOUCH $(I)t.pm.h $(I)pm.h $(I)decl.h $(I)youprop.h
815	$(EXECUTE) $(AMI)ifchange MOVE $(I)t.pm.h $(I)pm.h
816	-wait 2
817
818$(SLIB)quest.dat:	$(DAT)quest.txt $(SBIN)makedefs
819	$(SBIN)makedefs -q
820
821$(NHS)monstr.c:  $(HDEP) $(SBIN)makedefs
822	$(SBIN)makedefs -m
823	-wait 2
824
825$(SLIB)oracles:	$(DAT)oracles.txt $(SBIN)makedefs
826	$(SBIN)makedefs -h
827	-wait 2
828
829#
830#	The following programs vary depending on what OS you are using.
831#	As a result, they are not defined in HACKSRC and their dependencies
832#	are explicitly outlined here.
833#
834
835$(O)amidos.o:  $(AMI)amidos.c $(HDEP)
836
837$(O)amirip.o:  $(AMI)amirip.c $(HDEP)
838
839$(O)aglue.o:  $(AMI)aglue.a
840	$(ASM) $(AFLAGS) $(AOBJSPEC)$(O)aglue.o $(AMI)aglue.a
841
842$(O)amisnd.o:	$(AMI)amisnd.c $(HDEP)
843
844$(O)winchar.o:	$(AMI)winchar.c $(NHS)tile.c $(HDEP)
845
846$(NHS)tile.c:	$(WSHARE)tilemap.c
847#SFD_INSTEAD 	$(CCLINK) $(CLFLAGS) $(PNSPEC) $(SBIN)tilemap $(WSHARE)tilemap.c
848	$(CCLINK) $(CFLAGS) $(PNSPEC) $(SBIN)tilemap $(WSHARE)tilemap.c
849	$(SBIN)tilemap
850
851$(O)winstr.o:	$(AMI)winstr.c $(HDEP) $(AMDEP)
852
853$(O)winreq.o:	$(AMI)winreq.c $(HDEP) $(AMDEP) $(AMI)colorwin.c $(AMI)clipwin.c
854
855$(O)winfuncs.o:	$(AMI)winfuncs.c $(HDEP) $(AMDEP) $(I)patchlevel.h
856
857$(O)winkey.o:	$(AMI)winkey.c $(HDEP) $(AMDEP)
858
859$(O)winmenu.o:	$(AMI)winmenu.c $(HDEP) $(AMDEP)
860
861$(O)winami.o:	$(AMI)winami.c $(HDEP) $(AMDEP) #$(AMI)char.c $(AMI)randwin.c
862
863#$(O)amilib.o:	$(AMI)amilib.c $(HDEP) $(AMDEP)
864
865$(O)amiwind.o:  $(AMI)amiwind.c $(AMI)amimenu.c $(HDEP) $(AMDEP)
866
867$(O)amiwbench.o:  $(AMI)amiwbench.c $(HDEP)
868
869$(O)random.o:  $(SHARE)random.c
870
871$(O)pcmain.o:  $(SHARE)pcmain.c $(HDEP) $(I)dlb.h
872
873$(O)dispmap.o:	$(AMI)dispmap.s
874	$(ASM) $(AFLAGS) $(AOBJSPEC)$@ $<
875
876# Stuff to build the front ends
877$(NETHACK)HackWB: $(OO)wb.o $(OO)wbx.o $(OO)loader.o $(OO)multi.o
878	$(LINK) $(LNSPEC) $(NETHACK)HackWB $(LIN) $(OO)wb.o $(OO)wbx.o \
879		$(OO)loader.o $(OO)multi.o $(LLIB)
880
881$(NETHACK)HackCli: $(OO)cli.o $(OO)loader.o $(OO)multi.o
882	$(LINK) $(LNSPEC) $(NETHACK)HackCli $(LIN) $(OO)cli.o $(OO)loader.o \
883		$(OO)multi.o $(LLIB)
884
885# This needs to exist to eliminate the HackWB startup message
886#SFD_INSTEAD $(NETHACK)WBDefaults.def: $(NETHACK)WBDefaults.def
887$(NETHACK)WBDefaults.def:
888	echo to $(NETHACK)WBDefaults.def
889
890WBH	= $(AMI)wbdefs.h $(AMI)wbstruct.h $(AMI)wbprotos.h
891ASP	= $(AMI)splitter
892$(OO)wb.o: $(WBH) $(AMI)wb.c $(AMI)wbwin.c $(AMI)wbdata.c $(AMI)wbgads.c \
893		$(I)patchlevel.h
894	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)wb.o $(AMI)wb.c
895
896$(OO)wbx.o: $(WBH) $(AMI)wbcli.c $(AMI)wbwin.c $(AMI)wbdata.c \
897		$(I)patchlevel.h $(I)date.h
898	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)wbx.o $(AMI)wbcli.c
899
900$(OO)loader.o: $(ASP)/loader.c $(ASP)/split.h $(ASP)/amiout.h $(ASP)/multi.h
901	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)loader.o $(ASP)/loader.c
902
903$(OO)multi.o: $(ASP)/multi.c $(ASP)/multi.h
904	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)multi.o $(ASP)/multi.c
905
906$(OO)cli.o: $(WBH) $(AMI)wbcli.c $(I)patchlevel.h $(I)date.h
907	$(CC) $(WBCFLAGS) $(WBC2FLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)cli.o \
908		$(AMI)wbcli.c
909
910####
911# splitter support
912$(SBIN)splitter:	$(OO)splitter.o $(OO)arg.o
913	$(LINK) $(LNSPEC) $(SBIN)splitter $(LIN) $(OO)splitter.o $(OO)arg.o \
914		$(LLIB)
915
916$(NETHACK)NetHack.dir:	$(SBIN)splitter $(SBIN)NetHack
917	$(SBIN)splitter $(SBIN)NetHack
918
919$(OO)splitter.o:	$(ASP)/splitter.c $(ASP)/split.h $(ASP)/amiout.h $(ASP)/arg.h
920	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)splitter.o \
921		$(ASP)/splitter.c
922
923$(OO)arg.o:	$(ASP)/arg.c $(ASP)/arg.h
924	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)arg.o $(ASP)/arg.c
925
926# Create/copy other stuff into NetHack: directory:
927
928$(NETHACK)tomb.iff:	$(SBIN)xpm2iff $(AMI)grave16.xpm
929	$(SBIN)xpm2iff $(AMI)grave16.xpm $(NETHACK)tomb.iff
930
931$(OO)xpm2iff.o:	$(AMI)xpm2iff.c
932	$(CC) $(CFLAGS) $(INCLSPEC)$(WSHARE) $(OBJSPEC)$@ $(AMI)xpm2iff.c
933
934$(SBIN)xpm2iff:	$(OO)xpm2iff.o
935	$(LINK) $(LNSPEC) $@ $(LIN) $(OO)xpm2iff.o $(FLLIB)
936
937# Tile installation for the tile version of the game
938inst-tiles: $(TILEFILES)
939
940#SFD_INSTEAD $(NETHACK)tiles: $(NETHACK)tiles
941$(NETHACK)tiles:
942	-makedir $(NETHACK)tiles
943
944$(OO)txt2iff.o:	$(AMI)txt2iff.c
945	$(CC) $(CFLAGS) $(CSYM) $(INCLSPEC)$(WSHARE) $(OBJSPEC)$@ \
946		$(AMI)txt2iff.c
947
948$(OO)ppmwrite.o: $(WSHARE)ppmwrite.c
949	$(CC) $(CFLAGS) $(CSYM) $(INCLSPEC)$(WSHARE) $(OBJSPEC)$@ $(WSHARE)ppmwrite.c
950
951$(OO)tiletext.o:	$(WSHARE)tiletext.c $(I)config.h $(WSHARE)tile.h
952	$(CC) $(CFLAGS) $(CSYM) $(INCLSPEC)$(WSHARE) $(OBJSPEC)$@ $(WSHARE)tiletext.c
953
954$(OO)tiletxt.o:	$(WSHARE)tilemap.c $(I)hack.h
955	$(CC) $(CFLAGS) $(CSYM) $(DEFSPEC)TILETEXT $(INCLSPEC)$(WSHARE) $(OBJSPEC)$@ $(WSHARE)tilemap.c
956
957NAMEOBJS = $(O)drawing.o $(O)decl.o $(O)monst.o $(O)objects.o
958
959$(SBIN)txt2ppm:	$(OO)ppmwrite.o $(NAMEOBJS) $(O)alloc.o $(OO)panic.o $(OO)tiletext.o $(OO)tiletxt.o
960	$(LINK) $(LNSPEC) $@ $(LIN) $(OO)ppmwrite.o $(NAMEOBJS) $(OO)tiletext.o $(OO)tiletxt.o $(O)alloc.o $(OO)panic.o $(FLLIB)
961
962$(SBIN)txt2iff: $(OO)txt2iff.o $(NAMEOBJS) $(OO)tiletext.o $(OO)tiletxt.o
963	$(LINK) $(LNSPEC) $@ $(LIN) $(OO)txt2iff.o $(NAMEOBJS) $(OO)tiletext.o \
964		$(OO)tiletxt.o  $(FLLIB)
965
966$(NETHACK)tiles/objects.iff: $(WSHARE)objects.txt $(SBIN)txt2iff
967	$(SBIN)txt2iff $(WSHARE)objects.txt $(NETHACK)tiles/objects.iff
968
969$(NETHACK)tiles/monsters.iff: $(WSHARE)monsters.txt $(SBIN)txt2iff
970	$(SBIN)txt2iff $(WSHARE)monsters.txt $(NETHACK)tiles/monsters.iff
971
972$(NETHACK)tiles/other.iff: $(WSHARE)other.txt $(SBIN)txt2iff
973	$(SBIN)txt2iff $(WSHARE)other.txt $(NETHACK)tiles/other.iff
974
975# Sound installation rules.
976inst-sounds: $(SOUNDFILES)
977	list to T:nhsdat.lst $(SLIB)sounds QUICK NOHEAD
978	echo  >T:make-nhsdat $(SBIN)dlb cCfI $(SLIB)sounds $(NETHACK)nhsdat T:nhsdat.lst
979	echo >>T:make-nhsdat if not exists $(NETHACK)nhsdat
980	echo >>T:make-nhsdat copy $(SLIB)sounds/\#? $(NETHACK)sounds
981	echo >>T:make-nhsdat endif
982	execute T:make-nhsdat
983	-delete T:make-nhsdat
984
985#SFD_INSTEAD $(SLIB)sounds: $(SLIB)sounds
986$(SLIB)sounds:
987	-makedir $(SLIB)sounds
988
989$(SBIN)cvtsnd: $(OO)cvtsnd.o
990	$(LINK) $(LNSPEC) $@ $(LIN) $(OO)cvtsnd.o $(FLLIB)
991
992$(OO)cvtsnd.o: $(AMI)cvtsnd.c
993#SFD_INSTEAD $(CC) $(CFLAGS) $(OBJSPEC)%(left) %(right)
994#none
995
996$(SLIB)sounds/Bell: $(SHARE)sounds/bell.uu
997	$(UUDEC) $(SHARE)sounds/bell.uu
998	$(SBIN)cvtsnd Bell $(SLIB)sounds/Bell
999	-delete Bell
1000
1001$(SLIB)sounds/Bugle: $(SHARE)sounds/bugle.uu
1002	$(UUDEC) $(SHARE)sounds/bugle.uu
1003	$(SBIN)cvtsnd Bugle $(SLIB)sounds/Bugle
1004	-delete Bugle
1005
1006$(SLIB)sounds/Drum_Of_Earthquake: $(SHARE)sounds/erthdrum.uu
1007	$(UUDEC) $(SHARE)sounds/erthdrum.uu
1008	$(SBIN)cvtsnd Drum_Of_Earthquake $(SLIB)sounds/Drum_Of_Earthquake
1009	-delete Drum_Of_Earthquake
1010
1011$(SLIB)sounds/Fire_Horn: $(SHARE)sounds/firehorn.uu
1012	$(UUDEC) $(SHARE)sounds/firehorn.uu
1013	$(SBIN)cvtsnd Fire_Horn $(SLIB)sounds/Fire_Horn
1014	-delete Fire_Horn
1015
1016$(SLIB)sounds/Frost_Horn: $(SHARE)sounds/frsthorn.uu
1017	$(UUDEC) $(SHARE)sounds/frsthorn.uu
1018	$(SBIN)cvtsnd Frost_Horn $(SLIB)sounds/Frost_Horn
1019	-delete Frost_Horn
1020
1021$(SLIB)sounds/Leather_Drum: $(SHARE)sounds/lethdrum.uu
1022	$(UUDEC) $(SHARE)sounds/lethdrum.uu
1023	$(SBIN)cvtsnd Leather_Drum $(SLIB)sounds/Leather_Drum
1024	-delete Leather_Drum
1025
1026$(SLIB)sounds/Magic_Flute: $(SHARE)sounds/mgcflute.uu
1027	$(UUDEC) $(SHARE)sounds/mgcflute.uu
1028	$(SBIN)cvtsnd Magic_Flute $(SLIB)sounds/Magic_Flute
1029	-delete Magic_Flute
1030
1031$(SLIB)sounds/Magic_Harp: $(SHARE)sounds/mgcharp.uu
1032	$(UUDEC) $(SHARE)sounds/mgcharp.uu
1033	$(SBIN)cvtsnd Magic_Harp $(SLIB)sounds/Magic_Harp
1034	-delete Magic_Harp
1035
1036$(SLIB)sounds/Tooled_Horn: $(SHARE)sounds/toolhorn.uu
1037	$(UUDEC) $(SHARE)sounds/toolhorn.uu
1038	$(SBIN)cvtsnd Tooled_Horn $(SLIB)sounds/Tooled_Horn
1039	-delete Tooled_Horn
1040
1041$(SLIB)sounds/Wooden_Flute: $(SHARE)sounds/wdnflute.uu
1042	$(UUDEC) $(SHARE)sounds/wdnflute.uu
1043	$(SBIN)cvtsnd Wooden_Flute $(SLIB)sounds/Wooden_Flute
1044	-delete Wooden_Flute
1045
1046$(SLIB)sounds/Wooden_Harp: $(SHARE)sounds/wdnharp.uu
1047	$(UUDEC) $(SHARE)sounds/wdnharp.uu
1048	$(SBIN)cvtsnd Wooden_Harp $(SLIB)sounds/Wooden_Harp
1049	-delete Wooden_Harp
1050
1051inst-dungeon: $(INSTDUNGEONFILES)
1052
1053$(NETHACK)options : $(DAT)options
1054	copy $(DAT)options $@
1055
1056# Create compiled dungeon files
1057BGM= $(SLIB)bigrm-2.lev $(SLIB)bigrm-3.lev $(SLIB)bigrm-4.lev $(SLIB)bigrm-5.lev
1058$(BGM):	$(SLIB)bigrm-1.lev
1059
1060$(SLIB)bigrm-1.lev: $(DAT)bigroom.des $(SBIN)lev_comp
1061#SFD_INSTEAD $(SBIN)lev_comp $(DAT)bigroom.des
1062#none
1063
1064$(SLIB)castle.lev:  $(DAT)castle.des $(SBIN)lev_comp
1065
1066ENDGAME1= $(SLIB)air.lev $(SLIB)earth.lev $(SLIB)fire.lev $(SLIB)water.lev
1067$(ENDGAME1):	$(SLIB)astral.lev
1068
1069$(SLIB)astral.lev:	$(DAT)endgame.des $(SBIN)lev_comp
1070#SFD_INSTEAD $(SBIN)lev_comp $(DAT)endgame.des
1071#none
1072
1073GEHENNOM1= $(SLIB)asmodeus.lev $(SLIB)baalz.lev $(SLIB)juiblex.lev \
1074  $(SLIB)orcus.lev $(SLIB)sanctum.lev
1075$(GEHENNOM1):	$(SLIB)valley.lev
1076
1077$(SLIB)valley.lev:	$(DAT)gehennom.des $(SBIN)lev_comp
1078#SFD_INSTEAD $(SBIN)lev_comp $(DAT)gehennom.des
1079#none
1080
1081$(SLIB)knox.lev: $(DAT)knox.des $(SBIN)lev_comp
1082#SFD_INSTEAD $(SBIN)lev_comp $(DAT)knox.des
1083#none
1084
1085MINES1= $(SLIB)minend-1.lev $(SLIB)minend-2.lev $(SLIB)minetn-1.lev $(SLIB)minetn-2.lev
1086$(MINES1): $(SLIB)minefill.lev
1087
1088$(SLIB)minefill.lev: $(DAT)mines.des $(SBIN)lev_comp
1089#SFD_INSTEAD $(SBIN)lev_comp $(DAT)mines.des
1090#none
1091
1092$(SLIB)oracle.lev: $(DAT)oracle.des $(SBIN)lev_comp
1093#SFD_INSTEAD $(SBIN)lev_comp $(DAT)oracle.des
1094#none
1095
1096TOWER1= $(SLIB)tower1.lev $(SLIB)tower2.lev
1097$(TOWER1): $(SLIB)tower3.lev
1098
1099$(SLIB)tower3.lev: $(DAT)tower.des $(SBIN)lev_comp
1100#SFD_INSTEAD $(SBIN)lev_comp $(DAT)tower.des
1101#none
1102
1103WIZARD1= $(SLIB)wizard1.lev $(SLIB)wizard2.lev $(SLIB)wizard3.lev \
1104	$(SLIB)fakewiz1.lev
1105$(WIZARD1):  $(SLIB)fakewiz2.lev
1106
1107$(SLIB)fakewiz2.lev:  $(DAT)yendor.des $(SBIN)lev_comp
1108#SFD_INSTEAD $(SBIN)lev_comp $(DAT)yendor.des
1109#none
1110
1111MEDUSA1= $(SLIB)medusa-1.lev
1112$(MEDUSA1): $(SLIB)medusa-2.lev
1113
1114$(SLIB)medusa-2.lev:	$(DAT)medusa.des $(SBIN)lev_comp
1115#SFD_INSTEAD $(SBIN)lev_comp $(DAT)medusa.des
1116#none
1117
1118SOKOBAN1= $(SLIB)soko1-1.lev $(SLIB)soko1-2.lev $(SLIB)soko2-1.lev \
1119	$(SLIB)soko2-2.lev $(SLIB)soko3-1.lev $(SLIB)soko3-2.lev \
1120	$(SLIB)soko4-1.lev
1121$(SOKOBAN1): $(SLIB)soko4-2.lev
1122
1123$(SLIB)soko4-2.lev: $(DAT)sokoban.des $(SBIN)lev_comp
1124#SFD_INSTEAD $(SBIN)lev_comp $(DAT)sokoban.des
1125#none
1126
1127$(ADFILES1):	$(SLIB)Arc-goal.lev
1128
1129$(SLIB)Arc-goal.lev:	$(DAT)Arch.des $(SBIN)lev_comp
1130#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Arch.des
1131#none
1132
1133$(BDFILES1):	$(SLIB)Bar-goal.lev
1134
1135$(SLIB)Bar-goal.lev:	$(DAT)Barb.des $(SBIN)lev_comp
1136#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Barb.des
1137#none
1138
1139$(CDFILES1):	$(SLIB)Cav-goal.lev
1140
1141$(SLIB)Cav-goal.lev:	$(DAT)Caveman.des $(SBIN)lev_comp
1142#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Caveman.des
1143#none
1144
1145$(HDFILES1):	$(SLIB)Hea-goal.lev
1146
1147$(SLIB)Hea-goal.lev:	$(DAT)Healer.des $(SBIN)lev_comp
1148#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Healer.des
1149#none
1150
1151$(KDFILES1):	$(SLIB)Kni-goal.lev
1152
1153$(SLIB)Kni-goal.lev:	$(DAT)Knight.des $(SBIN)lev_comp
1154#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Knight.des
1155#none
1156
1157$(MDFILES1):	$(SLIB)Mon-goal.lev
1158
1159$(SLIB)Mon-goal.lev:	$(DAT)Monk.des $(SBIN)lev_comp
1160#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Monk.des
1161#none
1162
1163$(PDFILES1):	$(SLIB)Pri-goal.lev
1164
1165$(SLIB)Pri-goal.lev:	$(DAT)Priest.des $(SBIN)lev_comp
1166#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Priest.des
1167#none
1168
1169$(RDFILES1):	$(SLIB)Rog-goal.lev
1170
1171$(SLIB)Rog-goal.lev:	$(DAT)Rogue.des $(SBIN)lev_comp
1172#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Rogue.des
1173#none
1174
1175$(RANFILES1):	$(SLIB)Ran-goal.lev
1176
1177$(SLIB)Ran-goal.lev:	$(DAT)Ranger.des $(SBIN)lev_comp
1178#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Ranger.des
1179#none
1180
1181$(SDFILES1):	$(SLIB)Sam-goal.lev
1182
1183$(SLIB)Sam-goal.lev:	$(DAT)Samurai.des $(SBIN)lev_comp
1184#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Samurai.des
1185#none
1186
1187$(TDFILES1):	$(SLIB)Tou-goal.lev
1188
1189$(SLIB)Tou-goal.lev:	$(DAT)Tourist.des $(SBIN)lev_comp
1190#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Tourist.des
1191#none
1192
1193$(VDFILES1):	$(SLIB)Val-goal.lev
1194
1195$(SLIB)Val-goal.lev:	$(DAT)Valkyrie.des $(SBIN)lev_comp
1196#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Valkyrie.des
1197#none
1198
1199$(WDFILES1):	$(SLIB)Wiz-goal.lev
1200
1201$(SLIB)Wiz-goal.lev:	$(DAT)Wizard.des $(SBIN)lev_comp
1202#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Wizard.des
1203#none
1204
1205$(SLIB)dungeon:  $(DAT)dungeon.def $(SBIN)makedefs $(SBIN)dgn_comp
1206	$(SBIN)makedefs -e
1207	$(SBIN)dgn_comp $(DAT)dungeon.pdf
1208	copy $(DAT)dungeon $(SLIB)dungeon
1209	delete $(DAT)dungeon
1210
1211inst-data: $(INSTDATAFILES)
1212
1213$(NETHACK)amii.hlp: $(AMI)amii.hlp
1214	copy $(AMI)amii.hlp $@
1215
1216#$(NETHACK)data:  $(DAT)data
1217#	copy $(DAT)data $@
1218
1219$(SLIB)data:  $(DAT)data.base $(I)config.h $(SBIN)makedefs
1220	$(SBIN)makedefs -d
1221
1222#$(NETHACK)rumors:  $(DAT)rumors
1223#	copy $(DAT)rumors $@
1224
1225$(SLIB)rumors:  $(DAT)rumors.tru $(DAT)rumors.fal $(SBIN)makedefs
1226	$(SBIN)makedefs -r
1227
1228$(SLIB)cmdhelp:  $(DAT)cmdhelp
1229	copy $(DAT)cmdhelp $@
1230
1231$(SLIB)help:  $(DAT)help
1232	copy $(DAT)help $@
1233
1234$(SLIB)hh:  $(DAT)hh
1235	copy $(DAT)hh $@
1236
1237$(NETHACK)HackWB.hlp: $(AMI)HackWB.hlp
1238	copy $(AMI)HackWB.hlp $@
1239
1240$(SLIB)history:  $(DAT)history
1241	copy $(DAT)history $@
1242
1243$(NETHACK)license:  $(DAT)license
1244	copy $(DAT)license $@
1245
1246$(SLIB)opthelp:  $(DAT)opthelp
1247	copy $(DAT)opthelp $@
1248
1249$(NETHACK)Recover.txt: $(DOC)Recover.txt
1250	copy $(DOC)Recover.txt $@
1251
1252$(NETHACK)GuideBook.txt: $(DOC)GuideBook.txt
1253	copy $(DOC)GuideBook.txt $@
1254
1255$(NETHACK)NetHack.txt: $(DOC)NetHack.txt
1256	copy $(DOC)NetHack.txt $@
1257
1258$(NETHACK)Install.ami: $(AMI)Install.ami
1259	copy $(AMI)Install.ami $@
1260
1261#SFD_INSTEAD $(NETHACK)logfile: $(NETHACK)logfile
1262$(NETHACK)logfile:
1263	echo to $@
1264
1265#SFD_INSTEAD $(NETHACK)record: $(NETHACK)record
1266$(NETHACK)record:
1267	echo to $@
1268
1269$(SLIB)wizhelp: $(DAT)wizhelp
1270	copy $(DAT)wizhelp $@
1271
1272# Create the directories here because NetHack.cnf puts them there by default
1273$(NETHACK)NetHack.cnf:  $(AMI)NetHack.cnf
1274	copy $(AMI)NetHack.cnf $@
1275	-makedir $(NETHACK)save
1276	-makedir $(NETHACK)levels
1277
1278#SFD_BEGIN
1279#SFD_ELSE
1280$(O)NetHack.gst: $(GSTSRC) $(I)hack.h
1281	sc makegst=$(GSTFILE) $(CFLAGS) $(GSTSRC)
1282#SFD_END
1283
1284# Unpack and install fonts
1285
1286INSTFONTFILES= 	$(NETHACK)hack.font $(NETHACK)hack $(NETHACK)hack/8
1287
1288inst-fonts: $(INSTFONTFILES)
1289
1290$(NETHACK)hack/8:  $(AMI)amifont8.uu $(NETHACK)hack
1291	$(UUDEC) $(AMI)amifont8.uu
1292	copy 8 $(NETHACK)hack/8
1293	delete 8
1294
1295$(NETHACK)hack.font:  $(AMI)amifont.uu
1296	$(UUDEC) $(AMI)amifont.uu
1297	copy hack.font $(NETHACK)hack.font
1298	delete hack.font
1299
1300#SFD_INSTEAD $(NETHACK)hack: $(NETHACK)hack
1301$(NETHACK)hack:
1302	-makedir $@
1303
1304INSTICONFILES= \
1305	$(NETHACK)default.icon $(NETHACK)NetHack.info $(NETHACK)NewGame.info \
1306	$(NETHACK)HackWB.info
1307
1308inst-icons: $(INSTICONFILES)
1309
1310# Unpack the icons into place
1311
1312$(NETHACK)default.icon:  $(AMI)dflticon.uu
1313	$(UUDEC) $(AMI)dflticon.uu
1314#	copy default.icon $(NETHACK)default.icon
1315#	delete default.icon
1316
1317$(NETHACK)NetHack.info:  $(AMI)NHinfo.uu
1318	$(UUDEC) $(AMI)NHinfo.uu
1319#	copy NetHack.info $(NETHACK)NetHack.info
1320#	delete NetHack.info
1321
1322$(NETHACK)NewGame.info:  $(AMI)NewGame.uu
1323	$(UUDEC) $(AMI)NewGame.uu
1324#	copy NewGame.info $(NETHACK)NewGame.info
1325#	delete NewGame.info
1326
1327$(NETHACK)HackWB.info:  $(AMI)HackWB.uu
1328	$(UUDEC) $(AMI)HackWB.uu
1329#	copy HackWB.info $(NETHACK)HackWB.info
1330#	delete HackWB.info
1331
1332# If DLB is defined, create the nhdat library file in the playground
1333# directory.  If not, move all the data files there.
1334$(NETHACK)nhdat:  $(LIBFILES) $(SBIN)dlb
1335	list to T:nhdat.lst $(SLIB) QUICK NOHEAD FILES
1336	echo  >T:make-nhdat $(SBIN)dlb cCfI $(SLIB) $(NETHACK)nhdat T:nhdat.lst
1337	echo >>T:make-nhdat if not exists $(NETHACK)nhdat
1338	echo >>T:make-nhdat copy $(SLIB)\#? $(NETHACK)
1339	echo >>T:make-nhdat endif
1340	execute T:make-nhdat
1341	-delete T:make-nhdat
1342
1343# DO NOT DELETE THIS LINE
1344
1345$(O)allmain.o:  $(NHS)allmain.c $(HDEP)
1346
1347$(O)alloc.o:  $(NHS)alloc.c $(I)config.h
1348
1349$(O)apply.o:  $(NHS)apply.c $(HDEP)
1350#SFD_INSTEAD #none
1351	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)apply.c
1352
1353$(O)artifact.o:  $(NHS)artifact.c $(HDEP) $(I)artifact.h $(I)artilist.h
1354
1355$(O)attrib.o:  $(NHS)attrib.c $(HDEP) $(I)artifact.h
1356
1357$(O)ball.o: $(NHS)ball.c $(HDEP)
1358
1359$(O)bones.o:  $(NHS)bones.c $(HDEP) $(I)lev.h
1360
1361$(O)botl.o:	$(NHS)botl.c $(HDEP)
1362
1363$(O)cmd.o:  $(NHS)cmd.c $(HDEP) $(I)func_tab.h
1364
1365$(O)dbridge.o:  $(NHS)dbridge.c $(HDEP)
1366
1367$(O)decl.o:  $(NHS)decl.c $(HDEP) $(I)quest.h
1368
1369$(O)detect.o: $(NHS)detect.c $(HDEP) $(I)artifact.h
1370
1371$(O)dig.o: $(NHS)dig.c $(HDEP)
1372
1373$(O)display.o:  $(NHS)display.c $(HDEP)
1374
1375$(O)dlb.o: $(NHS)dlb.c $(HDEP) $(I)dlb.h
1376
1377$(O)do.o:  $(NHS)do.c $(HDEP) $(I)lev.h
1378
1379$(O)do_name.o:  $(NHS)do_name.c $(HDEP)
1380
1381$(O)do_wear.o:  $(NHS)do_wear.c $(HDEP)
1382
1383$(O)dog.o:  $(NHS)dog.c $(HDEP)
1384
1385$(O)dogmove.o:  $(NHS)dogmove.c $(HDEP) $(I)mfndpos.h
1386
1387$(O)dokick.o:  $(NHS)dokick.c $(HDEP)
1388
1389$(O)dothrow.o:  $(NHS)dothrow.c $(HDEP)
1390
1391$(O)drawing.o:  $(NHS)drawing.c $(HDEP) $(I)tcap.h
1392	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)drawing.c
1393
1394$(O)dungeon.o:  $(NHS)dungeon.c $(HDEP) $(I)dgn_file.h $(I)dlb.h
1395
1396$(O)eat.o:  $(NHS)eat.c $(HDEP)
1397
1398$(O)end.o:  $(NHS)end.c $(HDEP) $(I)lev.h $(I)dlb.h
1399
1400$(O)engrave.o:  $(NHS)engrave.c $(HDEP) $(I)lev.h
1401
1402$(O)exper.o:  $(NHS)exper.c $(HDEP)
1403
1404$(O)explode.o:  $(NHS)explode.c $(HDEP)
1405
1406$(O)extralev.o:  $(NHS)extralev.c $(HDEP)
1407
1408$(O)files.o:  $(NHS)files.c $(HDEP) $(I)dlb.h $(I)date.h
1409
1410$(O)fountain.o:  $(NHS)fountain.c $(HDEP)
1411
1412$(O)hack.o:  $(NHS)hack.c $(HDEP)
1413
1414$(O)hacklib.o:  $(NHS)hacklib.c $(HDEP)
1415
1416$(O)invent.o:  $(NHS)invent.c $(HDEP) $(I)artifact.h
1417
1418$(O)light.o:  $(NHS)light.c $(HDEP) $(I)lev.h
1419
1420$(O)lock.o:  $(NHS)lock.c $(HDEP)
1421
1422$(O)mail.o:  $(NHS)mail.c $(HDEP) $(I)mail.h
1423
1424$(O)makemon.o:  $(NHS)makemon.c $(HDEP)
1425
1426$(O)mapglyph.o:  $(NHS)mapglyph.c $(HDEP)
1427
1428$(O)mcastu.o:  $(NHS)mcastu.c $(HDEP)
1429
1430$(O)mhitm.o:  $(NHS)mhitm.c $(HDEP) $(I)artifact.h
1431
1432$(O)mhitu.o:  $(NHS)mhitu.c $(HDEP) $(I)artifact.h
1433	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)mhitu.c
1434
1435$(O)minion.o:  $(NHS)minion.c $(HDEP)
1436
1437$(O)mklev.o:  $(NHS)mklev.c $(HDEP)
1438
1439$(O)mkmap.o:  $(NHS)mkmap.c $(HDEP) $(I)sp_lev.h
1440
1441$(O)mkmaze.o:  $(NHS)mkmaze.c $(HDEP) $(I)sp_lev.h $(I)lev.h
1442
1443$(O)mkobj.o:  $(NHS)mkobj.c $(HDEP) $(I)artifact.h $(I)prop.h
1444
1445$(O)mkroom.o:  $(NHS)mkroom.c $(HDEP)
1446
1447$(O)mon.o:  $(NHS)mon.c $(HDEP) $(I)mfndpos.h
1448
1449$(O)mondata.o:  $(NHS)mondata.c $(HDEP)
1450
1451$(O)monmove.o:  $(NHS)monmove.c $(HDEP) $(I)mfndpos.h $(I)artifact.h
1452
1453$(O)monst.o:  $(NHS)monst.c $(I)config.h $(I)permonst.h $(I)monsym.h $(I)color.h
1454
1455$(O)monstr.o:  $(NHS)monstr.c $(HDEP)
1456#SFD_INSTEAD 	$(CC) $(CFLAGS) $(OBJSPEC)%(left) $(NHS)monstr.c
1457#none
1458
1459$(O)mplayer.o:	$(NHS)mplayer.c $(HDEP)
1460
1461$(O)mthrowu.o:  $(NHS)mthrowu.c $(HDEP)
1462
1463$(O)muse.o:	$(NHS)muse.c $(HDEP)
1464	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)muse.c
1465
1466$(O)music.o:  $(NHS)music.c $(HDEP) #interp.c
1467
1468$(O)o_init.o:  $(NHS)o_init.c $(HDEP) $(I)lev.h
1469
1470$(O)objects.o:  $(NHS)objects.c $(I)config.h $(I)obj.h $(I)objclass.h \
1471		$(I)prop.h $(I)skills.h $(I)color.h
1472#SFD_INSTEAD #none
1473	$(CC) $(CFLAGS) $(INCLSPEC)$(NHS) $(OBJSPEC)$@ $(NHS)objects.c
1474
1475$(O)objnam.o:  $(NHS)objnam.c $(HDEP)
1476
1477$(O)options.o:  $(NHS)options.c $(HDEP) $(I)tcap.h $(I)config.h \
1478		$(I)objclass.h $(I)flag.h
1479
1480$(O)pager.o:  $(NHS)pager.c $(HDEP) $(I)dlb.h
1481
1482$(O)pickup.o:  $(NHS)pickup.c $(HDEP)
1483
1484$(O)pline.o:	$(NHS)pline.c $(HDEP)
1485
1486$(O)polyself.o:  $(NHS)polyself.c $(HDEP)
1487
1488$(O)potion.o:  $(NHS)potion.c $(HDEP)
1489
1490$(O)pray.o:  $(NHS)pray.c $(HDEP)
1491
1492$(O)priest.o:  $(NHS)priest.c $(HDEP) $(I)mfndpos.h
1493
1494$(O)quest.o:	$(NHS)quest.c $(HDEP) $(I)quest.h $(I)qtext.h
1495
1496$(O)questpgr.o: $(NHS)questpgr.c $(HDEP) $(I)qtext.h $(I)dlb.h
1497
1498$(O)read.o:  $(NHS)read.c $(HDEP)
1499
1500$(O)rect.o:	$(NHS)rect.c $(HDEP)
1501
1502$(O)region.o:	$(NHS)region.c $(HDEP)
1503
1504$(O)restore.o:  $(NHS)restore.c $(HDEP) $(I)lev.h $(I)tcap.h $(I)quest.h
1505
1506$(O)rnd.o:  $(NHS)rnd.c $(HDEP)
1507
1508$(O)role.o:	$(NHS)role.c $(HDEP)
1509
1510$(O)rumors.o:  $(NHS)rumors.c $(HDEP) $(I)dlb.h
1511
1512$(O)save.o:  $(NHS)save.c $(HDEP) $(I)lev.h $(I)quest.h
1513
1514$(O)shk.o:  $(NHS)shk.c $(HDEP)
1515#SFD_INSTEAD #none
1516	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)shk.c
1517
1518$(O)shknam.o:  $(NHS)shknam.c $(HDEP)
1519
1520$(O)sit.o:  $(NHS)sit.c $(HDEP) $(I)artifact.h
1521
1522$(O)sounds.o:  $(NHS)sounds.c $(HDEP)
1523
1524$(O)sp_lev.o:  $(NHS)sp_lev.c $(HDEP) $(I)sp_lev.h $(I)rect.h $(I)dlb.h
1525
1526$(O)spell.o:  $(NHS)spell.c $(HDEP)
1527
1528$(O)steal.o:  $(NHS)steal.c $(HDEP)
1529
1530$(O)steed.o:	$(NHS)steed.c $(HDEP)
1531
1532$(O)sys.o:	$(NHS)sys.c $(HDEP)
1533
1534$(O)teleport.o:	$(NHS)teleport.c $(HDEP)
1535
1536$(O)timeout.o:  $(NHS)timeout.c $(HDEP) $(I)lev.h
1537
1538$(O)topten.o:  $(NHS)topten.c $(HDEP) $(I)dlb.h
1539
1540$(O)track.o:  $(NHS)track.c $(HDEP)
1541
1542$(O)trap.o:  $(NHS)trap.c $(HDEP)
1543#SFD_INSTEAD #none
1544	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)trap.c
1545
1546$(O)u_init.o:  $(NHS)u_init.c $(HDEP)
1547
1548$(O)uhitm.o:  $(NHS)uhitm.c $(HDEP)
1549	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)uhitm.c
1550
1551$(O)vault.o:  $(NHS)vault.c $(HDEP)
1552
1553$(O)version.o:  $(NHS)version.c $(HDEP) $(I)date.h $(I)patchlevel.h
1554
1555# DMake doesn't grok mid-line comments
1556#SFD_INSTEAD $(O)vision.o:  $(NHS)vision.c $(HDEP)
1557$(O)vision.o:  $(NHS)vision.c $(HDEP) #$(I)vis_tab.h
1558
1559$(O)weapon.o:  $(NHS)weapon.c $(HDEP)
1560
1561$(O)were.o:  $(NHS)were.c $(HDEP)
1562
1563$(O)wield.o:  $(NHS)wield.c $(HDEP)
1564
1565$(O)windows.o:  $(NHS)windows.c $(HDEP) $(I)wintty.h
1566
1567$(O)wizard.o:  $(NHS)wizard.c $(HDEP) $(I)qtext.h
1568
1569$(O)worm.o:  $(NHS)worm.c $(HDEP) $(I)lev.h
1570
1571$(O)worn.o:  $(NHS)worn.c $(HDEP)
1572
1573$(O)write.o:  $(NHS)write.c $(HDEP)
1574
1575$(O)zap.o:  $(NHS)zap.c $(HDEP)
1576	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)zap.c
1577
1578$(O)getline.o:	$(TTY)getline.c $(HDEP) $(I)wintty.h
1579
1580$(O)termcap.o:	$(TTY)termcap.c $(HDEP) $(I)wintty.h $(I)tcap.h
1581
1582$(O)topl.o:	$(TTY)topl.c $(HDEP) $(I)wintty.h $(I)tcap.h
1583
1584$(O)wintty.o:	$(TTY)wintty.c $(HDEP) $(I)wintty.h $(I)tcap.h \
1585		$(I)date.h $(I)patchlevel.h
1586
1587$(O)amitty.o:	$(AMI)amitty.c $(HDEP)
1588
1589$(O)amistack.o:	$(AMI)amistack.c
1590	$(CC) $(CFLAGS3) $(CSYM) $(OBJSPEC)$@ $(AMI)amistack.c
1591
1592$(O)rip.o:	$(NHS)rip.c $(HDEP)
1593
1594
1595$(I)config.h:  $(I)config1.h $(I)tradstdc.h $(I)global.h
1596	-setdate $(I)config.h
1597	-wait 2
1598
1599# onames.h handled at onames.h target, pm.h
1600
1601$(I)decl.h:  $(I)quest.h $(I)spell.h $(I)color.h $(I)obj.h $(I)you.h
1602	-setdate $(I)decl.h
1603	-wait 2
1604
1605$(I)global.h:  $(I)coord.h $(I)pcconf.h $(I)amiconf.h
1606	-setdate $(I)global.h
1607	-wait 2
1608
1609$(I)hack.h:  $(I)config.h $(I)context.h $(I)trap.h $(I)decl.h $(I)dungeon.h \
1610		$(I)monsym.h $(I)mkroom.h $(I)objclass.h $(I)flag.h $(I)rm.h \
1611		$(I)vision.h $(I)display.h $(I)wintype.h $(I)engrave.h \
1612		$(I)rect.h $(I)region.h $(I)trampoli.h $(I)sys.h
1613	-setdate $(I)hack.h
1614	-wait 2
1615
1616$(I)permonst.h:  $(I)monattk.h $(I)monflag.h $(I)align.h
1617	-setdate $(I)permonst.h
1618	-wait 2
1619
1620$(I)you.h:  $(I)align.h $(I)attrib.h $(I)monst.h $(I)mextra.h $(I)youprop.h $(I)skills.h
1621	-setdate $(I)you.h
1622	-wait 2
1623
1624# pm.h handled at target
1625
1626$(I)youprop.h:  $(I)prop.h $(I)permonst.h $(I)mondata.h
1627	-setdate $(I)youprop.h
1628	-wait 2
1629
1630$(I)display.h: $(I)vision.h $(I)mondata.h
1631	-setdate $(I)display.h
1632	-wait 2
1633
1634$(I)dungeon.h: $(I)align.h
1635	-setdate $(I)dungeon.h
1636	-wait 2
1637
1638$(I)engrave.h: $(I)trampoli.h $(I)rect.h
1639	-setdate $(I)engrave.h
1640	-wait 2
1641
1642$(I)mextra.h: $(I)align.h
1643	-setdate $(I)mextra.h
1644	-wait 2
1645
1646$(I)mondata.h: $(I)align.h
1647	-setdate $(I)mondata.h
1648	-wait 2
1649
1650$(I)monst.h: $(I)align.h $(I)mextra.h
1651	-setdate $(I)monst.h
1652	-wait 2
1653
1654$(I)pcconf.h: $(I)micro.h $(I)system.h
1655	-setdate $(I)pcconf.h
1656	-wait 2
1657
1658$(I)rm.h: $(I)align.h
1659	-setdate $(I)rm.h
1660	-wait 2
1661
1662
1663#notes
1664#  install keeps doing re-install because it keeps rebuilding lev_comp???
1665#  fixed(?) - deleted setdate
1666#  make nhdat rebuils sys/amiga objects
1667