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