OSDN Git Service

Initial Import
[nethackexpress/trunk.git] / sys / amiga / Makefile.agc
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
16 NH = nh:
17
18 SBIN = $(NH)sbin/
19 SLIB = $(NH)slib/
20 NETHACK = $(NH)NetHack/
21 HACKEXE = $(NH)HackExe/
22 AMI = $(NH)sys/amiga/
23 DAT = $(NH)dat/
24 DOC = $(NH)doc/
25 I = $(NH)include/
26 SHARE = $(NH)sys/share/
27 NHS = $(NH)src/
28 TTY = $(NH)win/tty/
29 WSHARE  = $(NH)win/share/
30 UTIL = $(NH)util/
31 O = $(NH)obj/
32 OO = $(NH)objo/
33 #       NB: O and OO MUST be different directories
34
35 ###
36 ### INVOCATION
37 ###
38
39 MAKE = 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
63 HDEP    = $(I)hack.h
64 CSYM    =
65
66 #Pathname for uudecode program:
67 UUDEC   = uudecode
68
69 # Flex/Bison command assignments -- Useful only if you have flex/bison
70 FLEX    = flex
71 BISON   = 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
74 FBFIL   =
75 FBLIB   = #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"
80 EXECUTE = execute
81
82 # Headers we depend on
83 AMDEP = $(AMI)winproto.h $(AMI)winext.h $(AMI)windefs.h $(I)winami.h
84
85 # Pathname for the C compiler being used.
86
87 CC = gcc -c
88 ASM = as
89
90 # Compilation flags for selected C Compiler:
91 #   $(CFLAGS) should appear before filename arguments of $(CC) command line.
92
93 CFLAGS = -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
104 LINK = gcc -noixemul -O3
105 LIN      =
106 LLINK    =
107 LLIB     =
108 FLLIB    =
109 OBJSPEC = -o
110 PNSPEC  = -o
111 LNSPEC = -o
112 CCLINK  = gcc -noixemul
113 CLFLAGS = -O3 
114 INCLSPEC = -I
115 DEFSPEC = -D
116 IGNSPEC = -j
117
118 ###
119 ### FILE LISTS
120 ###
121
122 # A more reasonable random number generator (recommended for the Amiga):
123
124 RANDOBJ = $(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
136 MAKEOBJS = \
137         $(OO)makedefs.o $(O)monst.o $(O)objects.o
138
139 # Object files for special levels compiler:
140
141 SPLEVOBJS = \
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
148 DGNCOMPOBJS = \
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
153 COMMOBJ = \
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
182 MAKEDEFOBJ = \
183         $(O)monstr.o
184
185 AMIGAOBJ = \
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)
191 AMIGAOBJ2 = \
192 #       $(O)dispmap.o
193
194 SHAREOBJ = \
195         $(O)pcmain.o    $(RANDOBJ)
196
197 TTYOBJ = \
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.
203 TTYSRC = \
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
209 HOBJ = $(COMMOBJ) $(AMIGAOBJ) $(AMIGAOBJ2) $(SHAREOBJ) $(MAKEDEFOBJ) $(TTYOBJ)
210
211 ###
212 ### DATA FILES
213 ###
214
215 # quest files
216 ADFILES1= $(SLIB)Arc-fila.lev $(SLIB)Arc-filb.lev $(SLIB)Arc-loca.lev \
217         $(SLIB)Arc-strt.lev
218 ADFILES= $(SLIB)Arc-goal.lev $(ADFILES1)
219
220 BDFILES1= $(SLIB)Bar-fila.lev $(SLIB)Bar-filb.lev $(SLIB)Bar-loca.lev \
221         $(SLIB)Bar-strt.lev
222 BDFILES= $(SLIB)Bar-goal.lev $(BDFILES1)
223
224 CDFILES1= $(SLIB)Cav-fila.lev $(SLIB)Cav-filb.lev $(SLIB)Cav-loca.lev \
225         $(SLIB)Cav-strt.lev
226 CDFILES= $(SLIB)Cav-goal.lev $(CDFILES1)
227
228 HDFILES1= $(SLIB)Hea-fila.lev $(SLIB)Hea-filb.lev $(SLIB)Hea-loca.lev \
229         $(SLIB)Hea-strt.lev
230 HDFILES= $(SLIB)Hea-goal.lev $(HDFILES1)
231
232 KDFILES1= $(SLIB)Kni-fila.lev $(SLIB)Kni-filb.lev $(SLIB)Kni-loca.lev \
233         $(SLIB)Kni-strt.lev
234 KDFILES= $(SLIB)Kni-goal.lev $(KDFILES1)
235
236 MDFILES1= $(SLIB)Mon-fila.lev $(SLIB)Mon-filb.lev $(SLIB)Mon-loca.lev \
237         $(SLIB)Mon-strt.lev
238 MDFILES= $(SLIB)Mon-goal.lev $(MDFILES1)
239
240 PDFILES1= $(SLIB)Pri-fila.lev $(SLIB)Pri-filb.lev $(SLIB)Pri-loca.lev \
241         $(SLIB)Pri-strt.lev
242 PDFILES= $(SLIB)Pri-goal.lev $(PDFILES1)
243
244 RDFILES1= $(SLIB)Rog-fila.lev $(SLIB)Rog-filb.lev $(SLIB)Rog-loca.lev \
245         $(SLIB)Rog-strt.lev
246 RDFILES= $(SLIB)Rog-goal.lev $(RDFILES1)
247
248 RANFILES1= $(SLIB)Ran-fila.lev $(SLIB)Ran-filb.lev $(SLIB)Ran-loca.lev \
249         $(SLIB)Ran-strt.lev
250 RANFILES= $(SLIB)Ran-goal.lev $(RANFILES1)
251
252 SDFILES1= $(SLIB)Sam-fila.lev $(SLIB)Sam-filb.lev $(SLIB)Sam-loca.lev \
253         $(SLIB)Sam-strt.lev
254 SDFILES= $(SLIB)Sam-goal.lev $(SDFILES1)
255
256 TDFILES1= $(SLIB)Tou-fila.lev $(SLIB)Tou-filb.lev $(SLIB)Tou-loca.lev \
257         $(SLIB)Tou-strt.lev
258 TDFILES= $(SLIB)Tou-goal.lev $(TDFILES1)
259
260 VDFILES1= $(SLIB)Val-fila.lev $(SLIB)Val-filb.lev $(SLIB)Val-loca.lev \
261         $(SLIB)Val-strt.lev
262 VDFILES= $(SLIB)Val-goal.lev $(VDFILES1)
263
264 WDFILES1= $(SLIB)Wiz-fila.lev $(SLIB)Wiz-filb.lev $(SLIB)Wiz-loca.lev \
265         $(SLIB)Wiz-strt.lev
266 WDFILES= $(SLIB)Wiz-goal.lev $(WDFILES1)
267
268 XDFILES=        $(ADFILES) $(BDFILES) $(CDFILES) $(HDFILES) $(KDFILES) \
269                 $(MDFILES) $(PDFILES) $(RDFILES) $(RANFILES) $(SDFILES) $(TDFILES) \
270                 $(VDFILES) $(WDFILES)
271
272 SOUNDFILES= \
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
282 TILEFILES= \
283         $(SBIN)txt2iff \
284         $(NETHACK)tiles \
285         $(NETHACK)tiles/objects.iff \
286         $(NETHACK)tiles/monsters.iff \
287         $(NETHACK)tiles/other.iff
288
289 INSTDUNGEONFILES1= \
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
307 INSTDUNGEONFILES= $(NETHACK)NetHack.cnf $(INSTDUNGEONFILES1)
308
309
310 INSTDATAFILES= \
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
316 LIBFILES= \
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
327 all:  $(COMPACT_HEADERS) $(SBIN)lev_comp $(SBIN)dgn_comp $(SBIN)NetHack \
328         $(SBIN)dlb $(NETHACK)recover #$(NETHACK)HackCli $(SBIN)splitter \
329 #       $(NETHACK)HackWB 
330
331 install: 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
341 link: $(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
358 obj:  $(HOBJ)
359
360 obja:  $(AMIGAOBJ)
361
362 objs:  $(SHAREOBJ)
363
364
365 SUFFIXES = .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
375 clean:
376         -delete $(O)\#?.o $(OO)\#?.o
377
378 spotless:  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
618 WBH     = $(AMI)wbdefs.h $(AMI)wbstruct.h $(AMI)wbprotos.h
619 ASP     = $(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
666 inst-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
684 NAMEOBJS = $(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.
703 inst-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
775 inst-dungeon: $(INSTDUNGEONFILES)
776
777 $(NETHACK)options : $(DAT)options
778         copy $(DAT)options $@
779
780 # Create compiled dungeon files
781 BGM= $(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
788 ENDGAME1= $(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
793 GEHENNOM1= $(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
801 MINES1= $(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
808 TOWER1= $(SLIB)tower1.lev $(SLIB)tower2.lev
809 $(TOWER1): $(SLIB)tower3.lev
810
811 $(SLIB)tower3.lev: $(DAT)tower.des $(SBIN)lev_comp
812
813 WIZARD1= $(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
819 MEDUSA1= $(SLIB)medusa-1.lev
820 $(MEDUSA1): $(SLIB)medusa-2.lev
821
822 $(SLIB)medusa-2.lev:    $(DAT)medusa.des $(SBIN)lev_comp
823
824 SOKOBAN1= $(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
889 inst-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
956 INSTFONTFILES=  $(NETHACK)hack.font $(NETHACK)hack $(NETHACK)hack/8
957
958 inst-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
973 INSTICONFILES= \
974         $(NETHACK)default.icon $(NETHACK)NetHack.info $(NETHACK)NewGame.info \
975         $(NETHACK)HackWB.info
976
977 inst-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