1#	NetHack Makefile.
2#	SCCS Id: @(#)Makefile.agc	3.2	2000/01/12
3# Copyright (c) Kenneth Lorber, Bethesda, Maryland, 1991,1992,1993,1996.
4# NetHack may be freely redistributed.  See license for details.
5
6###
7### modified for gcc by Teemu Suikki (zu@iki.fi)
8###
9### note: you need to use smake.. sorry
10###
11
12###
13### DIRECTORY STRUCTURE
14###
15
16NH = nh:
17
18SBIN = $(NH)sbin/
19SLIB = $(NH)slib/
20NETHACK = $(NH)NetHack/
21HACKEXE = $(NH)HackExe/
22AMI = $(NH)sys/amiga/
23DAT = $(NH)dat/
24DOC = $(NH)doc/
25I = $(NH)include/
26SHARE = $(NH)sys/share/
27NHS = $(NH)src/
28TTY = $(NH)win/tty/
29WSHARE  = $(NH)win/share/
30UTIL = $(NH)util/
31O = $(NH)obj/
32OO = $(NH)objo/
33#	NB: O and OO MUST be different directories
34
35###
36### INVOCATION
37###
38
39MAKE = smake
40
41# Startup makefile with:
42#
43#	$(MAKE) -f $(AMI)Makefile.amigcc
44#	$(MAKE) -f $(AMI)Makefile.amigcc install
45#
46# You may use following targets on $(MAKE) command lines:
47#   all		do it all (default)
48#   link	just create binary from object files
49#   obj		just create common object files
50#   obja	just create amiga object files
51#   objs	just create shared object files
52#   clean	deletes the object files
53#   spotless	deletes the object files, main binary, and more
54#
55# Note:  We do not build the Guidebook here since it needs tbl
56# (See the file sys/unix/Makefile.doc for more information)
57
58#[SAS5] [and gcc?]
59#   If we were to use the precompiled header file feature in a newer version
60#   of SAS/C, we would comment out these following two lines.
61#   If we don't use precompiled header files, we uncomment it as well.
62
63HDEP	= $(I)hack.h
64CSYM	=
65
66#Pathname for uudecode program:
67UUDEC	= uudecode
68
69# Flex/Bison command assignments -- Useful only if you have flex/bison
70FLEX	= flex
71BISON	= bison
72# FBFIL and FBLIB may be used, if required by your version of flex or bison,
73# to specify additional files or libraries to be linked with
74FBFIL	=
75FBLIB	= #lib lib:compat.lib
76
77# If you're compiling this on a 1.3 system, you'll have to uncomment the
78# following (for use with the ifchange script below).  Also useful instead of
79# "protect ifchange +s"
80EXECUTE = execute
81
82# Headers we depend on
83AMDEP = $(AMI)winproto.h $(AMI)winext.h $(AMI)windefs.h $(I)winami.h
84
85# Pathname for the C compiler being used.
86
87CC = gcc -c
88ASM = as
89
90# Compilation flags for selected C Compiler:
91#   $(CFLAGS) should appear before filename arguments of $(CC) command line.
92
93CFLAGS = -O3 -I $(I)
94
95# Components of various link command lines:
96#   $(LINK) should be the pathname of the linker being used (with any options
97#   that should appear at the beginning of the command line).  The name of the
98#   output file should appear immediately after $(LNSPEC).  $(LIN) should
99#   appear before the list of object files in each link command.  $(LLINK)
100#   should appear as the list of object files in the link command line that
101#   creates the NetHack executable.  $(LLIB) should appear at the end of each
102#   link command line.
103
104LINK = gcc -noixemul -O3
105LIN	 =
106LLINK	 =
107LLIB	 =
108FLLIB	 =
109OBJSPEC = -o
110PNSPEC	= -o
111LNSPEC = -o
112CCLINK	= gcc -noixemul
113CLFLAGS = -O3
114INCLSPEC = -I
115DEFSPEC = -D
116IGNSPEC = -j
117
118###
119### FILE LISTS
120###
121
122# A more reasonable random number generator (recommended for the Amiga):
123
124RANDOBJ	= $(O)random.o
125
126.PRECIOUS:  $(I)config.h $(I)decl.h $(I)hack.h $(I)permonst.h $(I)you.h
127
128# Almost nothing below this line should have to be changed.
129# (Exceptions are marked by [SAS6], [MANX], etc.)
130#
131# Other things that have to be reconfigured are in config.h,
132# (amiconf.h, pcconf.h), and possibly system.h, tradstdc.h.
133
134# Object files for makedefs:
135
136MAKEOBJS = \
137	$(OO)makedefs.o $(O)monst.o $(O)objects.o
138
139# Object files for special levels compiler:
140
141SPLEVOBJS = \
142	$(OO)lev_yacc.o $(OO)lev_lex.o	$(OO)lev_main.o \
143	$(O)decl.o 	$(O)drawing.o	$(O)monst.o \
144	$(O)objects.o	$(OO)panic.o
145
146# Object files for dungeon compiler
147
148DGNCOMPOBJS = \
149	$(OO)dgn_yacc.o	$(OO)dgn_lex.o	$(OO)dgn_main.o $(O)alloc.o $(OO)panic.o
150
151# Object files for NetHack:
152
153COMMOBJ = \
154	$(O)allmain.o	$(O)alloc.o	$(O)apply.o 	$(O)artifact.o	\
155	$(O)attrib.o	$(O)ball.o	$(O)bones.o	$(O)botl.o	\
156	$(O)cmd.o	$(O)dbridge.o	$(O)decl.o	$(O)detect.o	\
157	$(O)dig.o	$(O)display.o	$(O)dlb.o	$(O)do.o	\
158	$(O)do_name.o	$(O)do_wear.o	$(O)dog.o	$(O)dogmove.o	\
159	$(O)dokick.o	$(O)dothrow.o	$(O)drawing.o	$(O)dungeon.o	\
160	$(O)eat.o	$(O)end.o	$(O)engrave.o	$(O)exper.o	\
161	$(O)explode.o	$(O)extralev.o	$(O)files.o 	$(O)fountain.o	\
162	$(O)hack.o	$(O)hacklib.o	$(O)invent.o	$(O)light.o	\
163	$(O)lock.o	$(O)mail.o	$(O)makemon.o	$(O)mapglyph.o	\
164	$(O)mcastu.o	$(O)mhitm.o	$(O)mhitu.o	$(O)minion.o	\
165	$(O)mklev.o	$(O)mkmap.o	$(O)mkmaze.o	$(O)mkobj.o	\
166	$(O)mkroom.o	$(O)mon.o	$(O)mondata.o	$(O)monmove.o	\
167	$(O)monst.o	$(O)mplayer.o	$(O)mthrowu.o	$(O)muse.o	\
168	$(O)music.o	$(O)o_init.o	$(O)objects.o	$(O)objnam.o	\
169	$(O)options.o	$(O)pager.o	$(O)pickup.o	$(O)pline.o	\
170	$(O)polyself.o	$(O)potion.o	$(O)pray.o	$(O)priest.o	\
171	$(O)quest.o	$(O)questpgr.o	$(O)read.o	$(O)rect.o	\
172	$(O)region.o	$(O)restore.o	$(O)rnd.o	$(O)role.o	\
173	$(O)rumors.o	$(O)save.o	$(O)shk.o	$(O)shknam.o	\
174	$(O)sit.o	$(O)sounds.o	$(O)sp_lev.o	$(O)spell.o	\
175	$(O)steal.o	$(O)steed.o	$(O)teleport.o	$(O)timeout.o	\
176	$(O)topten.o	$(O)track.o	$(O)trap.o	$(O)u_init.o	\
177	$(O)uhitm.o	$(O)vault.o	$(O)version.o	$(O)vision.o	\
178	$(O)weapon.o	$(O)were.o	$(O)wield.o	$(O)windows.o	\
179	$(O)wizard.o	$(O)worm.o	$(O)worn.o	$(O)write.o	\
180	$(O)zap.o
181
182MAKEDEFOBJ = \
183	$(O)monstr.o
184
185AMIGAOBJ = \
186	$(O)amidos.o	$(O)amirip.o 	$(O)amisnd.o	$(O)amistack.o	\
187	$(O)amiwind.o	$(O)winami.o	$(O)winchar.o	$(O)winfuncs.o	\
188	$(O)winkey.o	$(O)winmenu.o	$(O)winreq.o	$(O)winstr.o
189
190# Objects from assembly sources (because DMake can't handle default rules)
191AMIGAOBJ2 = \
192#	$(O)dispmap.o
193
194SHAREOBJ = \
195	$(O)pcmain.o	$(RANDOBJ)
196
197TTYOBJ = \
198	$(O)getline.o $(O)termcap.o $(O)topl.o $(O)wintty.o $(O)amitty.o \
199	$(O)rip.o
200
201# Yuck yuck yuck.  Have to tell DMake where these are, since they're not
202# all in the same place.
203TTYSRC = \
204	$(TTY)getline.c $(TTY)termcap.c $(TTY)topl.c $(TTY)wintty.c \
205	$(AMI)amitty.c $(NHS)rip.c
206
207# All the object files for NetHack:
208
209HOBJ = $(COMMOBJ) $(AMIGAOBJ) $(AMIGAOBJ2) $(SHAREOBJ) $(MAKEDEFOBJ) $(TTYOBJ)
210
211###
212### DATA FILES
213###
214
215# quest files
216ADFILES1= $(SLIB)Arc-fila.lev $(SLIB)Arc-filb.lev $(SLIB)Arc-loca.lev \
217	$(SLIB)Arc-strt.lev
218ADFILES= $(SLIB)Arc-goal.lev $(ADFILES1)
219
220BDFILES1= $(SLIB)Bar-fila.lev $(SLIB)Bar-filb.lev $(SLIB)Bar-loca.lev \
221	$(SLIB)Bar-strt.lev
222BDFILES= $(SLIB)Bar-goal.lev $(BDFILES1)
223
224CDFILES1= $(SLIB)Cav-fila.lev $(SLIB)Cav-filb.lev $(SLIB)Cav-loca.lev \
225	$(SLIB)Cav-strt.lev
226CDFILES= $(SLIB)Cav-goal.lev $(CDFILES1)
227
228HDFILES1= $(SLIB)Hea-fila.lev $(SLIB)Hea-filb.lev $(SLIB)Hea-loca.lev \
229	$(SLIB)Hea-strt.lev
230HDFILES= $(SLIB)Hea-goal.lev $(HDFILES1)
231
232KDFILES1= $(SLIB)Kni-fila.lev $(SLIB)Kni-filb.lev $(SLIB)Kni-loca.lev \
233	$(SLIB)Kni-strt.lev
234KDFILES= $(SLIB)Kni-goal.lev $(KDFILES1)
235
236MDFILES1= $(SLIB)Mon-fila.lev $(SLIB)Mon-filb.lev $(SLIB)Mon-loca.lev \
237	$(SLIB)Mon-strt.lev
238MDFILES= $(SLIB)Mon-goal.lev $(MDFILES1)
239
240PDFILES1= $(SLIB)Pri-fila.lev $(SLIB)Pri-filb.lev $(SLIB)Pri-loca.lev \
241	$(SLIB)Pri-strt.lev
242PDFILES= $(SLIB)Pri-goal.lev $(PDFILES1)
243
244RDFILES1= $(SLIB)Rog-fila.lev $(SLIB)Rog-filb.lev $(SLIB)Rog-loca.lev \
245	$(SLIB)Rog-strt.lev
246RDFILES= $(SLIB)Rog-goal.lev $(RDFILES1)
247
248RANFILES1= $(SLIB)Ran-fila.lev $(SLIB)Ran-filb.lev $(SLIB)Ran-loca.lev \
249	$(SLIB)Ran-strt.lev
250RANFILES= $(SLIB)Ran-goal.lev $(RANFILES1)
251
252SDFILES1= $(SLIB)Sam-fila.lev $(SLIB)Sam-filb.lev $(SLIB)Sam-loca.lev \
253	$(SLIB)Sam-strt.lev
254SDFILES= $(SLIB)Sam-goal.lev $(SDFILES1)
255
256TDFILES1= $(SLIB)Tou-fila.lev $(SLIB)Tou-filb.lev $(SLIB)Tou-loca.lev \
257	$(SLIB)Tou-strt.lev
258TDFILES= $(SLIB)Tou-goal.lev $(TDFILES1)
259
260VDFILES1= $(SLIB)Val-fila.lev $(SLIB)Val-filb.lev $(SLIB)Val-loca.lev \
261	$(SLIB)Val-strt.lev
262VDFILES= $(SLIB)Val-goal.lev $(VDFILES1)
263
264WDFILES1= $(SLIB)Wiz-fila.lev $(SLIB)Wiz-filb.lev $(SLIB)Wiz-loca.lev \
265	$(SLIB)Wiz-strt.lev
266WDFILES= $(SLIB)Wiz-goal.lev $(WDFILES1)
267
268XDFILES=	$(ADFILES) $(BDFILES) $(CDFILES) $(HDFILES) $(KDFILES) \
269		$(MDFILES) $(PDFILES) $(RDFILES) $(RANFILES) $(SDFILES) $(TDFILES) \
270		$(VDFILES) $(WDFILES)
271
272SOUNDFILES= \
273	$(SBIN)cvtsnd \
274	$(SLIB)sounds \
275	$(SLIB)sounds/Bell $(SLIB)sounds/Bugle \
276	$(SLIB)sounds/Drum_Of_Earthquake \
277	$(SLIB)sounds/Fire_Horn $(SLIB)sounds/Frost_Horn \
278	$(SLIB)sounds/Leather_Drum $(SLIB)sounds/Magic_Flute \
279	$(SLIB)sounds/Magic_Harp $(SLIB)sounds/Tooled_Horn \
280	$(SLIB)sounds/Wooden_Flute $(SLIB)sounds/Wooden_Harp
281
282TILEFILES= \
283	$(SBIN)txt2iff \
284	$(NETHACK)tiles \
285	$(NETHACK)tiles/objects.iff \
286	$(NETHACK)tiles/monsters.iff \
287	$(NETHACK)tiles/other.iff
288
289INSTDUNGEONFILES1= \
290	$(SLIB)air.lev		$(SLIB)asmodeus.lev	$(SLIB)astral.lev \
291	$(SLIB)baalz.lev	$(SLIB)bigrm-1.lev	$(SLIB)bigrm-2.lev \
292	$(SLIB)bigrm-3.lev	$(SLIB)bigrm-4.lev	$(SLIB)bigrm-5.lev \
293	$(SLIB)castle.lev	$(SLIB)dungeon		$(SLIB)earth.lev \
294	$(SLIB)fakewiz1.lev	$(SLIB)fakewiz2.lev	$(SLIB)fire.lev \
295	$(SLIB)juiblex.lev	$(SLIB)knox.lev		$(SLIB)medusa-1.lev \
296	$(SLIB)medusa-2.lev	$(SLIB)minend-1.lev	$(SLIB)minend-2.lev \
297	$(SLIB)minetn-1.lev	$(SLIB)minetn-2.lev	$(SLIB)minefill.lev \
298	$(SLIB)options		$(SLIB)oracle.lev	$(SLIB)orcus.lev \
299	$(SLIB)sanctum.lev	$(SLIB)soko1-1.lev	$(SLIB)soko1-2.lev \
300	$(SLIB)soko2-1.lev	$(SLIB)soko2-2.lev	$(SLIB)soko3-1.lev \
301	$(SLIB)soko3-2.lev	$(SLIB)soko4-1.lev	$(SLIB)soko4-2.lev \
302	$(SLIB)tower1.lev	$(SLIB)tower2.lev	$(SLIB)tower3.lev \
303	$(SLIB)valley.lev	$(SLIB)water.lev	$(SLIB)wizard1.lev \
304	$(SLIB)wizard2.lev	$(SLIB)wizard3.lev \
305	$(XDFILES)
306
307INSTDUNGEONFILES= $(NETHACK)NetHack.cnf $(INSTDUNGEONFILES1)
308
309
310INSTDATAFILES= \
311	$(NETHACK)license	$(NETHACK)logfile	$(NETHACK)record \
312	$(NETHACK)tomb.iff	$(NETHACK)amii.hlp 	$(NETHACK)Recover.txt \
313	$(NETHACK)GuideBook.txt	$(NETHACK)NetHack.txt	$(NETHACK)Install.ami \
314#	$(NETHACK)HackWB.hlp	$(NETHACK)WBDefaults.def
315
316LIBFILES= \
317	$(INSTDUNGEONFILES1) \
318	$(SLIB)cmdhelp	 	$(SLIB)data		$(SLIB)dungeon \
319	$(SLIB)help		$(SLIB)hh		$(SLIB)history \
320	$(SLIB)opthelp		$(SLIB)oracles		$(SLIB)rumors \
321	$(SLIB)quest.dat	$(SLIB)wizhelp
322
323###
324### Getting down to business:
325###
326
327all:  $(COMPACT_HEADERS) $(SBIN)lev_comp $(SBIN)dgn_comp $(SBIN)NetHack \
328	$(SBIN)dlb $(NETHACK)recover #$(NETHACK)HackCli $(SBIN)splitter \
329#	$(NETHACK)HackWB
330
331install: inst-data inst-dungeon inst-fonts inst-sounds inst-tiles \
332	 $(NETHACK)recover $(NETHACK)NetHack $(NETHACK)nhdat
333	#$(NETHACK)NetHack.dir inst-icons
334
335$(SBIN)NetHack:  link
336
337$(NETHACK)NetHack: $(SBIN)NetHack
338	copy $(SBIN)NetHack $(NETHACK)NetHack
339
340## uuh this is messy.. smake has weird command line length limit
341link: $(HOBJ)
342	list to t:link lformat="$(O)%s" $(O)\#?.o QUICK NOHEAD
343	echo "\#sh" to t:cc
344	echo "$(LINK) $(LNSPEC) $(SBIN)NetHack $(LIN) $(LLIB) $(LLINK) " >>t:cc noline
345	fmt -u -w 2500 t:link >>t:cc
346	sh t:cc
347	delete t:cc t:link
348
349
350## dlb support
351$(OO)dlb_main.o:	$(UTIL)dlb_main.c $(HDEP) $(I)dlb.h $(I)date.h
352	$(CC) $(CFLAGS) $(OBJSPEC)$(OO)dlb_main.o $(UTIL)dlb_main.c
353
354$(SBIN)dlb:	$(OO)dlb_main.o $(O)dlb.o $(O)alloc.o $(OO)panic.o
355	$(LINK) $(PNSPEC) $(SBIN)dlb $(LIN) $(OO)dlb_main.o $(O)dlb.o \
356	  $(O)alloc.o $(OO)panic.o $(LLIB)
357
358obj:  $(HOBJ)
359
360obja:  $(AMIGAOBJ)
361
362objs:  $(SHAREOBJ)
363
364
365SUFFIXES = .lev .des
366.des.lev:
367	$(SBIN)lev_comp $<
368
369# The default method for creating object files:
370
371#$(O)%.o: $(NHS)%.c
372.c.o:
373	$(CC) $(CFLAGS) $(CSYM) $(OBJSPEC)$@ $<
374
375clean:
376	-delete $(O)\#?.o $(OO)\#?.o
377
378spotless:  clean
379	-delete $(SBIN)NetHack $(SBIN)lev_comp $(SBIN)makedefs $(SBIN)dgn_comp
380	-delete $(SBIN)cvtsnd $(SBIN)dlb $(SBIN)txt2iff $(SBIN)splitter
381	-delete $(SBIN)tilemap
382	-delete $(SLIB)data $(SLIB)rumors
383	-delete $(SLIB)\#?.lev
384	-delete $(SLIB)dungeon
385	-delete $(SLIB)cmdhelp $(SLIB)help $(SLIB)hh $(SLIB)history
386	-delete $(SLIB)opthelp $(SLIB)options $(SLIB)oracles
387	-delete $(SLIB)quest.dat $(SLIB)wizhelp
388#	-delete $(SLIB)earth.lev $(SLIB)air.lev $(SLIB)fire.lev
389#	-delete $(SLIB)water.lev $(SLIB)astral.lev
390#	-delete $(SLIB)tower1.lev $(SLIB)tower2.lev $(SLIB)tower3.lev
391#	-delete $(SLIB)fakewiz1.lev $(SLIB)fakewiz2.lev
392#	-delete $(SLIB)medusa-1.lev $(SLIB)medusa-2.lev
393#	-delete $(SLIB)oracle.lev $(SLIB)wizard1.lev $(SLIB)wizard2.lev
394#	-delete $(SLIB)wizard3.lev $(DAT)dungeon.pdf $(SLIB)valley.lev
395#	-delete $(SLIB)minefill.lev
396#	-delete $(SLIB)minetn-1 $(SLIB)minetn-2 $(SLIB)minend-1 $(SLIB)minend-2
397#	-delete	$(SLIB)soko1-1.lev $(SLIB)soko1-2.lev $(SLIB)soko2-1.lev
398#	-delete $(SLIB)soko2-2.lev $(SLIB)soko3-1.lev $(SLIB)soko3-2.lev
399#	-delete $(SLIB)soko4-1.lev $(SLIB)soko4-2.lev
400#	-delete $(ADFILES)
401#	-delete $(BDFILES)
402#	-delete $(CDFILES)
403#	-delete $(HDFILES)
404#	-delete $(KDFILES)
405#	-delete $(MDFILES)
406#	-delete $(PDFILES)
407#	-delete $(RDFILES)
408#	-delete $(RANFILES)
409#	-delete $(SDFILES)
410#	-delete $(TDFILES)
411#	-delete $(VDFILES)
412#	-delete $(WDFILES)
413	-delete $(I)onames.h $(I)pm.h $(I)date.h
414	-delete $(NHS)tile.c $(NHS)monstr.c
415	-delete $(I)tile.h
416#	-echo to $(I)onames.h "" noline
417#	-c:wait 2
418#	-echo to $(I)pm.h "" noline
419#	-c:wait 2
420#	-setdate $(UTIL)makedefs.c
421#	-c:wait 2
422
423# Creating precompiled version of $(I)hack.h to save disk I/O.
424
425#
426#	Please note:	The dependency lines for the modules here are
427#			deliberately incorrect.  Including "hack.h" in
428#			the dependency list would cause a dependency
429#			loop.
430#
431
432$(SBIN)makedefs: $(MAKEOBJS)
433	$(LINK) $(LNSPEC) $(SBIN)makedefs $(LIN) $(MAKEOBJS) $(LLIB)
434
435$(OO)makedefs.o:  $(UTIL)makedefs.c $(I)config.h $(I)permonst.h $(I)monsym.h \
436		$(I)objclass.h  $(I)patchlevel.h $(I)qtext.h $(I)artilist.h
437	$(CC) $(DEFSPEC)MAKEDEFS_C $(CFLAGS) $(OBJSPEC)$@ $(UTIL)makedefs.c
438
439$(SBIN)lev_comp:  $(SPLEVOBJS)
440	$(LINK) $(LNSPEC) $(SBIN)lev_comp $(LIN) $(SPLEVOBJS) $(FBFIL) $(FLLIB)
441
442$(SBIN)dgn_comp:  $(DGNCOMPOBJS)
443	$(LINK) $(LNSPEC) $(SBIN)dgn_comp $(LIN) $(DGNCOMPOBJS) $(FBFIL) $(FLLIB)
444
445$(OO)lev_yacc.o:  $(UTIL)lev_yacc.c $(HDEP) $(I)sp_lev.h $(I)pm.h $(I)onames.h
446#	setdate $(UTIL)lev_yacc.c
447	$(CC) $(DEFSPEC)LEV_LEX_C $(DEFSPEC)PREFIX="NH:slib/" $(CFLAGS) \
448		$(DEFSPEC)alloca=malloc $(OBJSPEC)$@ $(UTIL)lev_yacc.c
449
450$(OO)lev_lex.o: $(UTIL)lev_lex.c $(HDEP) $(I)lev_comp.h $(I)sp_lev.h
451	$(CC) $(DEFSPEC)LEV_LEX_C $(CFLAGS) $(OBJSPEC)$@ $(UTIL)lev_lex.c
452
453$(OO)lev_main.o:  $(UTIL)lev_main.c $(HDEP) $(I)pm.h $(I)onames.h $(I)date.h
454	$(CC) $(DEFSPEC)LEV_LEX_C $(DEFSPEC)AMIGA $(CFLAGS) $(OBJSPEC)$@ \
455		$(UTIL)lev_main.c
456
457$(OO)dgn_yacc.o:  $(UTIL)dgn_yacc.c $(HDEP) $(I)dgn_file.h $(I)patchlevel.h
458	$(CC) $(DEFSPEC)LEV_LEX_C $(CFLAGS) $(DEFSPEC)alloca=malloc \
459		$(OBJSPEC)$@ $(UTIL)dgn_yacc.c
460
461$(OO)dgn_lex.o: $(UTIL)dgn_lex.c $(I)config.h $(I)dgn_comp.h $(I)dgn_file.h
462	$(CC) $(DEFSPEC)LEV_LEX_C $(CFLAGS) $(OBJSPEC)$@ $(UTIL)dgn_lex.c
463
464$(OO)dgn_main.o: $(UTIL)dgn_main.c $(I)config.h $(I)date.h
465	$(CC) $(DEFSPEC)LEV_LEX_C $(DEFSPEC)AMIGA $(CFLAGS) $(OBJSPEC)$@ \
466		$(UTIL)dgn_main.c
467
468$(OO)panic.o: $(UTIL)panic.c $(HDEP)
469
470$(OO)recover.o: $(UTIL)recover.c $(I)config.h $(I)date.h
471	$(CC) $(DEFSPEC)LEV_LEX_C $(DEFSPEC)AMIGA $(CFLAGS) $(OBJSPEC)$@ \
472		$(UTIL)recover.c
473
474$(NETHACK)recover: $(OO)recover.o
475	$(LINK) $(LNSPEC) $(NETHACK)recover $(LIN) $(OO)recover.o $(LLIB)
476
477# [OPTION] -- If you have flex/bison, leave these uncommented.  Otherwise,
478# comment them out and be careful! (You're not guaranteed to have the most
479# up to date *_comp.c, *_comp.h and *_lex.c)
480
481$(I)lev_comp.h: $(UTIL)lev_yacc.c $(I)patchlevel.h
482
483$(UTIL)lev_yacc.c:  $(UTIL)lev_comp.y $(I)patchlevel.h
484	$(BISON) -d $(UTIL)lev_comp.y
485#	copy y.tab.c $(UTIL)lev_yacc.c
486#	copy y.tab.h $(I)lev_comp.h
487	copy $(UTIL)lev_comp.tab.c $(UTIL)lev_yacc.c
488	copy $(UTIL)lev_comp.tab.h $(I)lev_comp.h
489#	delete y.tab.c
490#	delete y.tab.h
491	delete $(UTIL)lev_comp.tab.c
492	delete $(UTIL)lev_comp.tab.h
493
494$(UTIL)lev_lex.c:  $(UTIL)lev_comp.l $(I)patchlevel.h
495	$(FLEX) $(UTIL)lev_comp.l
496	copy lex.yy.c $(UTIL)lev_lex.c
497	delete lex.yy.c
498
499$(I)dgn_comp.h: $(UTIL)dgn_yacc.c $(I)patchlevel.h
500
501$(UTIL)dgn_yacc.c:  $(UTIL)dgn_comp.y $(I)patchlevel.h
502	$(BISON) -d $(UTIL)dgn_comp.y
503#	copy y.tab.c $(UTIL)dgn_yacc.c
504#	copy y.tab.h $(I)dgn_comp.h
505	copy $(UTIL)dgn_comp.tab.c $(UTIL)dgn_yacc.c
506	copy $(UTIL)dgn_comp.tab.h $(I)dgn_comp.h
507#	delete y.tab.c
508#	delete y.tab.h
509	delete $(UTIL)dgn_comp.tab.c
510	delete $(UTIL)dgn_comp.tab.h
511
512$(UTIL)dgn_lex.c:  $(UTIL)dgn_comp.l $(I)patchlevel.h
513	$(FLEX) $(UTIL)dgn_comp.l
514	copy lex.yy.c $(UTIL)dgn_lex.c
515	delete lex.yy.c
516
517#
518#	The following include files depend on makedefs to be created.
519#	As a result, they are not defined in HACKINCL, instead, their
520#	dependencies are explicitly outlined here.
521#
522
523#
524#	date.h should be remade any time any of the source or include code
525#	is modified.  Unfortunately, this would make the contents of this
526#	file far more complex.	Since "hack.h" depends on most of the include
527#	files, we kludge around this by making date.h dependent on hack.h,
528#	even though it doesn't include this file.
529#
530
531$(I)date.h $(DAT)options:  $(HDEP) $(SBIN)makedefs $(AMIGAOBJ) $(I)patchlevel.h
532	$(SBIN)makedefs -v
533	$(EXECUTE) ifchange MOVE $(I)t.date.h $(I)date.h
534	-c:wait 2
535
536$(I)onames.h:  $(SBIN)makedefs
537	$(SBIN)makedefs -o
538	$(EXECUTE) ifchange TOUCH $(I)t.onames.h $(I)onames.h $(I)decl.h
539	$(EXECUTE) ifchange MOVE $(I)t.onames.h $(I)onames.h
540	-c:wait 2
541
542$(I)pm.h:  $(SBIN)makedefs
543	$(SBIN)makedefs -p
544	$(EXECUTE) ifchange TOUCH $(I)t.pm.h $(I)pm.h $(I)decl.h $(I)youprop.h
545	$(EXECUTE) ifchange MOVE $(I)t.pm.h $(I)pm.h
546	-c:wait 2
547
548$(SLIB)quest.dat:	$(DAT)quest.txt $(SBIN)makedefs
549	$(SBIN)makedefs -q
550
551$(NHS)monstr.c:  $(HDEP) $(SBIN)makedefs
552	$(SBIN)makedefs -m
553	-c:wait 2
554
555$(SLIB)oracles:	$(DAT)oracles.txt $(SBIN)makedefs
556	$(SBIN)makedefs -h
557	-c:wait 2
558
559#
560#	The following programs vary depending on what OS you are using.
561#	As a result, they are not defined in HACKSRC and their dependencies
562#	are explicitly outlined here.
563#
564
565$(O)amidos.o:  $(AMI)amidos.c $(HDEP)
566
567$(O)amirip.o:  $(AMI)amirip.c $(HDEP)
568
569$(O)aglue.o:  $(AMI)aglue.a
570	$(ASM) $(AFLAGS) $(AOBJSPEC)$(O)aglue.o $(AMI)aglue.a
571
572$(O)amisnd.o:	$(AMI)amisnd.c $(HDEP)
573
574$(O)winchar.o:	$(AMI)winchar.c $(NHS)tile.c $(HDEP)
575
576$(NHS)tile.c:	$(WSHARE)tilemap.c
577	$(CCLINK) $(CFLAGS) $(PNSPEC) $(SBIN)tilemap $(WSHARE)tilemap.c
578	$(SBIN)tilemap
579
580$(O)winstr.o:	$(AMI)winstr.c $(HDEP) $(AMDEP)
581
582$(O)winreq.o:	$(AMI)winreq.c $(HDEP) $(AMDEP) $(AMI)colorwin.c $(AMI)clipwin.c
583
584$(O)winfuncs.o:	$(AMI)winfuncs.c $(HDEP) $(AMDEP) $(I)patchlevel.h
585
586$(O)winkey.o:	$(AMI)winkey.c $(HDEP) $(AMDEP)
587
588$(O)winmenu.o:	$(AMI)winmenu.c $(HDEP) $(AMDEP)
589
590$(O)winami.o:	$(AMI)winami.c $(HDEP) $(AMDEP) #$(AMI)char.c $(AMI)randwin.c
591
592#$(O)amilib.o:	$(AMI)amilib.c $(HDEP) $(AMDEP)
593
594$(O)amiwind.o:  $(AMI)amiwind.c $(AMI)amimenu.c $(HDEP) $(AMDEP)
595
596$(O)amiwbench.o:  $(AMI)amiwbench.c $(HDEP)
597
598$(O)random.o:  $(SHARE)random.c
599
600$(O)pcmain.o:  $(SHARE)pcmain.c $(HDEP) $(I)dlb.h
601
602$(O)dispmap.o:	$(AMI)dispmap.s
603	$(ASM) $(AFLAGS) $(AOBJSPEC)$@ $<
604
605# Stuff to build the front ends
606$(NETHACK)HackWB: $(OO)wb.o $(OO)wbx.o $(OO)loader.o $(OO)multi.o
607	$(LINK) $(LNSPEC) $(NETHACK)HackWB $(LIN) $(OO)wb.o $(OO)wbx.o \
608		$(OO)loader.o $(OO)multi.o $(LLIB)
609
610$(NETHACK)HackCli: $(OO)cli.o $(OO)loader.o $(OO)multi.o
611	$(LINK) $(LNSPEC) $(NETHACK)HackCli $(LIN) $(OO)cli.o $(OO)loader.o \
612		$(OO)multi.o $(LLIB)
613
614# This needs to exist to eliminate the HackWB startup message
615$(NETHACK)WBDefaults.def:
616	echo to $(NETHACK)WBDefaults.def
617
618WBH	= $(AMI)wbdefs.h $(AMI)wbstruct.h $(AMI)wbprotos.h
619ASP	= $(AMI)splitter
620$(OO)wb.o: $(WBH) $(AMI)wb.c $(AMI)wbwin.c $(AMI)wbdata.c $(AMI)wbgads.c \
621		$(I)patchlevel.h
622	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)wb.o $(AMI)wb.c
623
624$(OO)wbx.o: $(WBH) $(AMI)wbcli.c $(AMI)wbwin.c $(AMI)wbdata.c \
625		$(I)patchlevel.h $(I)date.h
626	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)wbx.o $(AMI)wbcli.c
627
628$(OO)loader.o: $(ASP)/loader.c $(ASP)/split.h $(ASP)/amiout.h $(ASP)/multi.h
629	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)loader.o $(ASP)/loader.c
630
631$(OO)multi.o: $(ASP)/multi.c $(ASP)/multi.h
632	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)multi.o $(ASP)/multi.c
633
634$(OO)cli.o: $(WBH) $(AMI)wbcli.c $(I)patchlevel.h $(I)date.h
635	$(CC) $(WBCFLAGS) $(WBC2FLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)cli.o \
636		$(AMI)wbcli.c
637
638####
639# splitter support
640$(SBIN)splitter:	$(OO)splitter.o $(OO)arg.o
641	$(LINK) $(LNSPEC) $(SBIN)splitter $(LIN) $(OO)splitter.o $(OO)arg.o \
642		$(LLIB)
643
644$(NETHACK)NetHack.dir:	$(SBIN)splitter $(SBIN)NetHack
645	$(SBIN)splitter $(SBIN)NetHack
646
647$(OO)splitter.o:	$(ASP)/splitter.c $(ASP)/split.h $(ASP)/amiout.h $(ASP)/arg.h
648	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)splitter.o \
649		$(ASP)/splitter.c
650
651$(OO)arg.o:	$(ASP)/arg.c $(ASP)/arg.h
652	$(CC) $(WBCFLAGS) $(SPLFLAGS) $(OBJSPEC)$(OO)arg.o $(ASP)/arg.c
653
654# Create/copy other stuff into NetHack: directory:
655
656$(NETHACK)tomb.iff:	$(SBIN)xpm2iff $(AMI)grave16.xpm
657	$(SBIN)xpm2iff $(AMI)grave16.xpm $(NETHACK)tomb.iff
658
659$(OO)xpm2iff.o:	$(AMI)xpm2iff.c
660	$(CC) $(CFLAGS) $(INCLSPEC)$(WSHARE) $(OBJSPEC)$@ $(AMI)xpm2iff.c
661
662$(SBIN)xpm2iff:	$(OO)xpm2iff.o
663	$(LINK) $(LNSPEC) $@ $(LIN) $(OO)xpm2iff.o $(FLLIB)
664
665# Tile installation for the tile version of the game
666inst-tiles: $(TILEFILES)
667
668$(NETHACK)tiles:
669	-makedir $(NETHACK)tiles
670
671$(OO)txt2iff.o:	$(AMI)txt2iff.c
672	$(CC) $(CFLAGS) $(CSYM) $(INCLSPEC)$(WSHARE) $(OBJSPEC)$@ \
673		$(AMI)txt2iff.c
674
675$(OO)ppmwrite.o: $(WSHARE)ppmwrite.c
676	$(CC) $(CFLAGS) $(CSYM) $(INCLSPEC)$(WSHARE) $(OBJSPEC)$@ $(WSHARE)ppmwrite.c
677
678$(OO)tiletext.o:	$(WSHARE)tiletext.c $(I)config.h $(WSHARE)tile.h
679	$(CC) $(CFLAGS) $(CSYM) $(INCLSPEC)$(WSHARE) $(OBJSPEC)$@ $(WSHARE)tiletext.c
680
681$(OO)tiletxt.o:	$(WSHARE)tilemap.c $(I)hack.h
682	$(CC) $(CFLAGS) $(CSYM) $(DEFSPEC)TILETEXT $(INCLSPEC)$(WSHARE) $(OBJSPEC)$@ $(WSHARE)tilemap.c
683
684NAMEOBJS = $(O)drawing.o $(O)decl.o $(O)monst.o $(O)objects.o
685
686$(SBIN)txt2ppm:	$(OO)ppmwrite.o $(NAMEOBJS) $(O)alloc.o $(OO)panic.o $(OO)tiletext.o $(OO)tiletxt.o
687	$(LINK) $(LNSPEC) $@ $(LIN) $(OO)ppmwrite.o $(NAMEOBJS) $(OO)tiletext.o $(OO)tiletxt.o $(O)alloc.o $(OO)panic.o $(FLLIB)
688
689$(SBIN)txt2iff: $(OO)txt2iff.o $(NAMEOBJS) $(OO)tiletext.o $(OO)tiletxt.o
690	$(LINK) $(LNSPEC) $@ $(LIN) $(OO)txt2iff.o $(NAMEOBJS) $(OO)tiletext.o \
691		$(OO)tiletxt.o  $(FLLIB)
692
693$(NETHACK)tiles/objects.iff: $(WSHARE)objects.txt $(SBIN)txt2iff
694	$(SBIN)txt2iff $(WSHARE)objects.txt $(NETHACK)tiles/objects.iff
695
696$(NETHACK)tiles/monsters.iff: $(WSHARE)monsters.txt $(SBIN)txt2iff
697	$(SBIN)txt2iff $(WSHARE)monsters.txt $(NETHACK)tiles/monsters.iff
698
699$(NETHACK)tiles/other.iff: $(WSHARE)other.txt $(SBIN)txt2iff
700	$(SBIN)txt2iff $(WSHARE)other.txt $(NETHACK)tiles/other.iff
701
702# Sound installation rules.
703inst-sounds: $(SOUNDFILES)
704	list to T:nhsdat.lst $(SLIB)sounds QUICK NOHEAD
705	echo  >T:make-nhsdat $(SBIN)dlb cCfI $(SLIB)sounds $(NETHACK)nhsdat T:nhsdat.lst
706	echo >>T:make-nhsdat if not exists $(NETHACK)nhsdat
707	echo >>T:make-nhsdat copy $(SLIB)sounds/\#? $(NETHACK)sounds
708	echo >>T:make-nhsdat endif
709	execute T:make-nhsdat
710	-delete T:make-nhsdat
711
712$(SLIB)sounds:
713	-makedir $(SLIB)sounds
714
715$(SBIN)cvtsnd: $(OO)cvtsnd.o
716	$(LINK) $(LNSPEC) $@ $(LIN) $(OO)cvtsnd.o $(FLLIB)
717
718$(OO)cvtsnd.o: $(AMI)cvtsnd.c
719
720$(SLIB)sounds/Bell: $(SHARE)sounds/bell.uu
721	$(UUDEC) $(SHARE)sounds/bell.uu
722	$(SBIN)cvtsnd Bell $(SLIB)sounds/Bell
723	-delete Bell
724
725$(SLIB)sounds/Bugle: $(SHARE)sounds/bugle.uu
726	$(UUDEC) $(SHARE)sounds/bugle.uu
727	$(SBIN)cvtsnd Bugle $(SLIB)sounds/Bugle
728	-delete Bugle
729
730$(SLIB)sounds/Drum_Of_Earthquake: $(SHARE)sounds/erthdrum.uu
731	$(UUDEC) $(SHARE)sounds/erthdrum.uu
732	$(SBIN)cvtsnd Drum_Of_Earthquake $(SLIB)sounds/Drum_Of_Earthquake
733	-delete Drum_Of_Earthquake
734
735$(SLIB)sounds/Fire_Horn: $(SHARE)sounds/firehorn.uu
736	$(UUDEC) $(SHARE)sounds/firehorn.uu
737	$(SBIN)cvtsnd Fire_Horn $(SLIB)sounds/Fire_Horn
738	-delete Fire_Horn
739
740$(SLIB)sounds/Frost_Horn: $(SHARE)sounds/frsthorn.uu
741	$(UUDEC) $(SHARE)sounds/frsthorn.uu
742	$(SBIN)cvtsnd Frost_Horn $(SLIB)sounds/Frost_Horn
743	-delete Frost_Horn
744
745$(SLIB)sounds/Leather_Drum: $(SHARE)sounds/lethdrum.uu
746	$(UUDEC) $(SHARE)sounds/lethdrum.uu
747	$(SBIN)cvtsnd Leather_Drum $(SLIB)sounds/Leather_Drum
748	-delete Leather_Drum
749
750$(SLIB)sounds/Magic_Flute: $(SHARE)sounds/mgcflute.uu
751	$(UUDEC) $(SHARE)sounds/mgcflute.uu
752	$(SBIN)cvtsnd Magic_Flute $(SLIB)sounds/Magic_Flute
753	-delete Magic_Flute
754
755$(SLIB)sounds/Magic_Harp: $(SHARE)sounds/mgcharp.uu
756	$(UUDEC) $(SHARE)sounds/mgcharp.uu
757	$(SBIN)cvtsnd Magic_Harp $(SLIB)sounds/Magic_Harp
758	-delete Magic_Harp
759
760$(SLIB)sounds/Tooled_Horn: $(SHARE)sounds/toolhorn.uu
761	$(UUDEC) $(SHARE)sounds/toolhorn.uu
762	$(SBIN)cvtsnd Tooled_Horn $(SLIB)sounds/Tooled_Horn
763	-delete Tooled_Horn
764
765$(SLIB)sounds/Wooden_Flute: $(SHARE)sounds/wdnflute.uu
766	$(UUDEC) $(SHARE)sounds/wdnflute.uu
767	$(SBIN)cvtsnd Wooden_Flute $(SLIB)sounds/Wooden_Flute
768	-delete Wooden_Flute
769
770$(SLIB)sounds/Wooden_Harp: $(SHARE)sounds/wdnharp.uu
771	$(UUDEC) $(SHARE)sounds/wdnharp.uu
772	$(SBIN)cvtsnd Wooden_Harp $(SLIB)sounds/Wooden_Harp
773	-delete Wooden_Harp
774
775inst-dungeon: $(INSTDUNGEONFILES)
776
777$(NETHACK)options : $(DAT)options
778	copy $(DAT)options $@
779
780# Create compiled dungeon files
781BGM= $(SLIB)bigrm-2.lev $(SLIB)bigrm-3.lev $(SLIB)bigrm-4.lev $(SLIB)bigrm-5.lev
782$(BGM):	$(SLIB)bigrm-1.lev
783
784$(SLIB)bigrm-1.lev: $(DAT)bigroom.des $(SBIN)lev_comp
785
786$(SLIB)castle.lev:  $(DAT)castle.des $(SBIN)lev_comp
787
788ENDGAME1= $(SLIB)air.lev $(SLIB)earth.lev $(SLIB)fire.lev $(SLIB)water.lev
789$(ENDGAME1):	$(SLIB)astral.lev
790
791$(SLIB)astral.lev:	$(DAT)endgame.des $(SBIN)lev_comp
792
793GEHENNOM1= $(SLIB)asmodeus.lev $(SLIB)baalz.lev $(SLIB)juiblex.lev \
794  $(SLIB)orcus.lev $(SLIB)sanctum.lev
795$(GEHENNOM1):	$(SLIB)valley.lev
796
797$(SLIB)valley.lev:	$(DAT)gehennom.des $(SBIN)lev_comp
798
799$(SLIB)knox.lev: $(DAT)knox.des $(SBIN)lev_comp
800
801MINES1= $(SLIB)minend-1.lev $(SLIB)minend-2.lev $(SLIB)minetn-1.lev $(SLIB)minetn-2.lev
802$(MINES1): $(SLIB)minefill.lev
803
804$(SLIB)minefill.lev: $(DAT)mines.des $(SBIN)lev_comp
805
806$(SLIB)oracle.lev: $(DAT)oracle.des $(SBIN)lev_comp
807
808TOWER1= $(SLIB)tower1.lev $(SLIB)tower2.lev
809$(TOWER1): $(SLIB)tower3.lev
810
811$(SLIB)tower3.lev: $(DAT)tower.des $(SBIN)lev_comp
812
813WIZARD1= $(SLIB)wizard1.lev $(SLIB)wizard2.lev $(SLIB)wizard3.lev \
814	$(SLIB)fakewiz1.lev
815$(WIZARD1):  $(SLIB)fakewiz2.lev
816
817$(SLIB)fakewiz2.lev:  $(DAT)yendor.des $(SBIN)lev_comp
818
819MEDUSA1= $(SLIB)medusa-1.lev
820$(MEDUSA1): $(SLIB)medusa-2.lev
821
822$(SLIB)medusa-2.lev:	$(DAT)medusa.des $(SBIN)lev_comp
823
824SOKOBAN1= $(SLIB)soko1-1.lev $(SLIB)soko1-2.lev $(SLIB)soko2-1.lev \
825	$(SLIB)soko2-2.lev $(SLIB)soko3-1.lev $(SLIB)soko3-2.lev \
826	$(SLIB)soko4-1.lev
827$(SOKOBAN1): $(SLIB)soko4-2.lev
828
829$(SLIB)soko4-2.lev: $(DAT)sokoban.des $(SBIN)lev_comp
830
831$(ADFILES1):	$(SLIB)Arc-goal.lev
832
833$(SLIB)Arc-goal.lev:	$(DAT)Arch.des $(SBIN)lev_comp
834
835$(BDFILES1):	$(SLIB)Bar-goal.lev
836
837$(SLIB)Bar-goal.lev:	$(DAT)Barb.des $(SBIN)lev_comp
838
839$(CDFILES1):	$(SLIB)Cav-goal.lev
840
841$(SLIB)Cav-goal.lev:	$(DAT)Caveman.des $(SBIN)lev_comp
842
843$(HDFILES1):	$(SLIB)Hea-goal.lev
844
845$(SLIB)Hea-goal.lev:	$(DAT)Healer.des $(SBIN)lev_comp
846
847$(KDFILES1):	$(SLIB)Kni-goal.lev
848
849$(SLIB)Kni-goal.lev:	$(DAT)Knight.des $(SBIN)lev_comp
850
851$(MDFILES1):	$(SLIB)Mon-goal.lev
852
853$(SLIB)Mon-goal.lev:	$(DAT)Monk.des $(SBIN)lev_comp
854
855$(PDFILES1):	$(SLIB)Pri-goal.lev
856
857$(SLIB)Pri-goal.lev:	$(DAT)Priest.des $(SBIN)lev_comp
858
859$(RDFILES1):	$(SLIB)Rog-goal.lev
860
861$(SLIB)Rog-goal.lev:	$(DAT)Rogue.des $(SBIN)lev_comp
862
863$(RANFILES1):	$(SLIB)Ran-goal.lev
864
865$(SLIB)Ran-goal.lev:	$(DAT)Ranger.des $(SBIN)lev_comp
866
867$(SDFILES1):	$(SLIB)Sam-goal.lev
868
869$(SLIB)Sam-goal.lev:	$(DAT)Samurai.des $(SBIN)lev_comp
870
871$(TDFILES1):	$(SLIB)Tou-goal.lev
872
873$(SLIB)Tou-goal.lev:	$(DAT)Tourist.des $(SBIN)lev_comp
874
875$(VDFILES1):	$(SLIB)Val-goal.lev
876
877$(SLIB)Val-goal.lev:	$(DAT)Valkyrie.des $(SBIN)lev_comp
878
879$(WDFILES1):	$(SLIB)Wiz-goal.lev
880
881$(SLIB)Wiz-goal.lev:	$(DAT)Wizard.des $(SBIN)lev_comp
882
883$(SLIB)dungeon:  $(DAT)dungeon.def $(SBIN)makedefs $(SBIN)dgn_comp
884	$(SBIN)makedefs -e
885	$(SBIN)dgn_comp $(DAT)dungeon.pdf
886	copy $(DAT)dungeon $(SLIB)dungeon
887	delete $(DAT)dungeon
888
889inst-data: $(INSTDATAFILES)
890
891$(NETHACK)amii.hlp: $(AMI)amii.hlp
892	copy $(AMI)amii.hlp $@
893
894#$(NETHACK)data:  $(DAT)data
895#	copy $(DAT)data $@
896
897$(SLIB)data:  $(DAT)data.base $(I)config.h $(SBIN)makedefs
898	$(SBIN)makedefs -d
899
900#$(NETHACK)rumors:  $(DAT)rumors
901#	copy $(DAT)rumors $@
902
903$(SLIB)rumors:  $(DAT)rumors.tru $(DAT)rumors.fal $(SBIN)makedefs
904	$(SBIN)makedefs -r
905
906$(SLIB)cmdhelp:  $(DAT)cmdhelp
907	copy $(DAT)cmdhelp $@
908
909$(SLIB)help:  $(DAT)help
910	copy $(DAT)help $@
911
912$(SLIB)hh:  $(DAT)hh
913	copy $(DAT)hh $@
914
915$(NETHACK)HackWB.hlp: $(AMI)HackWB.hlp
916	copy $(AMI)HackWB.hlp $@
917
918$(SLIB)history:  $(DAT)history
919	copy $(DAT)history $@
920
921$(NETHACK)license:  $(DAT)license
922	copy $(DAT)license $@
923
924$(SLIB)opthelp:  $(DAT)opthelp
925	copy $(DAT)opthelp $@
926
927$(NETHACK)Recover.txt: $(DOC)Recover.txt
928	copy $(DOC)Recover.txt $@
929
930$(NETHACK)GuideBook.txt: $(DOC)GuideBook.txt
931	copy $(DOC)GuideBook.txt $@
932
933$(NETHACK)NetHack.txt: $(DOC)NetHack.txt
934	copy $(DOC)NetHack.txt $@
935
936$(NETHACK)Install.ami: $(AMI)Install.ami
937	copy $(AMI)Install.ami $@
938
939$(NETHACK)logfile:
940	echo to $@
941
942$(NETHACK)record:
943	echo to $@
944
945$(SLIB)wizhelp: $(DAT)wizhelp
946	copy $(DAT)wizhelp $@
947
948# Create the directories here because NetHack.cnf puts them there by default
949$(NETHACK)NetHack.cnf:  $(AMI)NetHack.cnf
950	copy $(AMI)NetHack.cnf $@
951	-makedir $(NETHACK)save
952	-makedir $(NETHACK)levels
953
954# Unpack and install fonts
955
956INSTFONTFILES= 	$(NETHACK)hack.font $(NETHACK)hack $(NETHACK)hack/8
957
958inst-fonts: $(INSTFONTFILES)
959
960$(NETHACK)hack/8:  $(AMI)amifont8.uu $(NETHACK)hack
961	$(UUDEC) $(AMI)amifont8.uu
962	copy 8 $(NETHACK)hack/8
963	delete 8
964
965$(NETHACK)hack.font:  $(AMI)amifont.uu
966	$(UUDEC) $(AMI)amifont.uu
967	copy hack.font $(NETHACK)hack.font
968	delete hack.font
969
970$(NETHACK)hack:
971	-makedir $@
972
973INSTICONFILES= \
974	$(NETHACK)default.icon $(NETHACK)NetHack.info $(NETHACK)NewGame.info \
975	$(NETHACK)HackWB.info
976
977inst-icons: $(INSTICONFILES)
978
979# Unpack the icons into place
980
981$(NETHACK)default.icon:  $(AMI)dflticon.uu
982	$(UUDEC) $(AMI)dflticon.uu
983#	copy default.icon $(NETHACK)default.icon
984#	delete default.icon
985
986$(NETHACK)NetHack.info:  $(AMI)NHinfo.uu
987	$(UUDEC) $(AMI)NHinfo.uu
988#	copy NetHack.info $(NETHACK)NetHack.info
989#	delete NetHack.info
990
991$(NETHACK)NewGame.info:  $(AMI)NewGame.uu
992	$(UUDEC) $(AMI)NewGame.uu
993#	copy NewGame.info $(NETHACK)NewGame.info
994#	delete NewGame.info
995
996$(NETHACK)HackWB.info:  $(AMI)HackWB.uu
997	$(UUDEC) $(AMI)HackWB.uu
998#	copy HackWB.info $(NETHACK)HackWB.info
999#	delete HackWB.info
1000
1001# If DLB is defined, create the nhdat library file in the playground
1002# directory.  If not, move all the data files there.
1003$(NETHACK)nhdat:  $(LIBFILES)
1004	list to T:nhdat.lst $(SLIB) QUICK NOHEAD FILES
1005	echo  >T:make-nhdat $(SBIN)dlb cCfI $(SLIB) $(NETHACK)nhdat T:nhdat.lst
1006	echo >>T:make-nhdat if not exists $(NETHACK)nhdat
1007	echo >>T:make-nhdat copy $(SLIB)\#? $(NETHACK)
1008	echo >>T:make-nhdat endif
1009	execute T:make-nhdat
1010	-delete T:make-nhdat
1011
1012# DO NOT DELETE THIS LINE
1013
1014$(O)allmain.o:  $(NHS)allmain.c $(HDEP)
1015
1016$(O)alloc.o:  $(NHS)alloc.c $(I)config.h
1017
1018$(O)apply.o:  $(NHS)apply.c $(HDEP) $(I)edog.h
1019	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)apply.c
1020
1021$(O)artifact.o:  $(NHS)artifact.c $(HDEP) $(I)artifact.h $(I)artilist.h
1022
1023$(O)attrib.o:  $(NHS)attrib.c $(HDEP) $(I)artifact.h
1024
1025$(O)ball.o: $(NHS)ball.c $(HDEP)
1026
1027$(O)bones.o:  $(NHS)bones.c $(HDEP) $(I)lev.h
1028
1029$(O)botl.o:	$(NHS)botl.c $(HDEP)
1030
1031$(O)cmd.o:  $(NHS)cmd.c $(HDEP) $(I)func_tab.h
1032
1033$(O)dbridge.o:  $(NHS)dbridge.c $(HDEP)
1034
1035$(O)decl.o:  $(NHS)decl.c $(HDEP) $(I)quest.h
1036
1037$(O)detect.o: $(NHS)detect.c $(HDEP) $(I)artifact.h
1038
1039$(O)dig.o: $(NHS)dig.c $(HDEP) $(I)edog.h
1040
1041$(O)display.o:  $(NHS)display.c $(HDEP)
1042
1043$(O)dlb.o: $(NHS)dlb.c $(HDEP) $(I)dlb.h
1044
1045$(O)do.o:  $(NHS)do.c $(HDEP) $(I)lev.h
1046
1047$(O)do_name.o:  $(NHS)do_name.c $(HDEP)
1048
1049$(O)do_wear.o:  $(NHS)do_wear.c $(HDEP)
1050
1051$(O)dog.o:  $(NHS)dog.c $(HDEP) $(I)edog.h
1052
1053$(O)dogmove.o:  $(NHS)dogmove.c $(HDEP) $(I)mfndpos.h $(I)edog.h
1054
1055$(O)dokick.o:  $(NHS)dokick.c $(HDEP) $(I)eshk.h
1056
1057$(O)dothrow.o:  $(NHS)dothrow.c $(HDEP)
1058
1059$(O)drawing.o:  $(NHS)drawing.c $(HDEP) $(I)tcap.h
1060	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)drawing.c
1061
1062$(O)dungeon.o:  $(NHS)dungeon.c $(HDEP) $(I)dgn_file.h $(I)dlb.h
1063
1064$(O)eat.o:  $(NHS)eat.c $(HDEP)
1065
1066$(O)end.o:  $(NHS)end.c $(HDEP) $(I)eshk.h $(I)dlb.h
1067
1068$(O)engrave.o:  $(NHS)engrave.c $(HDEP) $(I)lev.h
1069
1070$(O)exper.o:  $(NHS)exper.c $(HDEP)
1071
1072$(O)explode.o:  $(NHS)explode.c $(HDEP)
1073
1074$(O)extralev.o:  $(NHS)extralev.c $(HDEP)
1075
1076$(O)files.o:  $(NHS)files.c $(HDEP) $(I)dlb.h $(I)date.h
1077
1078$(O)fountain.o:  $(NHS)fountain.c $(HDEP)
1079
1080$(O)hack.o:  $(NHS)hack.c $(HDEP)
1081
1082$(O)hacklib.o:  $(NHS)hacklib.c $(HDEP)
1083
1084$(O)invent.o:  $(NHS)invent.c $(HDEP) $(I)artifact.h
1085
1086$(O)light.o:  $(NHS)light.c $(HDEP) $(I)lev.h
1087
1088$(O)lock.o:  $(NHS)lock.c $(HDEP)
1089
1090$(O)mail.o:  $(NHS)mail.c $(HDEP) $(I)mail.h
1091
1092$(O)makemon.o:  $(NHS)makemon.c $(HDEP) $(I)epri.h $(I)emin.h $(I)edog.h
1093
1094$(O)mapglyph.o:  $(NHS)mapglyph.c $(HDEP)
1095
1096$(O)mcastu.o:  $(NHS)mcastu.c $(HDEP)
1097
1098$(O)mhitm.o:  $(NHS)mhitm.c $(HDEP) $(I)artifact.h $(I)edog.h
1099
1100$(O)mhitu.o:  $(NHS)mhitu.c $(HDEP) $(I)artifact.h $(I)edog.h
1101	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)mhitu.c
1102
1103$(O)minion.o:  $(NHS)minion.c $(HDEP) $(I)emin.h $(I)epri.h
1104
1105$(O)mklev.o:  $(NHS)mklev.c $(HDEP)
1106
1107$(O)mkmap.o:  $(NHS)mkmap.c $(HDEP) $(I)sp_lev.h
1108
1109$(O)mkmaze.o:  $(NHS)mkmaze.c $(HDEP) $(I)sp_lev.h $(I)lev.h
1110
1111$(O)mkobj.o:  $(NHS)mkobj.c $(HDEP) $(I)artifact.h $(I)prop.h
1112
1113$(O)mkroom.o:  $(NHS)mkroom.c $(HDEP)
1114
1115$(O)mon.o:  $(NHS)mon.c $(HDEP) $(I)mfndpos.h $(I)edog.h
1116
1117$(O)mondata.o:  $(NHS)mondata.c $(HDEP) $(I)eshk.h $(I)epri.h
1118
1119$(O)monmove.o:  $(NHS)monmove.c $(HDEP) $(I)mfndpos.h $(I)artifact.h
1120
1121$(O)monst.o:  $(NHS)monst.c $(I)config.h $(I)permonst.h $(I)monsym.h \
1122		$(I)eshk.h $(I)vault.h $(I)epri.h $(I)color.h
1123
1124$(O)monstr.o:  $(NHS)monstr.c $(HDEP)
1125
1126$(O)mplayer.o:	$(NHS)mplayer.c $(HDEP)
1127
1128$(O)mthrowu.o:  $(NHS)mthrowu.c $(HDEP)
1129
1130$(O)muse.o:	$(NHS)muse.c $(HDEP)
1131	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)muse.c
1132
1133$(O)music.o:  $(NHS)music.c $(HDEP) #interp.c
1134
1135$(O)o_init.o:  $(NHS)o_init.c $(HDEP) $(I)lev.h
1136
1137$(O)objects.o:  $(NHS)objects.c $(I)config.h $(I)obj.h $(I)objclass.h \
1138		$(I)prop.h $(I)skills.h $(I)color.h
1139	$(CC) $(CFLAGS) $(INCLSPEC)$(NHS) $(OBJSPEC)$@ $(NHS)objects.c
1140
1141$(O)objnam.o:  $(NHS)objnam.c $(HDEP)
1142
1143$(O)options.o:  $(NHS)options.c $(HDEP) $(I)tcap.h $(I)config.h \
1144		$(I)objclass.h $(I)flag.h
1145
1146$(O)pager.o:  $(NHS)pager.c $(HDEP) $(I)dlb.h
1147
1148$(O)pickup.o:  $(NHS)pickup.c $(HDEP)
1149
1150$(O)pline.o:	$(NHS)pline.c $(HDEP) $(I)epri.h
1151
1152$(O)polyself.o:  $(NHS)polyself.c $(HDEP)
1153
1154$(O)potion.o:  $(NHS)potion.c $(HDEP)
1155
1156$(O)pray.o:  $(NHS)pray.c $(HDEP) $(I)epri.h
1157
1158$(O)priest.o:  $(NHS)priest.c $(HDEP) $(I)mfndpos.h $(I)eshk.h $(I)epri.h \
1159		$(I)emin.h
1160
1161$(O)quest.o:	$(NHS)quest.c $(HDEP) $(I)quest.h $(I)qtext.h
1162
1163$(O)questpgr.o: $(NHS)questpgr.c $(HDEP) $(I)qtext.h $(I)dlb.h
1164
1165$(O)read.o:  $(NHS)read.c $(HDEP)
1166
1167$(O)rect.o:	$(NHS)rect.c $(HDEP)
1168
1169$(O)region.o:	$(NHS)region.c $(HDEP)
1170
1171$(O)restore.o:  $(NHS)restore.c $(HDEP) $(I)lev.h $(I)tcap.h $(I)quest.h
1172
1173$(O)rnd.o:  $(NHS)rnd.c $(HDEP)
1174
1175$(O)role.o:	$(NHS)role.c $(HDEP)
1176
1177$(O)rumors.o:  $(NHS)rumors.c $(HDEP) $(I)dlb.h
1178
1179$(O)save.o:  $(NHS)save.c $(HDEP) $(I)lev.h $(I)quest.h
1180
1181$(O)shk.o:  $(NHS)shk.c $(HDEP) $(I)eshk.h
1182	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)shk.c
1183
1184$(O)shknam.o:  $(NHS)shknam.c $(HDEP) $(I)eshk.h
1185
1186$(O)sit.o:  $(NHS)sit.c $(HDEP) $(I)artifact.h
1187
1188$(O)sounds.o:  $(NHS)sounds.c $(HDEP) $(I)edog.h
1189
1190$(O)sp_lev.o:  $(NHS)sp_lev.c $(HDEP) $(I)sp_lev.h $(I)rect.h $(I)dlb.h
1191
1192$(O)spell.o:  $(NHS)spell.c $(HDEP)
1193
1194$(O)steal.o:  $(NHS)steal.c $(HDEP)
1195
1196$(O)steed.o:	$(NHS)steed.c $(HDEP)
1197
1198$(O)teleport.o:	$(NHS)teleport.c $(HDEP)
1199
1200$(O)timeout.o:  $(NHS)timeout.c $(HDEP) $(I)lev.h
1201
1202$(O)topten.o:  $(NHS)topten.c $(HDEP) $(I)dlb.h
1203
1204$(O)track.o:  $(NHS)track.c $(HDEP)
1205
1206$(O)trap.o:  $(NHS)trap.c $(HDEP)
1207	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)trap.c
1208
1209$(O)u_init.o:  $(NHS)u_init.c $(HDEP)
1210
1211$(O)uhitm.o:  $(NHS)uhitm.c $(HDEP)
1212	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)uhitm.c
1213
1214$(O)vault.o:  $(NHS)vault.c $(HDEP) $(I)vault.h
1215
1216$(O)version.o:  $(NHS)version.c $(HDEP) $(I)date.h $(I)patchlevel.h
1217
1218$(O)vision.o:  $(NHS)vision.c $(HDEP) #$(I)vis_tab.h
1219
1220$(O)weapon.o:  $(NHS)weapon.c $(HDEP)
1221
1222$(O)were.o:  $(NHS)were.c $(HDEP)
1223
1224$(O)wield.o:  $(NHS)wield.c $(HDEP)
1225
1226$(O)windows.o:  $(NHS)windows.c $(HDEP) $(I)wintty.h
1227
1228$(O)wizard.o:  $(NHS)wizard.c $(HDEP) $(I)qtext.h
1229
1230$(O)worm.o:  $(NHS)worm.c $(HDEP) $(I)lev.h
1231
1232$(O)worn.o:  $(NHS)worn.c $(HDEP)
1233
1234$(O)write.o:  $(NHS)write.c $(HDEP)
1235
1236$(O)zap.o:  $(NHS)zap.c $(HDEP)
1237	$(CC) $(CFLAGS) $(CFLAGS2) $(OBJSPEC)$@ $(NHS)zap.c
1238
1239$(O)getline.o:	$(TTY)getline.c $(HDEP) $(I)wintty.h
1240
1241$(O)termcap.o:	$(TTY)termcap.c $(HDEP) $(I)wintty.h $(I)tcap.h
1242
1243$(O)topl.o:	$(TTY)topl.c $(HDEP) $(I)wintty.h $(I)tcap.h
1244
1245$(O)wintty.o:	$(TTY)wintty.c $(HDEP) $(I)wintty.h $(I)tcap.h \
1246		$(I)patchlevel.h
1247
1248$(O)amitty.o:	$(AMI)amitty.c $(HDEP)
1249
1250$(O)amistack.o:	$(AMI)amistack.c
1251	$(CC) $(CFLAGS3) $(CSYM) $(OBJSPEC)$@ $(AMI)amistack.c
1252
1253$(O)rip.o:	$(NHS)rip.c $(HDEP)
1254
1255
1256$(I)config.h:  $(I)config1.h $(I)tradstdc.h $(I)global.h
1257	-setdate $(I)config.h
1258	-c:wait 2
1259
1260# onames.h handled at onames.h target, pm.h
1261
1262$(I)decl.h:  $(I)quest.h $(I)spell.h $(I)color.h $(I)obj.h $(I)you.h
1263	-setdate $(I)decl.h
1264	-c:wait 2
1265
1266$(I)global.h:  $(I)coord.h $(I)pcconf.h $(I)amiconf.h
1267	-setdate $(I)global.h
1268	-c:wait 2
1269
1270$(I)hack.h:  $(I)config.h $(I)trap.h $(I)decl.h $(I)dungeon.h $(I)monsym.h \
1271		$(I)mkroom.h $(I)objclass.h $(I)flag.h $(I)rm.h $(I)vision.h \
1272		$(I)display.h $(I)wintype.h $(I)engrave.h $(I)rect.h \
1273		$(I)region.h $(I)trampoli.h
1274	-setdate $(I)hack.h
1275	-c:wait 2
1276
1277$(I)permonst.h:  $(I)monattk.h $(I)monflag.h $(I)align.h
1278	-setdate $(I)permonst.h
1279	-c:wait 2
1280
1281$(I)you.h:  $(I)align.h $(I)attrib.h $(I)monst.h $(I)youprop.h $(I)skills.h
1282	-setdate $(I)you.h
1283	-c:wait 2
1284
1285# pm.h handled at target
1286
1287$(I)youprop.h:  $(I)prop.h $(I)permonst.h $(I)mondata.h
1288	-setdate $(I)youprop.h
1289	-c:wait 2
1290
1291$(I)display.h: $(I)vision.h $(I)mondata.h
1292	-setdate $(I)display.h
1293	-c:wait 2
1294
1295$(I)dungeon.h: $(I)align.h
1296	-setdate $(I)dungeon.h
1297	-c:wait 2
1298
1299$(I)emin.h: $(I)dungeon.h
1300	-setdate $(I)emin.h
1301	-c:wait 2
1302
1303$(I)epri.h: $(I)dungeon.h $(I)align.h
1304	-setdate $(I)epri.h
1305	-c:wait 2
1306
1307$(I)eshk.h: $(I)dungeon.h
1308	-setdate $(I)eshk.h
1309	-c:wait 2
1310
1311$(I)engrave.h: $(I)trampoli.h $(I)rect.h
1312	-setdate $(I)engrave.h
1313	-c:wait 2
1314
1315$(I)mondata.h: $(I)align.h
1316	-setdate $(I)mondata.h
1317	-c:wait 2
1318
1319$(I)monst.h: $(I)align.h
1320	-setdate $(I)monst.h
1321	-c:wait 2
1322
1323$(I)pcconf.h: $(I)micro.h $(I)system.h
1324	-setdate $(I)pcconf.h
1325	-c:wait 2
1326
1327$(I)rm.h: $(I)align.h
1328	-setdate $(I)rm.h
1329	-c:wait 2
1330
1331$(I)vault.h: $(I)dungeon.h
1332	-setdate $(I)vault.h
1333	-c:wait 2
1334
1335#notes
1336#  install keeps doing re-install because it keeps rebuilding lev_comp???
1337#  fixed(?) - deleted setdate
1338