OSDN Git Service

import nethack-3.6.0
[jnethack/source.git] / sys / msdos / Makefile.GCC
1 # NetHack 3.6   Makefile.GCC    $NHDT-Date: 1432512792 2015/05/25 00:13:12 $  $NHDT-Branch: master $:$NHDT-Revision: 1.28 $
2 #       Copyright (c) NetHack PC Development Team 1996-2006.
3 #       PC NetHack 3.6 Makefile for djgpp V2
4 #
5 #       Gnu gcc compiler for msdos (djgpp)
6 #       Requires Gnu Make utility (V3.79.1 or greater) supplied with djgpp
7 #
8 #       For questions or comments: devteam@nethack.org
9 #
10 #       In addition to your C compiler,
11 #
12 #       if you want to change     you will need a
13 #       files with suffix         workalike for
14 #         .y                         yacc
15 #         .l                         lex
16 #
17 #       Note that flex (lex) and bison (yacc) are included with the
18 #       djgpp distribution and work quite well.  This makefile assumes
19 #       you have them installed correctly.
20
21 # Game Installation Variables
22 # NOTE: Make sure GAMEDIR exists before make is started.
23
24 GAME = nethack
25 # The GNU Make has a problem if you include a drive spec below (unfortunately).
26 GAMEDIR =../binary
27
28 #
29 # Directories, gcc likes unix style directory specs
30 #
31
32 OBJ  = o
33 DAT  = ../dat
34 DOC  = ../doc
35 INCL = ../include
36 MSYS = ../sys/msdos
37 SRC  = ../src
38 SSHR = ../sys/share
39 UTIL = ../util
40 WIN  = ../win/tty
41 WSHR = ../win/share
42
43 #
44 #  Executables.
45
46 CC    = gcc
47 LINK  = gcc
48 MAKEBIN  = make
49
50 #
51 # Special libraries and how to link them in.
52
53 LIBS = -lpc
54
55 # If TERMLIB is defined in pcconf.h, comment out the upper line and
56 # uncomment the lower.  Note that you must build the termc library
57 # and place it in djgpp's lib directory.  See termcap.zip for details
58
59 TERMLIB =
60 #TERMLIB = -ltermc
61
62 LIBRARIES = $(LIBS) $(TERMLIB)
63
64 #
65 #  Yacc/Lex ... if you got 'em.
66 #
67 # If you have yacc/lex or a work-alike set YACC_LEX to Y
68 #
69 YACC_LEX = Y
70 ifeq ($(YACC_LEX),Y)
71 DO_YACC = YACC_ACT
72 DO_LEX  = LEX_ACT
73 endif
74
75 # If YACC_LEX is Y above, set the following to values appropriate for
76 # your tools.
77 #
78 YACC   = bison -y
79 LEX    = flex
80 #
81 # If your flex and bison port mess with the output names directly
82 # you must set the file names to the appropriate output file names
83 # here
84 #YTABC  = y_tab.c
85 #YTABH  = y_tab.h
86 #LEXYYC = lexyy.c
87 #
88 # If your flex and bison are able to produce files named
89 # y.tab.c, y.tab.h or lex.yy.c you might have to set these
90 # to the short file name equivalent (DIR /X to reveal them):
91 YTABC  = ytab~1.c
92 YTABH  = ytab~1.h
93 LEXYYC = lexyy~1.c
94
95 #
96 # Uncomment the line below if you want to store all the level files,
97 # help files, etc. in a single library file.
98
99 USE_DLB = Y
100
101 # djgpp includes ls.exe and touch.exe in fil41b.zip from the v2gnu 
102 # folder so be sure to include that when downloading djgpp. Doing
103 # so will make changing this unnecessary.
104
105 LS = ls -1              # ls.exe from djgpp distribution
106 #LS = dir /l/b          # DOS command
107
108 # To build a binary without any graphics
109 # suitable for blind players,
110 # set SUPPRESS_GRAPHICS to Y
111 # (Note: binary will require ANSI.SYS driver or equivalent loaded)
112 # SUPPRESS_GRAPHICS = Y
113 SUPPRESS_GRAPHICS = 
114
115 # ZLIB Support
116 # To support zlib compression in bones and save files, you must
117 # define ZLIB_COMP in include/config.h.
118 # You must also have a zlib library to link NetHack with, and
119 # for the djgpp build, you need one compatible with djgpp.
120 # At the time that this was written (post-NetHack 3.4.3) the 
121 # following URL was a valid place to get a pre-built djgpp library
122 # to add to your djgpp tools directory tree.
123 # http://www.delorie.com/pub/djgpp/current/v2tk/zlib114b.zip
124 #
125 # If you defined ZLIB_COMP in include/config.h to build in support
126 # for ZLIB compression, you need to uncomment the line below.
127 #ZLIB= -lz
128
129 #===============================================
130 #======= End of Modification Section ===========
131 #===============================================
132 ################################################
133 #                                              #
134 # Nothing below here should have to be changed.#
135 #                                              #
136 ################################################
137
138 GAMEFILE = $(GAMEDIR)/$(GAME).exe
139
140 # Changing this conditional block is not recommended
141 ifeq ($(USE_DLB),Y)
142 DLBFLG = -DDLB
143 else
144 DLBFLG =
145 endif
146
147 #
148 #  Flags.
149 #
150 ifeq ($(SUPPRESS_GRAPHICS),Y)
151 TERMLIB =
152 # Build NetHack suitable for blind players
153
154 # Debugging
155 #cflags = -pg -c -I../include $(DLBFLG) -DSUPPRESS_GRAPHICS
156 #LFLAGS = -pg
157
158 cflags = -c -O -I../include $(DLBFLG) -DSUPPRESS_GRAPHICS
159 LFLAGS =
160
161 else
162
163 # Debugging
164 #cflags = -pg -c -I../include $(DLBFLG) -DUSE_TILES
165 #LFLAGS = -pg
166
167 #    Normal
168 cflags = -c -O -I../include $(DLBFLG) -DUSE_TILES
169 LFLAGS =
170 endif
171
172 #==========================================
173 #================ RULES ==================
174 #==========================================
175
176 .SUFFIXES: .exe .o .tib .til .uu .c .y .l
177
178 #==========================================
179 # Rules for files in src
180 #==========================================
181
182 $(OBJ)/%.o : /%.c
183         $(CC) $(cflags) -o$@ $<
184
185 $(OBJ)/%.o : $(SRC)/%.c
186         $(CC) $(cflags) -o$@ $<
187
188 #==========================================
189 # Rules for files in sys/share
190 #==========================================
191
192 $(OBJ)/%.o : $(SSHR)/%.c
193         $(CC) $(cflags) -o$@ $<
194
195 #==========================================
196 # Rules for files in sys/msdos
197 #==========================================
198
199 $(OBJ)/%.o : $(MSYS)/%.c
200         $(CC) $(cflags) -I../sys/msdos -o$@ $<
201
202 #==========================================
203 # Rules for files in util
204 #==========================================
205
206 $(OBJ)/%.o : $(UTIL)/%.c
207         $(CC) $(cflags) -o$@ $<
208
209 #==========================================
210 # Rules for files in win/share
211 #==========================================
212
213 $(OBJ)/%.o : $(WSHR)/%.c
214         $(CC) $(cflags) -I../win/share -o$@ $<
215
216 #{$(WSHR)}.txt{$(DAT)}.txt:
217 #       copy $< $@
218
219 #==========================================
220 # Rules for files in win/tty
221 #==========================================
222
223 $(OBJ)/%.o : $(TTY)/%.c
224         $(CC) $(cflags) -o$@ $<
225
226 #==========================================
227 #================ MACROS ==================
228 #==========================================
229 # This section creates shorthand macros for many objects
230 # referenced later on in the Makefile.
231 #
232 #
233 # Shorten up the location for some files
234 #
235
236 O  = $(OBJ)/
237
238 U  = $(UTIL)/
239
240 #==========================================
241 #  Utility Objects.
242 #==========================================
243
244 VGAOBJ      = $(O)vidvga.o
245
246 MAKESRC     = makedefs.c
247
248 SPLEVSRC    = lev_yacc.c  lev_$(LEX).c   lev_main.c  panic.c
249
250 DGNCOMPSRC  = dgn_yacc.c  dgn_$(LEX).c   dgn_main.c
251
252 MAKEOBJS    = $(O)makedefs.o  $(O)monst.o        $(O)objects.o
253
254 SPLEVOBJS   = $(O)lev_yacc.o  $(O)lev_$(LEX).o  $(O)lev_main.o  $(O)alloc.o     \
255                 $(O)monst.o         $(O)objects.o           $(O)panic.o  \
256                 $(O)drawing.o   $(O)decl.o      $(O)stubvid.o
257
258 DGNCOMPOBJS = $(O)dgn_yacc.o  $(O)dgn_$(LEX).o  $(O)dgn_main.o  $(O)alloc.o      \
259                 $(O)panic.o
260
261 RECOVOBJS   = $(O)recover.o
262
263
264 #==========================================
265 #  Tile related object files.
266 #==========================================
267
268 ifeq ($(SUPPRESS_GRAPHICS),Y)
269 TILOBJ       =
270 TEXTIO       =
271 TEXTIO2      =
272 PLANAR_TIB   =
273 OVERVIEW_TIB =
274 TILEUTIL     = 
275 TILEFILES    = 
276 TILEFILES2   = 
277 GIFREADERS   = 
278 GIFREAD2     = 
279 PPMWRITERS   = 
280 PPMWRIT2     = 
281
282 else
283
284 TILOBJ      = $(O)tile.o $(O)pctiles.o $(VGAOBJ)
285
286 TEXTIO      = $(O)tiletext.o $(O)tiletxt.o $(O)drawing.o $(O)decl.o $(O)monst.o \
287                 $(O)objects.o $(O)stubvid.o
288
289 TEXTIO2     = $(O)tiletex2.o $(O)tiletxt2.o $(O)drawing.o $(O)decl.o $(O)monst.o \
290                 $(O)objects.o $(O)stubvid.o
291
292 PLANAR_TIB  = $(DAT)/NetHack1.tib
293
294 OVERVIEW_TIB = $(DAT)/NetHacko.tib
295
296 TILEUTIL    = $(TILOBJ) $(U)tile2bin.exe $(U)til2bin2.exe $(PLANAR_TIB) $(OVERVIEW_TIB)
297
298 TILEFILES   = $(WSHR)/monsters.txt $(WSHR)/objects.txt $(WSHR)/other.txt
299
300 TILEFILES2  = $(WSHR)/monthin.txt $(WSHR)/objthin.txt $(WSHR)/oththin.txt
301
302 GIFREADERS  = $(O)gifread.o $(O)alloc.o $(O)panic.o
303
304 GIFREAD2    = $(O)gifread2.o $(O)alloc.o $(O)panic.o
305
306 PPMWRITERS  = $(O)ppmwrite.o $(O)alloc.o $(O)panic.o
307
308 PPMWRIT2    = $(O)ppmwrit2.o $(O)alloc.o $(O)panic.o
309 endif
310
311
312 DLBOBJ = $(O)dlb.o
313
314 #  Object files for the game itself.
315
316
317 VOBJ01 = $(O)allmain.o  $(O)alloc.o   $(O)apply.o    $(O)artifact.o $(O)attrib.o
318 VOBJ02 = $(O)ball.o     $(O)bones.o   $(O)botl.o     $(O)cmd.o      $(O)dbridge.o
319 VOBJ03 = $(O)decl.o     $(O)detect.o  $(O)display.o  $(O)do.o       $(O)do_name.o
320 VOBJ04 = $(O)do_wear.o  $(O)dog.o     $(O)dogmove.o  $(O)dokick.o   $(O)dothrow.o
321 VOBJ05 = $(O)drawing.o  $(O)dungeon.o $(O)eat.o      $(O)end.o      $(O)engrave.o
322 VOBJ06 = $(O)exper.o    $(O)explode.o $(O)extralev.o $(O)files.o    $(O)fountain.o
323 VOBJ07 = $(O)getline.o  $(O)hack.o    $(O)hacklib.o  $(O)invent.o   $(O)lock.o
324 VOBJ08 = $(O)mail.o     $(O)main.o    $(O)makemon.o  $(O)mapglyph.o $(O)mcastu.o $(O)mhitm.o
325 VOBJ09 = $(O)mhitu.o    $(O)minion.o  $(O)mkmap.o    $(O)mklev.o    $(O)mkmaze.o
326 VOBJ10 = $(O)mkobj.o    $(O)mkroom.o  $(O)mon.o      $(O)mondata.o  $(O)monmove.o
327 VOBJ11 = $(O)monst.o    $(O)monstr.o  $(O)mplayer.o  $(O)mthrowu.o  $(O)muse.o
328 VOBJ12 = $(O)music.o    $(O)o_init.o  $(O)objects.o  $(O)objnam.o   $(O)options.o
329 VOBJ13 = $(O)pickup.o   $(O)pline.o   $(O)polyself.o $(O)potion.o   $(O)quest.o
330 VOBJ14 = $(O)questpgr.o $(O)pager.o   $(O)pray.o     $(O)priest.o   $(O)read.o
331 VOBJ15 = $(O)rect.o     $(O)restore.o $(O)rip.o      $(O)rnd.o      $(O)role.o
332 VOBJ16 = $(O)rumors.o   $(O)save.o    $(O)shk.o      $(O)shknam.o   $(O)sit.o
333 VOBJ17 = $(O)sounds.o   $(O)sp_lev.o  $(O)spell.o    $(O)steal.o    $(O)steed.o
334 VOBJ18 = $(O)termcap.o  $(O)timeout.o $(O)topl.o     $(O)topten.o   $(O)track.o
335 VOBJ19 = $(O)trap.o     $(O)u_init.o  $(O)uhitm.o    $(O)vault.o    $(O)vision.o
336 VOBJ20 = $(O)vis_tab.o  $(O)weapon.o  $(O)were.o     $(O)wield.o    $(O)windows.o
337 VOBJ21 = $(O)wintty.o   $(O)wizard.o  $(O)worm.o     $(O)worn.o     $(O)write.o
338 VOBJ22 = $(O)zap.o      $(O)light.o   $(O)dlb.o      $(O)dig.o      $(O)teleport.o
339 VOBJ23 = $(O)region.o $(O)sys.o
340
341 SOBJ   = $(O)msdos.o    $(O)sound.o   $(O)pcsys.o    $(O)tty.o      $(O)unix.o \
342          $(O)video.o    $(O)vidtxt.o  $(O)pckeys.o
343
344 VVOBJ  = $(O)version.o
345
346 VOBJ  = $(VOBJ01) $(VOBJ02) $(VOBJ03) $(VOBJ04) $(VOBJ05) \
347         $(VOBJ06) $(VOBJ07) $(VOBJ08) $(VOBJ09) $(VOBJ10) \
348         $(VOBJ11) $(VOBJ12) $(VOBJ13) $(VOBJ14) $(VOBJ15) \
349         $(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ19) $(VOBJ20) \
350         $(VOBJ21) $(VOBJ22) $(VOBJ23)
351
352 ALLOBJ = $(VOBJ) $(SOBJ) $(TILOBJ) $(VVOBJ)
353
354 #==========================================
355 # Header file macros
356 #==========================================
357
358 PATCHLEV_H = $(INCL)/patchlev.h
359 DGN_FILE_H = $(INCL)/align.h    $(INCL)/dgn_file.h
360 DUNGEON_H  = $(INCL)/align.h    $(INCL)/dungeon.h
361 MONDATA_H  = $(INCL)/align.h    $(INCL)/mondata.h
362 MONST_H    = $(INCL)/align.h    $(INCL)/monst.h $(INCL)/mextra.h
363 PERMONST_H = $(INCL)/monattk.h  $(INCL)/monflag.h   $(INCL)/align.h   \
364             $(INCL)/permonst.h
365 REGION_H   = $(INCL)/region.h
366 RM_H       = $(INCL)/align.h    $(INCL)/rm.h
367 SKILLS_H   = $(INCL)/skills.h
368 SP_LEV_H   = $(INCL)/align.h    $(INCL)/sp_lev.h
369 YOUPROP_H  = $(PERMONST_H)      $(MONDATA_H)        $(INCL)/prop.h    \
370             $(INCL)/pm.h       $(INCL)/youprop.h
371 YOU_H      = $(MONST_H)         $(YOUPROP_H)        $(INCL)/align.h   \
372              $(INCL)/attrib.h   $(INCL)/you.h
373 DISPLAY_H  = $(MONDATA_H)       $(INCL)/vision.h    $(INCL)/display.h
374 PCCONF_H   = $(INCL)/micro.h    $(INCL)/system.h    $(INCL)/pcconf.h \
375             $(MSYS)/pcvideo.h
376 CONFIG_H   = $(GLOBAL_H)        $(INCL)/tradstdc.h  $(INCL)/config1.h \
377             $(INCL)/config.h
378 DECL_H     = $(YOU_H)           $(INCL)/spell.h     $(INCL)/color.h   \
379              $(INCL)/obj.h      $(INCL)/onames.h    $(INCL)/pm.h      \
380               $(INCL)/decl.h
381 GLOBAL_H   = $(PCCONF_H)        $(INCL)/coord.h    $(INCL)/global.h
382 HACK_H     = $(CONFIG_H)        $(INCL)/context.h  $(DUNGEON_H)        \
383              $(DECL_H)          $(DISPLAY_H)       $(INCL)/monsym.h    \
384              $(INCL)/mkroom.h   $(INCL)/objclass.h $(INCL)/trap.h      \
385              $(INCL)/flag.h     $(RM_H)            $(INCL)/vision.h    \
386              $(INCL)/wintype.h  $(INCL)/engrave.h  $(INCL)/rect.h      \
387              $(INCL)/trampoli.h $(INCL)/hack.h     $(REGION_H)         \
388              $(INCL)/sys.h
389 DLB_H      = $(INCL)/dlb.h
390
391 ifeq ($(SUPPRESS_GRAPHICS),Y)
392 TILE_H     =
393 else
394 TILE_H     = $(WSHR)/tile.h $(MSYS)/pctiles.h
395 endif
396
397 ifeq ($(USE_DLB),Y)
398 DLB = dlb
399 DLBOBJS = $(O)dlb_main.o $(O)dlb.o $(O)alloc.o $(O)panic.o
400 else
401 DLB =
402 DLBOBJS =
403 endif
404
405 ifdef DJGPP
406 DJ1 = $(dir $(DJGPP))
407 CWSDPMI = $(subst /,\,$(DJ1))bin\CWSDPMI.*
408 endif
409
410 #==========================================
411 #  Primary Targets.
412 #==========================================
413
414 #  The default target.
415
416 all :   install
417
418 install: $(GAMEFILE) $(O)install.tag 
419         @echo Done.
420
421 default: $(GAMEFILE)
422
423 util: $(O)utility.tag
424
425 $(O)utility.tag: $(INCL)/date.h $(INCL)/trap.h    $(INCL)/onames.h             \
426         $(INCL)/pm.h      monstr.c   vis_tab.c  \
427         $(U)lev_comp.exe $(U)dgn_comp.exe $(TILEUTIL)
428         $(subst /,\,echo utilities made > $@)
429
430 tileutil: $(U)gif2txt.exe $(U)txt2ppm.exe
431         @echo Optional tile development utilities are up to date.
432
433 recover: $(U)recover.exe
434         @$(subst /,\,if exist $(U)recover.exe copy $(U)recover.exe $(GAMEDIR))
435         @$(subst /,\,if exist $(DOC)/recover.txt copy $(DOC)/recover.txt $(GAMEDIR))
436
437 $(O)install.tag: $(O)dat.tag $(GAMEFILE)
438 ifeq ($(USE_DLB),Y)
439         @$(subst /,\,copy $(DAT)/nhdat $(GAMEDIR))
440         @$(subst /,\,copy $(DAT)/license $(GAMEDIR))
441 else
442         @$(subst /,\,copy $(DAT)/*. $(GAMEDIR))
443         @$(subst /,\,copy $(DAT)/*.dat $(GAMEDIR))
444         @$(subst /,\,copy $(DAT)/*.lev $(GAMEDIR))
445         @$(subst /,\,copy $(MSYS)/msdoshlp.txt $(GAMEDIR))
446         @$(subst /,\,if exist $(GAMEDIR)/makefile. del $(GAMEDIR)/makefile.)
447 endif
448 ifdef TERMLIB
449         @$(subst /,\,copy $(SSHR)/termcap $(GAMEDIR))
450 endif
451         @$(subst /,\,if exist $(DAT)/*.tib copy $(DAT)/*.tib $(GAMEDIR))
452         @$(subst /,\,if exist $(DAT)/symbols copy $(DAT)/symbols $(GAMEDIR))
453         @$(subst /,\,copy $(SSHR)/NetHack.cnf  $(GAMEDIR)/defaults.nh)
454         @$(subst /,\,copy $(MSYS)/NHAccess.nh  $(GAMEDIR))
455         @$(subst /,\,copy $(DOC)/guidebo*.txt  $(GAMEDIR))
456         @$(subst /,\,if exist $(DOC)/nethack.txt copy $(DOC)/nethack.txt $(GAMEDIR))
457 ifdef CWSDPMI
458         @$(subst /,\,if exist $(CWSDPMI) copy $(CWSDPMI) $(GAMEDIR))
459 else
460         @$(subst /,\,echo Could not find a copy of CWSDPMI.EXE to put into $(GAMEDIR))
461 endif
462         @$(subst /,\,echo install done > $@)
463
464 #==========================================
465 #  The main target.
466 #==========================================
467
468 $(GAMEFILE): $(O)obj.tag $(PATCHLEV_H) $(O)utility.tag $(ALLOBJ) $(O)$(GAME).lnk
469         $(LINK) $(LFLAGS) -o$(GAME).exe @$(O)$(GAME).lnk $(LIBRARIES) $(ZLIB)
470         @$(subst /,\,stubedit $(GAME).exe minstack=2048K)
471         @$(subst /,\,copy $(GAME).exe $(GAMEFILE))
472         @$(subst /,\,del $(GAME).exe)
473
474 $(O)$(GAME).lnk: $(ALLOBJ)
475          echo $(VOBJ01) > $(subst /,\,$@)
476          echo $(VOBJ02) >> $(subst /,\,$@)
477          echo $(VOBJ03) >> $(subst /,\,$@)
478          echo $(VOBJ04) >> $(subst /,\,$@)
479          echo $(VOBJ05) >> $(subst /,\,$@)
480          echo $(VOBJ06) >> $(subst /,\,$@)
481          echo $(VOBJ07) >> $(subst /,\,$@)
482          echo $(VOBJ08) >> $(subst /,\,$@)
483          echo $(VOBJ09) >> $(subst /,\,$@)
484          echo $(VOBJ10) >> $(subst /,\,$@)
485          echo $(VOBJ11) >> $(subst /,\,$@)
486          echo $(VOBJ12) >> $(subst /,\,$@)
487          echo $(VOBJ13) >> $(subst /,\,$@)
488          echo $(VOBJ14) >> $(subst /,\,$@)
489          echo $(VOBJ15) >> $(subst /,\,$@)
490          echo $(VOBJ16) >> $(subst /,\,$@)
491          echo $(VOBJ17) >> $(subst /,\,$@)
492          echo $(VOBJ18) >> $(subst /,\,$@)
493          echo $(VOBJ19) >> $(subst /,\,$@)
494          echo $(VOBJ20) >> $(subst /,\,$@)
495          echo $(VOBJ21) >> $(subst /,\,$@)
496          echo $(VOBJ22) >> $(subst /,\,$@)
497          echo $(VOBJ23) >> $(subst /,\,$@)
498          echo $(SOBJ)   >> $(subst /,\,$@)
499          echo $(TILOBJ) >> $(subst /,\,$@)
500          echo $(VVOBJ)  >> $(subst /,\,$@)
501
502
503 #==========================================
504 #  Housekeeping.
505 #==========================================
506
507 clean:
508         $(subst /,\,if exist $(O)*.o del $(O)*.o)
509         $(subst /,\,if exist $(O)dat.tag del $(O)dat.tag)
510         $(subst /,\,if exist $(O)install.tag del $(O)install.tag)
511         $(subst /,\,if exist $(O)$(GAME).lnk del $(O)$(GAME).lnk)
512         $(subst /,\,if exist $(O)obj.tag del $(O)obj.tag)
513         $(subst /,\,if exist $(O)sp_lev.tag del $(O)sp_lev.tag)
514         $(subst /,\,if exist $(O)thintile.tag del $(O)thintile.tag)
515         $(subst /,\,if exist $(O)utility.tag del $(O)utility.tag)
516
517 spotless: clean
518
519         $(subst /,\,if exist $(U)lev_flex.c del $(U)lev_flex.c)
520         $(subst /,\,if exist $(U)lev_lex.c del $(U)lev_lex.c)
521         $(subst /,\,if exist $(U)lev_yacc.c del $(U)lev_yacc.c)
522         $(subst /,\,if exist $(U)dgn_flex.c del $(U)dgn_flex.c)
523         $(subst /,\,if exist $(U)dgn_lex.c del $(U)dgn_lex.c)
524         $(subst /,\,if exist $(U)dgn_yacc.c del $(U)lev_yacc.c)
525         $(subst /,\,if exist $(U)makedefs.exe del $(U)makedefs.exe)
526         $(subst /,\,if exist $(U)lev_comp.exe del $(U)lev_comp.exe)
527         $(subst /,\,if exist $(U)dgn_comp.exe del $(U)dgn_comp.exe)
528         $(subst /,\,if exist $(U)recover.exe del $(U)recover.exe)
529         $(subst /,\,if exist $(U)tilemap.exe del $(U)tilemap.exe)
530         $(subst /,\,if exist $(U)tile2bin.exe del $(U)tile2bin.exe)
531         $(subst /,\,if exist $(U)til2bin2.exe del $(U)til2bin2.exe)
532         $(subst /,\,if exist $(U)thintile.exe del $(U)thintile.exe)
533         $(subst /,\,if exist $(U)dlb_main.exe del $(U)dlb_main.exe)
534         $(subst /,\,if exist $(INCL)/vis_tab.h del $(INCL)/vis_tab.h)
535         $(subst /,\,if exist $(INCL)/onames.h del $(INCL)/onames.h)
536         $(subst /,\,if exist $(INCL)/pm.h del $(INCL)/pm.h)
537         $(subst /,\,if exist $(INCL)/date.h del $(INCL)/date.h)
538         $(subst /,\,if exist $(INCL)/dgn_comp.h del $(INCL)/dgn_comp.h)
539         $(subst /,\,if exist $(INCL)/lev_comp.h del $(INCL)/lev_comp.h)
540         $(subst /,\,if exist $(SRC)/monstr.c del $(SRC)/monstr.c)
541         $(subst /,\,if exist $(SRC)/vis_tab.c del $(SRC)/vis_tab.c)
542         $(subst /,\,if exist $(SRC)/tile.c del $(SRC)/tile.c)
543         $(subst /,\,if exist $(DAT)/options del $(DAT)/options)
544         $(subst /,\,if exist $(DAT)/data del $(DAT)/data)
545         $(subst /,\,if exist $(DAT)/rumors del $(DAT)/rumors)
546         $(subst /,\,if exist $(DAT)/dungeon.pdf del $(DAT)/dungeon.pdf)
547         $(subst /,\,if exist $(DAT)/dungeon del $(DAT)/dungeon)
548         $(subst /,\,if exist $(DAT)/oracles del $(DAT)/oracles)
549         $(subst /,\,if exist $(DAT)/quest.dat del $(DAT)/quest.dat)
550         $(subst /,\,if exist $(DAT)/dlb.lst del $(DAT)/dlb.lst)
551         $(subst /,\,if exist $(DAT)/nhdat del $(DAT)/nhdat)
552         $(subst /,\,if exist $(DAT)/*.lev del $(DAT)/*.lev)
553         $(subst /,\,if exist $(PLANAR_TIB) del $(PLANAR_TIB))
554         $(subst /,\,if exist $(OVERVIEW_TIB) del $(OVERVIEW_TIB))
555         $(subst /,\,if exist $(WSHR)/monthin.txt del $(WSHR)/monthin.txt)
556         $(subst /,\,if exist $(WSHR)/objthin.txt del $(WSHR)/objthin.txt)
557         $(subst /,\,if exist $(WSHR)/oththin.txt del $(WSHR)/oththin.txt)
558
559 #==========================================
560 # Create directory for holding object files
561 #==========================================
562
563 $(O)obj.tag:
564         -$(subst /,\,@if not exist $(OBJ)/*.* mkdir $(OBJ))
565         @$(subst /,\,@echo directory created > $@)
566
567 #===========================================
568 # Work around some djgpp long file name woes
569 #===========================================
570
571 $(PATCHLEV_H):
572         @$(subst /,\,if not exist $@ copy $(INCL)/patchlevel.h $(INCL)/patchlev.h)
573
574 #==========================================
575 #=========== SECONDARY TARGETS ============
576 #==========================================
577 #
578 #  The following include files depend on makedefs to be created.
579 #
580 #  date.h should be remade every time any of the source or include
581 #  files is modified.
582
583
584 $(INCL)/date.h : $(U)makedefs.exe
585         -$(subst /,\,$(U)makedefs -v)
586
587 $(INCL)/onames.h: $(U)makedefs.exe
588         -$(subst /,\,$(U)makedefs -o)
589
590 $(INCL)/pm.h: $(U)makedefs.exe
591         -$(subst /,\,$(U)makedefs -p)
592
593 monstr.c: $(U)makedefs.exe
594         -$(subst /,\,$(U)makedefs -m)
595
596 $(INCL)/vis_tab.h: $(U)makedefs.exe
597         -$(subst /,\,$(U)makedefs -z)
598
599 vis_tab.c: $(U)makedefs.exe
600         -$(subst /,\,$(U)makedefs -z)
601
602 #==========================================
603 #  Makedefs Stuff
604 #==========================================
605
606 $(U)makedefs.exe:  $(MAKEOBJS)
607         $(LINK) $(LFLAGS) -o$@ $(MAKEOBJS)
608
609 $(O)makedefs.o:  $(CONFIG_H)    $(PERMONST_H)      $(INCL)/objclass.h \
610                 $(INCL)/monsym.h   $(INCL)/qtext.h $(U)makedefs.c
611
612 #==========================================
613 #  Level Compiler Dependencies
614 #==========================================
615
616 $(U)lev_comp.exe:  $(SPLEVOBJS)
617         $(LINK) $(LFLAGS) -o$@ $(SPLEVOBJS)
618
619 ifeq ($(YACC_LEX),Y)
620
621 $(O)lev_yacc.o:  $(HACK_H)       $(SP_LEV_H)    $(U)lev_yacc.c
622         $(CC) $(cflags) -o$@ $(U)lev_yacc.c
623
624 else
625
626 $(O)lev_yacc.o:  $(HACK_H)       $(SP_LEV_H) $(INCL)/lev_comp.h $(U)lev_yacc.c
627         $(CC) $(cflags) -o$@ $(U)lev_yacc.c
628
629 endif
630
631 $(O)lev_$(LEX).o:  $(HACK_H)   $(SP_LEV_H)        $(INCL)/lev_comp.h \
632         $(U)lev_$(LEX).c
633         $(CC) $(cflags) -o$@ $(U)lev_$(LEX).c
634
635 $(O)lev_main.o:  $(HACK_H) $(INCL)/sp_lev.h $(INCL)/date.h $(U)lev_main.c
636
637 ifeq  "$(DO_YACC)" "YACC_ACT"
638
639 $(INCL)/lev_comp.h: $(U)lev_yacc.c
640
641 $(U)lev_yacc.c $(INCL)/lev_comp.h : $(U)lev_comp.y
642         @$(subst /,\,chdir $(UTIL))
643         @$(subst /,\,$(YACC) -d lev_comp.y)
644         @$(subst /,\,copy $(YTABC) lev_yacc.c)
645         @$(subst /,\,copy $(YTABH) $(INCL)/lev_comp.h)
646         @$(subst /,\,@del $(YTABC))
647         @$(subst /,\,@del $(YTABH))
648         @$(subst /,\,chdir $(SRC))
649 else
650
651 $(U)lev_yacc.c: $(SSHR)/lev_yacc.c
652         @echo ---
653         @echo For now, we will copy the prebuilt
654         @echo lev_comp.c from $(SSHR) into $(U) and use that.
655         @$(subst /,\,copy $(SSHR)/lev_yacc.c $(U)lev_yacc.c)
656         @$(subst /,\,echo.>>$(U)lev_yacc.c)
657
658 $(INCL)/lev_comp.h : $(SSHR)/lev_comp.h
659         @echo ---
660         @echo For now, we will copy the prebuilt lev_comp.h
661         @echo from $(SSHR) into $(INCL) and use that.
662         @$(subst /,\,copy $(SSHR)/lev_comp.h $(INCL)/lev_comp.h)
663         @$(subst /,\,echo.>>$(INCL)/lev_comp.h)
664
665 endif
666
667 $(U)lev_$(LEX).c: $(U)lev_comp.l
668 ifeq  "$(DO_LEX)" "LEX_ACT"
669         @$(subst /,\,chdir $(UTIL))
670         @$(subst /,\,$(LEX) $(FLEXSKEL) lev_comp.l)
671         @$(subst /,\,if exist $@ del $@)
672         @$(subst /,\,copy $(LEXYYC) $@)
673         @$(subst /,\,del $(LEXYYC))
674         @$(subst /,\,chdir $(SRC))
675 else
676         @echo ---
677         @echo For now, we will copy the prebuilt lev_lex.c
678         @echo from $(SSHR) into $(U) and use it.
679         @$(subst /,\,copy $(SSHR)/lev_lex.c $@)
680         @$(subst /,\,echo.>>$@)
681 endif
682
683 #==========================================
684 #  Dungeon Dependencies
685 #==========================================
686
687 $(U)dgn_comp.exe:  $(DGNCOMPOBJS)
688         $(LINK) $(LFLAGS) -o$@ $(DGNCOMPOBJS)
689
690 ifeq  "$(DO_YACC)" "YACC_ACT"
691 $(U)dgn_yacc.c $(INCL)/dgn_comp.h : $(U)dgn_comp.y
692         @$(subst /,\,chdir $(UTIL))
693         @$(subst /,\,$(YACC) -d dgn_comp.y)
694         @$(subst /,\,copy $(YTABC) dgn_yacc.c)
695         @$(subst /,\,copy $(YTABH) $(INCL)/dgn_comp.h)
696         @$(subst /,\,@del $(YTABC))
697         @$(subst /,\,@del $(YTABH))
698         @$(subst /,\,chdir $(SRC))
699 else
700 $(U)dgn_yacc.c: $(SSHR)/dgn_yacc.c
701         @echo ---
702         @echo For now, we will copy the prebuilt $(U)dgn_yacc.c and
703         @echo dgn_comp.h from $(SSHR) into $(U) and use that.
704         @$(subst /,\,copy $(SSHR)/dgn_yacc.c $(U)dgn_yacc.c)
705         @$(subst /,\,echo.>>$(U)dgn_yacc.c)
706
707 $(INCL)/dgn_comp.h: $(SSHR)/dgn_comp.h
708         @echo ---
709         @echo For now, we will copy the prebuilt dgn_comp.h
710         @echo from $(SSHR) into $(INCL) and use that.
711         @$(subst /,\,copy $(SSHR)/dgn_comp.h $(INCL)/dgn_comp.h)
712         @$(subst /,\,echo.>>$(INCL)/dgn_comp.h)
713
714 endif
715
716 ifeq  "$(DO_LEX)" "LEX_ACT"
717
718 $(U)dgn_$(LEX).c: $(U)dgn_comp.l $(INCL)/dgn_comp.h
719         @$(subst /,\,chdir $(UTIL))
720         @$(subst /,\,$(LEX) $(FLEXSKEL) dgn_comp.l)
721         @$(subst /,\,if exist $@ del $@)
722         @$(subst /,\,copy $(LEXYYC) $@)
723         @$(subst /,\,del $(LEXYYC))
724         @$(subst /,\,chdir $(SRC))
725 else
726
727 $(U)dgn_$(LEX).c: $(SSHR)/dgn_lex.c $(INCL)/dgn_comp.h
728         @echo ---
729         @echo For now, we will copy the prebuilt dgn_lex.c
730         @echo from $(SSHR) into $(U) and use it.
731         @$(subst /,\,copy $(SSHR)/dgn_lex.c $@)
732         @$(subst /,\,echo.>>$@)
733
734 endif
735
736 #==========================================
737 #  Recover Utility
738 #==========================================
739
740 $(U)recover.exe:   $(RECOVOBJS)
741         $(LINK) $(LFLAGS) -o$@ $(O)recover.o
742
743 $(O)recover.o:   $(CONFIG_H) $(U)recover.c
744         $(CC) $(cflags) -o$@ $(U)recover.c
745
746 #==========================================
747 #  Header file moves required for tile support
748 #==========================================
749
750 ifeq ($(SUPPRESS_GRAPHICS),Y)
751
752 else
753 #
754 #  Tile Mapping
755 #
756
757 $(SRC)/tile.c: $(U)tilemap.exe
758         @$(subst /,\,$(U)tilemap.exe)
759         @echo A new $@ has been created
760
761 $(U)tilemap.exe: $(O)tilemap.o
762         $(LINK) $(LFLAGS) -o$@ $(O)tilemap.o
763
764 $(O)tilemap.o: $(WSHR)/tilemap.c $(HACK_H) $(TILE_H)
765         $(CC) $(cflags) -I$(WSHR) -I$(MSYS) -o$@ $(WSHR)/tilemap.c
766
767
768 #==========================================
769 #   Tile Utilities
770 #  Required for tile support
771 #==========================================
772
773 $(DAT)/NetHack1.tib: $(TILEFILES) $(U)tile2bin.exe
774         @echo Creating binary tile files (this may take some time)
775         @$(subst /,\,chdir $(DAT))
776         @$(subst /,\,$(U)tile2bin.exe)
777         @$(subst /,\,chdir $(SRC))
778
779 $(DAT)/NetHacko.tib: $(O)thintile.tag $(TILEFILES2) $(U)til2bin2.exe
780         @echo Creating overview binary tile files (this may take some time)
781         @$(subst /,\,chdir $(DAT))
782         @$(subst /,\,$(U)til2bin2.exe)
783         @$(subst /,\,chdir $(SRC))
784
785 $(U)tile2bin.exe: $(O)tile2bin.o $(TEXTIO)
786         $(LINK) $(LFLAGS) -o$@ $(O)tile2bin.o $(TEXTIO)
787
788 $(U)til2bin2.exe: $(O)til2bin2.o $(TEXTIO2)
789         $(LINK) $(LFLAGS) -o$@ $(O)til2bin2.o $(TEXTIO2)
790
791 $(U)thintile.exe: $(O)thintile.o 
792         $(LINK) $(LFLAGS) -o$@ $(O)thintile.o
793
794 $(O)thintile.o:  $(HACK_H) $(WSHR)/tile.h $(WSHR)/thintile.c
795         $(CC) $(cflags) -o$@ $(WSHR)/thintile.c
796
797 $(O)thintile.tag: $(U)thintile.exe $(TILEFILES)
798         @$(subst /,\,$(U)thintile.exe)
799         @$(subst /,\,echo thintiles created >$@)
800
801 $(O)tile2bin.o:  $(HACK_H) $(TILE_H) $(MSYS)/pctiles.h $(MSYS)/pcvideo.h $(MSYS)/tile2bin.c
802         $(CC) $(cflags) -I$(MSYS) -I$(WSHR) -o$@ $(MSYS)/tile2bin.c
803
804 $(O)til2bin2.o:  $(HACK_H) $(TILE_H) $(MSYS)/pctiles.h $(MSYS)/pcvideo.h $(MSYS)/tile2bin.c
805         $(CC) $(cflags) -I$(MSYS) -I$(WSHR) -DTILE_X=8 -DOVERVIEW_FILE -o$@ $(MSYS)/tile2bin.c
806
807 $(O)tiletext.o:  $(CONFIG_H) $(TILE_H) $(WSHR)/tiletext.c
808         $(CC) $(cflags) -I$(MSYS) -I$(WSHR) -o$@ $(WSHR)/tiletext.c
809
810 $(O)tiletex2.o:  $(CONFIG_H) $(TILE_H) $(WSHR)/tiletext.c
811         $(CC) $(cflags) -I$(MSYS) -I$(WSHR) -DTILE_X=8 -o$@ $(WSHR)/tiletext.c
812
813 $(O)tiletxt.o: $(CONFIG_H) $(TILE_H) $(WSHR)/tilemap.c
814         $(CC) $(cflags) -I$(MSYS) -I$(WSHR) -DTILETEXT -o$@ $(WSHR)/tilemap.c
815   
816 $(O)tiletxt2.o: $(CONFIG_H) $(TILE_H) $(WSHR)/tilemap.c
817         $(CC) $(cflags) -I$(MSYS) -I$(WSHR) -DTILETEXT -DTILE_X=8 -o$@ $(WSHR)/tilemap.c
818 #
819 # Optional GIF Utilities (for development)
820 #
821
822 $(U)gif2txt.exe: $(GIFREADERS) $(TEXTIO)
823         $(LINK) $(LFLAGS) -o$@ $(GIFREADERS) $(TEXTIO)
824
825 $(U)gif2txt2.exe: $(GIFREAD2) $(TEXTIO2)
826         $(LINK) $(LFLAGS) -o$@ $(GIFREAD2) $(TEXTIO2)
827
828 $(U)txt2ppm.exe: $(PPMWRITERS) $(TEXTIO)
829         $(LINK) $(LFLAGS) -o$@ $(PPMWRITERS) $(TEXTIO)
830
831 $(U)txt2ppm2.exe: $(PPMWRIT2) $(TEXTIO2)
832         $(LINK) $(LFLAGS) -o$@ $(PPMWRIT2) $(TEXTIO2)
833
834 $(O)gifread.o: $(CONFIG_H) $(WSHR)/tile.h $(WSHR)/gifread.c
835
836 $(O)gifread2.o: $(CONFIG_H) $(WSHR)/tile.h $(WSHR)/gifread.c
837         $(CC) $(cflags) -DTILE_X=8 -o$@ $(WSHR)/gifread.c
838
839 ppmwrite.c: $(WSHR)/ppmwrite.c
840         @$(subst /,\,copy $(WSHR)/ppmwrite.c .)
841
842 $(O)ppmwrite.o: $(CONFIG_H)     $(WSHR)/tile.h
843
844 $(O)ppmwrit2.o:  $(CONFIG_H) $(WSHR)/tile.h ppmwrite.c
845         $(CC) $(cflags) -DTILE_X=8 -o$@ ppmwrite.c
846
847 #
848 #  Optional tile viewer (development sources only)
849 #
850
851 $(U)viewtib.exe: $(O)viewtib.o
852         $(LINK) $(LFLAGS) -o$@ $(O)viewtib.o $(LIBRARIES)
853
854 $(O)viewtib.o: $(MSYS)/viewtib.c
855
856 endif
857
858 #==========================================
859 #  Other Util Dependencies.
860 #==========================================
861
862 $(O)alloc.o: $(CONFIG_H)         alloc.c
863         $(CC) $(cflags) -o$@ alloc.c
864
865 $(O)drawing.o: $(CONFIG_H) drawing.c $(MSYS)/pcvideo.h
866         $(CC) $(cflags) -I$(MSYS) -o$@ drawing.c
867
868 $(O)decl.o: $(CONFIG_H) decl.c
869         $(CC) $(cflags) -o$@ decl.c
870
871 $(O)monst.o: $(CONFIG_H) $(PERMONST_H) $(INCL)/monsym.h   \
872         $(INCL)/color.h  monst.c
873         $(CC) $(cflags) -o$@ monst.c
874
875 $(O)objects.o: $(CONFIG_H)            $(INCL)/obj.h      $(INCL)/objclass.h \
876         $(INCL)/prop.h      $(INCL)/color.h    objects.c
877         $(CC) $(cflags) -o$@ objects.c
878
879 $(O)panic.o:   $(CONFIG_H)        $(U)panic.c
880
881 #============================================================
882 # make data.base an 8.3 filename to prevent an make warning
883 #============================================================
884
885 DATABASE = $(DAT)/data.bas
886
887
888 $(O)dat.tag: $(DAT)/nhdat
889         @$(subst /,\,echo dat done >$@)
890
891 $(DAT)/data: $(O)utility.tag    $(DATABASE)
892         @$(subst /,\,$(U)makedefs.exe -d)
893
894 $(DAT)/rumors:       $(O)utility.tag    $(DAT)/rumors.tru       $(DAT)/rumors.fal
895         @$(subst /,\,$(U)makedefs.exe -r)
896
897 $(DAT)/quest.dat: $(O)utility.tag  $(DAT)/quest.txt
898         @$(subst /,\,$(U)makedefs.exe -q)
899
900 $(DAT)/oracles:      $(O)utility.tag    $(DAT)/oracles.txt
901         @$(subst /,\,$(U)makedefs.exe -h)
902
903 $(O)sp_lev.tag: $(O)utility.tag $(DAT)/bigroom.des  $(DAT)/castle.des \
904         $(DAT)/endgame.des $(DAT)/gehennom.des $(DAT)/knox.des \
905         $(DAT)/medusa.des  $(DAT)/oracle.des   $(DAT)/tower.des \
906         $(DAT)/yendor.des  $(DAT)/arch.des     $(DAT)/barb.des \
907         $(DAT)/caveman.des   $(DAT)/healer.des   $(DAT)/knight.des \
908         $(DAT)/monk.des      $(DAT)/priest.des   $(DAT)/ranger.des \
909         $(DAT)/rogue.des     $(DAT)/samurai.des  $(DAT)/tourist.des \
910         $(DAT)/valkyrie.des  $(DAT)/wizard.des
911         @$(subst /,\,cd $(DAT))
912         @$(subst /,\,$(U)lev_comp bigroom.des)
913         @$(subst /,\,$(U)lev_comp castle.des)
914         @$(subst /,\,$(U)lev_comp endgame.des)
915         @$(subst /,\,$(U)lev_comp gehennom.des)
916         @$(subst /,\,$(U)lev_comp knox.des)
917         @$(subst /,\,$(U)lev_comp mines.des)
918         @$(subst /,\,$(U)lev_comp medusa.des)
919         @$(subst /,\,$(U)lev_comp oracle.des)
920         @$(subst /,\,$(U)lev_comp sokoban.des)
921         @$(subst /,\,$(U)lev_comp tower.des)
922         @$(subst /,\,$(U)lev_comp yendor.des)
923         @$(subst /,\,$(U)lev_comp arch.des)
924         @$(subst /,\,$(U)lev_comp barb.des)
925         @$(subst /,\,$(U)lev_comp caveman.des)
926         @$(subst /,\,$(U)lev_comp healer.des)
927         @$(subst /,\,$(U)lev_comp knight.des)
928         @$(subst /,\,$(U)lev_comp monk.des)
929         @$(subst /,\,$(U)lev_comp priest.des)
930         @$(subst /,\,$(U)lev_comp ranger.des)
931         @$(subst /,\,$(U)lev_comp rogue.des)
932         @$(subst /,\,$(U)lev_comp samurai.des)
933         @$(subst /,\,$(U)lev_comp tourist.des)
934         @$(subst /,\,$(U)lev_comp valkyrie.des)
935         @$(subst /,\,$(U)lev_comp wizard.des)
936         @$(subst /,\,cd $(SRC))
937         @$(subst /,\,echo sp_levs done > $@)
938
939 $(DAT)/dungeon:   $(O)utility.tag  $(DAT)/dungeon.def
940         @$(subst /,\,$(U)makedefs.exe -e)
941         @$(subst /,\,cd $(DAT))
942         @$(subst /,\,$(U)dgn_comp.exe dungeon.pdf)
943         @$(subst /,\,cd $(SRC))
944
945 #==========================================
946 # DLB stuff
947 #==========================================
948
949 #note that dir below assumes bin/dir.exe from djgpp distribution
950 #
951 $(DAT)/nhdat:   $(U)dlb_main.exe $(DAT)/data $(DAT)/rumors $(DAT)/dungeon \
952             $(DAT)/oracles $(DAT)/quest.dat $(O)sp_lev.tag
953         @$(subst /,\,echo dat done >$(O)dat.tag)
954         @$(subst /,\,cd $(DAT))
955         @$(subst /,\,copy $(MSYS)/msdoshlp.txt .)
956         @$(subst /,\,echo data >dlb.lst)
957         @$(subst /,\,echo dungeon >>dlb.lst)
958         @$(subst /,\,echo oracles >>dlb.lst)
959         @$(subst /,\,echo options >>dlb.lst)
960         @$(subst /,\,echo quest.dat >>dlb.lst)
961         @$(subst /,\,echo rumors >>dlb.lst)
962         @$(subst /,\,echo help >>dlb.lst)
963         @$(subst /,\,echo hh >>dlb.lst)
964         @$(subst /,\,echo cmdhelp >>dlb.lst)
965         @$(subst /,\,echo history >>dlb.lst)
966         @$(subst /,\,echo opthelp >>dlb.lst)
967         @$(subst /,\,echo wizhelp >>dlb.lst)
968         @$(subst /,\,echo license >>dlb.lst)
969         @$(subst /,\,echo msdoshlp.txt >>dlb.lst)
970         $(LS) $(subst /,\,*.lev) >>dlb.lst
971         @$(subst /,\,$(U)dlb_main cvIf dlb.lst nhdat)
972         @$(subst /,\,cd $(SRC))
973
974 $(U)dlb_main.exe: $(DLBOBJS)
975         $(LINK) $(LFLAGS) -o$@ $(DLBOBJS)
976
977 $(O)dlb_main.o: $(U)dlb_main.c $(INCL)/config.h $(DLB_H)
978         $(CC) $(cflags) -o$@ $(U)dlb_main.c
979
980 #==========================================
981 # Game Dependencies
982 #==========================================
983
984 # sys/share
985 $(O)main.o:      $(HACK_H) $(DLB_H) $(SSHR)/pcmain.c
986         $(CC) $(cflags) -o$@ $(SSHR)/pcmain.c
987
988 $(O)tty.o:       $(HACK_H) $(INCL)/wintty.h $(SSHR)/pctty.c
989         $(CC) $(cflags) -o$@ $(SSHR)/pctty.c
990
991 $(O)unix.o:      $(HACK_H) $(SSHR)/pcunix.c
992         $(CC) $(cflags) -o$@ $(SSHR)/pcunix.c
993
994 $(O)pcsys.o : $(HACK_H) $(SSHR)/pcsys.c
995         $(CC) $(cflags) -o$@ $(SSHR)/pcsys.c
996
997 # sys/msdos
998 $(O)msdos.o : $(HACK_H)  $(MSYS)/msdos.c
999 #       $(CC) $(cflags) -o$@ $(MSYS)/msdos.c
1000
1001 $(O)pckeys.o : $(HACK_H)  $(MSYS)/pckeys.c
1002 #       $(CC) $(cflags) -o$@ $(MSYS)/pckeys.c
1003
1004 $(O)pctiles.o : $(HACK_H)  $(MSYS)/pctiles.c $(MSYS)/portio.h
1005         $(CC) $(cflags) -I$(MSYS) -I$(WSHR) -o$@ $(MSYS)/pctiles.c
1006
1007 $(O)sound.o : $(HACK_H)  $(MSYS)/sound.c $(MSYS)/portio.h
1008 #       $(CC) $(cflags) -o$@ $(MSYS)/sound.c
1009
1010 $(O)video.o : $(HACK_H)  $(MSYS)/pcvideo.h $(MSYS)/portio.h $(MSYS)/video.c
1011 #       $(CC) $(cflags) -o$@ -I$(MSYS) $(MSYS)/video.c
1012
1013 $(O)vidvga.o : $(HACK_H)  $(MSYS)/pcvideo.h $(MSYS)/portio.h $(TILE_H) $(MSYS)/vidvga.c
1014         $(CC) $(cflags) -I$(MSYS) -I$(WSHR) -o$@ $(MSYS)/vidvga.c
1015
1016 $(O)vidtxt.o : $(HACK_H)  $(MSYS)/pcvideo.h $(MSYS)/portio.h $(TILE_H) $(MSYS)/vidtxt.c
1017 #       $(CC) $(cflags) -o$@ -I$(MSYS) $(MSYS)/vidtxt.c
1018
1019 $(O)stubvid.o : $(HACK_H) $(MSYS)/pcvideo.h $(MSYS)/video.c
1020         $(CC) $(cflags) -I$(MSYS) -DSTUBVIDEO -o$@ $(MSYS)/video.c
1021
1022
1023 # src dependencies
1024
1025 #
1026 # The rest are stolen from sys/unix/Makefile.src,
1027 # with the following changes:
1028 #  o -c (which is included in cflags) substituted with -o$@ , 
1029 #  o an explicit build instruction for dlb.o because it requires 
1030 #    a .h file in ../sys/msdos.
1031 #  o the PATCHLEV_H macro is substitued for $(INCL)/patchlevel.h 
1032 #    to work around a long filename issue.
1033 #  o $(CFLAGS) changed to $(cflags)
1034 # Other than that, these dependencies are untouched.
1035 # That means that there is some irrelevant stuff
1036 # in here, but maintenance should be easier.
1037 #
1038 $(O)tos.o: ../sys/atari/tos.c $(HACK_H) $(INCL)/tcap.h
1039         $(CC) $(cflags) -o$@ ../sys/atari/tos.c
1040 $(O)pcmain.o: ../sys/share/pcmain.c $(HACK_H) $(INCL)/dlb.h \
1041                 #$(INCL)/win32api.h
1042         $(CC) $(cflags) -o$@ ../sys/share/pcmain.c
1043 $(O)pcsys.o: ../sys/share/pcsys.c $(HACK_H)
1044         $(CC) $(cflags) -o$@ ../sys/share/pcsys.c
1045 $(O)pctty.o: ../sys/share/pctty.c $(HACK_H)
1046         $(CC) $(cflags) -o$@ ../sys/share/pctty.c
1047 $(O)pcunix.o: ../sys/share/pcunix.c $(HACK_H)
1048         $(CC) $(cflags) -o$@ ../sys/share/pcunix.c
1049 $(O)random.o: ../sys/share/random.c $(HACK_H)
1050         $(CC) $(cflags) -o$@ ../sys/share/random.c
1051 $(O)ioctl.o: ../sys/share/ioctl.c $(HACK_H) $(INCL)/tcap.h
1052         $(CC) $(cflags) -o$@ ../sys/share/ioctl.c
1053 $(O)unixtty.o: ../sys/share/unixtty.c $(HACK_H)
1054         $(CC) $(cflags) -o$@ ../sys/share/unixtty.c
1055 $(O)unixmain.o: ../sys/unix/unixmain.c $(HACK_H) $(INCL)/dlb.h
1056         $(CC) $(cflags) -o$@ ../sys/unix/unixmain.c
1057 $(O)unixunix.o: ../sys/unix/unixunix.c $(HACK_H)
1058         $(CC) $(cflags) -o$@ ../sys/unix/unixunix.c
1059 $(O)unixres.o: ../sys/unix/unixres.c $(CONFIG_H)
1060         $(CC) $(cflags) -o$@ ../sys/unix/unixres.c
1061 $(O)bemain.o: ../sys/be/bemain.c $(HACK_H) $(INCL)/dlb.h
1062         $(CC) $(cflags) -o$@ ../sys/be/bemain.c
1063 $(O)getline.o: ../win/tty/getline.c $(HACK_H) $(INCL)/func_tab.h
1064         $(CC) $(cflags) -o$@ ../win/tty/getline.c
1065 $(O)termcap.o: ../win/tty/termcap.c $(HACK_H) $(INCL)/tcap.h
1066         $(CC) $(cflags) -o$@ ../win/tty/termcap.c
1067 $(O)topl.o: ../win/tty/topl.c $(HACK_H) $(INCL)/tcap.h
1068         $(CC) $(cflags) -o$@ ../win/tty/topl.c
1069 $(O)wintty.o: ../win/tty/wintty.c $(HACK_H) $(INCL)/dlb.h \
1070                 $(INCL)/date.h $(PATCHLEV_H) $(INCL)/tcap.h
1071         $(CC) $(cflags) -o$@ ../win/tty/wintty.c
1072 $(O)Window.o: ../win/X11/Window.c $(INCL)/xwindowp.h $(INCL)/xwindow.h \
1073                 $(CONFIG_H)
1074         $(CC) $(cflags) -o$@ ../win/X11/Window.c
1075 $(O)dialogs.o: ../win/X11/dialogs.c $(CONFIG_H)
1076         $(CC) $(cflags) -o$@ ../win/X11/dialogs.c
1077 $(O)winX.o: ../win/X11/winX.c $(HACK_H) $(INCL)/winX.h $(INCL)/dlb.h \
1078                 $(PATCHLEV_H) ../win/X11/nh72icon \
1079                 ../win/X11/nh56icon ../win/X11/nh32icon
1080         $(CC) $(cflags) -o$@ ../win/X11/winX.c
1081 $(O)winmap.o: ../win/X11/winmap.c $(INCL)/xwindow.h $(HACK_H) $(INCL)/dlb.h \
1082                 $(INCL)/winX.h $(INCL)/tile2x11.h
1083         $(CC) $(cflags) -o$@ ../win/X11/winmap.c
1084 $(O)winmenu.o: ../win/X11/winmenu.c $(HACK_H) $(INCL)/winX.h
1085         $(CC) $(cflags) -o$@ ../win/X11/winmenu.c
1086 $(O)winmesg.o: ../win/X11/winmesg.c $(INCL)/xwindow.h $(HACK_H) $(INCL)/winX.h
1087         $(CC) $(cflags) -o$@ ../win/X11/winmesg.c
1088 $(O)winmisc.o: ../win/X11/winmisc.c $(HACK_H) $(INCL)/func_tab.h \
1089                 $(INCL)/winX.h
1090         $(CC) $(cflags) -o$@ ../win/X11/winmisc.c
1091 $(O)winstat.o: ../win/X11/winstat.c $(HACK_H) $(INCL)/winX.h
1092         $(CC) $(cflags) -o$@ ../win/X11/winstat.c
1093 $(O)wintext.o: ../win/X11/wintext.c $(HACK_H) $(INCL)/winX.h $(INCL)/xwindow.h
1094         $(CC) $(cflags) -o$@ ../win/X11/wintext.c
1095 $(O)winval.o: ../win/X11/winval.c $(HACK_H) $(INCL)/winX.h
1096         $(CC) $(cflags) -o$@ ../win/X11/winval.c
1097 $(O)tile.o: tile.c $(HACK_H)
1098 $(O)gnaskstr.o: ../win/gnome/gnaskstr.c ../win/gnome/gnaskstr.h \
1099                 ../win/gnome/gnmain.h
1100         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnaskstr.c
1101 $(O)gnbind.o: ../win/gnome/gnbind.c ../win/gnome/gnbind.h ../win/gnome/gnmain.h \
1102                 ../win/gnome/gnaskstr.h ../win/gnome/gnyesno.h
1103         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnbind.c
1104 $(O)gnglyph.o: ../win/gnome/gnglyph.c ../win/gnome/gnglyph.h $(INCL)/tile2x11.h
1105         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnglyph.c
1106 $(O)gnmain.o: ../win/gnome/gnmain.c ../win/gnome/gnmain.h ../win/gnome/gnsignal.h \
1107                 ../win/gnome/gnbind.h ../win/gnome/gnopts.h $(HACK_H) \
1108                 $(INCL)/date.h
1109         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnmain.c
1110 $(O)gnmap.o: ../win/gnome/gnmap.c ../win/gnome/gnmap.h ../win/gnome/gnglyph.h \
1111                 ../win/gnome/gnsignal.h $(HACK_H)
1112         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnmap.c
1113 $(O)gnmenu.o: ../win/gnome/gnmenu.c ../win/gnome/gnmenu.h ../win/gnome/gnmain.h \
1114                 ../win/gnome/gnbind.h
1115         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnmenu.c
1116 $(O)gnmesg.o: ../win/gnome/gnmesg.c ../win/gnome/gnmesg.h ../win/gnome/gnsignal.h
1117         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnmesg.c
1118 $(O)gnopts.o: ../win/gnome/gnopts.c ../win/gnome/gnopts.h ../win/gnome/gnglyph.h \
1119                 ../win/gnome/gnmain.h ../win/gnome/gnmap.h $(HACK_H)
1120         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnopts.c
1121 $(O)gnplayer.o: ../win/gnome/gnplayer.c ../win/gnome/gnplayer.h \
1122                 ../win/gnome/gnmain.h $(HACK_H)
1123         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnplayer.c
1124 $(O)gnsignal.o: ../win/gnome/gnsignal.c ../win/gnome/gnsignal.h \
1125                 ../win/gnome/gnmain.h
1126         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnsignal.c
1127 $(O)gnstatus.o: ../win/gnome/gnstatus.c ../win/gnome/gnstatus.h \
1128                 ../win/gnome/gnsignal.h ../win/gnome/gn_xpms.h \
1129                 ../win/gnome/gnomeprv.h
1130         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnstatus.c
1131 $(O)gntext.o: ../win/gnome/gntext.c ../win/gnome/gntext.h ../win/gnome/gnmain.h \
1132                 ../win/gnome/gn_rip.h
1133         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gntext.c
1134 $(O)gnworn.o: ../win/gnome/gnworn.c ../win/gnome/gnworn.h ../win/gnome/gnglyph.h \
1135                 ../win/gnome/gnsignal.h ../win/gnome/gnomeprv.h
1136         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnworn.c
1137 $(O)gnyesno.o: ../win/gnome/gnyesno.c ../win/gnome/gnbind.h ../win/gnome/gnyesno.h
1138         $(CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnyesno.c
1139 $(O)wingem.o: ../win/gem/wingem.c $(HACK_H) $(INCL)/func_tab.h $(INCL)/dlb.h \
1140                 $(PATCHLEV_H) $(INCL)/wingem.h
1141         $(CC) $(cflags) -o$@ ../win/gem/wingem.c
1142 $(O)wingem1.o: ../win/gem/wingem1.c $(INCL)/gem_rsc.h $(INCL)/load_img.h \
1143                 $(INCL)/gr_rect.h $(INCL)/wintype.h $(INCL)/wingem.h
1144         $(CC) $(cflags) -o$@ ../win/gem/wingem1.c
1145 $(O)load_img.o: ../win/gem/load_img.c $(INCL)/load_img.h
1146         $(CC) $(cflags) -o$@ ../win/gem/load_img.c
1147 $(O)gr_rect.o: ../win/gem/gr_rect.c $(INCL)/gr_rect.h
1148         $(CC) $(cflags) -o$@ ../win/gem/gr_rect.c
1149 $(O)tile.o: tile.c $(HACK_H)
1150 $(O)qt_win.o: ../win/Qt/qt_win.cpp $(HACK_H) $(INCL)/func_tab.h \
1151                 $(INCL)/dlb.h $(PATCHLEV_H) $(INCL)/tile2x11.h \
1152                 $(INCL)/qt_win.h $(INCL)/qt_clust.h $(INCL)/qt_kde0.h \
1153                 $(INCL)/qt_xpms.h qt_win.moc qt_kde0.moc qttableview.moc
1154         $(CXX) $(CXXFLAGS) -o$@ ../win/Qt/qt_win.cpp
1155 $(O)qt_clust.o: ../win/Qt/qt_clust.cpp $(INCL)/qt_clust.h
1156         $(CXX) $(CXXFLAGS) -o$@ ../win/Qt/qt_clust.cpp
1157 $(O)qttableview.o: ../win/Qt/qttableview.cpp $(INCL)/qttableview.h
1158         $(CXX) $(CXXFLAGS) -o$@ ../win/Qt/qttableview.cpp
1159 $(O)monstr.o: monstr.c $(CONFIG_H)
1160 $(O)vis_tab.o: vis_tab.c $(CONFIG_H) $(INCL)/vis_tab.h
1161 $(O)allmain.o: allmain.c $(HACK_H)
1162 $(O)alloc.o: alloc.c $(CONFIG_H)
1163 $(O)apply.o: apply.c $(HACK_H)
1164 $(O)artifact.o: artifact.c $(HACK_H) $(INCL)/artifact.h $(INCL)/artilist.h
1165 $(O)attrib.o: attrib.c $(HACK_H)
1166 $(O)ball.o: ball.c $(HACK_H)
1167 $(O)bones.o: bones.c $(HACK_H) $(INCL)/lev.h
1168 $(O)botl.o: botl.c $(HACK_H)
1169 $(O)cmd.o: cmd.c $(HACK_H) $(INCL)/func_tab.h
1170 $(O)dbridge.o: dbridge.c $(HACK_H)
1171 $(O)decl.o: decl.c $(HACK_H)
1172 $(O)detect.o: detect.c $(HACK_H) $(INCL)/artifact.h
1173 $(O)dig.o: dig.c $(HACK_H)
1174 $(O)display.o: display.c $(HACK_H)
1175 $(O)dlb.o: dlb.c $(CONFIG_H) $(INCL)/dlb.h
1176         $(CC) $(cflags) -I../sys/msdos -o$@ dlb.c
1177 $(O)do.o: do.c $(HACK_H) $(INCL)/lev.h
1178 $(O)do_name.o: do_name.c $(HACK_H)
1179 $(O)do_wear.o: do_wear.c $(HACK_H)
1180 $(O)dog.o: dog.c $(HACK_H)
1181 $(O)dogmove.o: dogmove.c $(HACK_H) $(INCL)/mfndpos.h
1182 $(O)dokick.o: dokick.c $(HACK_H)
1183 $(O)dothrow.o: dothrow.c $(HACK_H)
1184 $(O)drawing.o: drawing.c $(HACK_H) $(INCL)/tcap.h
1185 $(O)dungeon.o: dungeon.c $(HACK_H) $(INCL)/dgn_file.h $(INCL)/dlb.h
1186 $(O)eat.o: eat.c $(HACK_H)
1187 $(O)end.o: end.c $(HACK_H) $(INCL)/lev.h $(INCL)/dlb.h
1188 $(O)engrave.o: engrave.c $(HACK_H) $(INCL)/lev.h
1189 $(O)exper.o: exper.c $(HACK_H)
1190 $(O)explode.o: explode.c $(HACK_H)
1191 $(O)extralev.o: extralev.c $(HACK_H)
1192 $(O)files.o: files.c $(HACK_H) $(INCL)/dlb.h
1193 $(O)fountain.o: fountain.c $(HACK_H)
1194 $(O)hack.o: hack.c $(HACK_H)
1195 $(O)hacklib.o: hacklib.c $(HACK_H)
1196 $(O)invent.o: invent.c $(HACK_H)
1197 $(O)light.o: light.c $(HACK_H) $(INCL)/lev.h
1198 $(O)lock.o: lock.c $(HACK_H)
1199 $(O)mail.o: mail.c $(HACK_H) $(INCL)/mail.h
1200 $(O)makemon.o: makemon.c $(HACK_H)
1201 $(O)mapglyph.o: mapglyph.c $(HACK_H)
1202 $(O)mcastu.o: mcastu.c $(HACK_H)
1203 $(O)mhitm.o: mhitm.c $(HACK_H) $(INCL)/artifact.h
1204 $(O)mhitu.o: mhitu.c $(HACK_H) $(INCL)/artifact.h
1205 $(O)minion.o: minion.c $(HACK_H)
1206 $(O)mklev.o: mklev.c $(HACK_H)
1207 $(O)mkmap.o: mkmap.c $(HACK_H) $(INCL)/sp_lev.h
1208 $(O)mkmaze.o: mkmaze.c $(HACK_H) $(INCL)/sp_lev.h $(INCL)/lev.h
1209 $(O)mkobj.o: mkobj.c $(HACK_H)
1210 $(O)mkroom.o: mkroom.c $(HACK_H)
1211 $(O)mon.o: mon.c $(HACK_H) $(INCL)/mfndpos.h
1212 $(O)mondata.o: mondata.c $(HACK_H)
1213 $(O)monmove.o: monmove.c $(HACK_H) $(INCL)/mfndpos.h $(INCL)/artifact.h
1214 $(O)monst.o: monst.c $(CONFIG_H) $(INCL)/permonst.h $(INCL)/align.h \
1215                 $(INCL)/monattk.h $(INCL)/monflag.h $(INCL)/monsym.h \
1216                 $(INCL)/color.h
1217 $(O)mplayer.o: mplayer.c $(HACK_H)
1218 $(O)mthrowu.o: mthrowu.c $(HACK_H)
1219 $(O)muse.o: muse.c $(HACK_H)
1220 $(O)music.o: music.c $(HACK_H) #interp.c
1221 $(O)o_init.o: o_init.c $(HACK_H) $(INCL)/lev.h
1222 $(O)objects.o: objects.c $(CONFIG_H) $(INCL)/obj.h $(INCL)/objclass.h \
1223                 $(INCL)/prop.h $(INCL)/skills.h $(INCL)/color.h
1224 $(O)objnam.o: objnam.c $(HACK_H)
1225 $(O)options.o: options.c $(CONFIG_H) $(INCL)/objclass.h $(INCL)/flag.h \
1226                 $(HACK_H) $(INCL)/tcap.h
1227 $(O)pager.o: pager.c $(HACK_H) $(INCL)/dlb.h
1228 $(O)pickup.o: pickup.c $(HACK_H)
1229 $(O)pline.o: pline.c $(HACK_H)
1230 $(O)polyself.o: polyself.c $(HACK_H)
1231 $(O)potion.o: potion.c $(HACK_H)
1232 $(O)pray.o: pray.c $(HACK_H)
1233 $(O)priest.o: priest.c $(HACK_H) $(INCL)/mfndpos.h
1234 $(O)quest.o: quest.c $(HACK_H) $(INCL)/qtext.h
1235 $(O)questpgr.o: questpgr.c $(HACK_H) $(INCL)/dlb.h $(INCL)/qtext.h
1236 $(O)read.o: read.c $(HACK_H)
1237 $(O)rect.o: rect.c $(HACK_H)
1238 $(O)region.o: region.c $(HACK_H) $(INCL)/lev.h
1239 $(O)restore.o: restore.c $(HACK_H) $(INCL)/lev.h $(INCL)/tcap.h
1240 $(O)rip.o: rip.c $(HACK_H)
1241 $(O)rnd.o: rnd.c $(HACK_H)
1242 $(O)role.o: role.c $(HACK_H)
1243 $(O)rumors.o: rumors.c $(HACK_H) $(INCL)/lev.h $(INCL)/dlb.h
1244 $(O)save.o: save.c $(HACK_H) $(INCL)/lev.h
1245 $(O)shk.o: shk.c $(HACK_H)
1246 $(O)shknam.o: shknam.c $(HACK_H)
1247 $(O)sit.o: sit.c $(HACK_H) $(INCL)/artifact.h
1248 $(O)sounds.o: sounds.c $(HACK_H)
1249 $(O)sp_lev.o: sp_lev.c $(HACK_H) $(INCL)/dlb.h $(INCL)/sp_lev.h
1250 $(O)spell.o: spell.c $(HACK_H)
1251 $(O)steal.o: steal.c $(HACK_H)
1252 $(O)steed.o: steed.c $(HACK_H)
1253 $(O)sys.o: sys.c $(HACK_H)
1254 $(O)teleport.o: teleport.c $(HACK_H)
1255 $(O)timeout.o: timeout.c $(HACK_H) $(INCL)/lev.h
1256 $(O)topten.o: topten.c $(HACK_H) $(INCL)/dlb.h $(PATCHLEV_H)
1257 $(O)track.o: track.c $(HACK_H)
1258 $(O)trap.o: trap.c $(HACK_H)
1259 $(O)u_init.o: u_init.c $(HACK_H)
1260 $(O)uhitm.o: uhitm.c $(HACK_H)
1261 $(O)vault.o: vault.c $(HACK_H)
1262 $(O)version.o: version.c $(HACK_H) $(INCL)/date.h $(PATCHLEV_H)
1263 $(O)vision.o: vision.c $(HACK_H) $(INCL)/vis_tab.h
1264 $(O)weapon.o: weapon.c $(HACK_H)
1265 $(O)were.o: were.c $(HACK_H)
1266 $(O)wield.o: wield.c $(HACK_H)
1267 $(O)windows.o: windows.c $(HACK_H) $(INCL)/wingem.h $(INCL)/winGnome.h
1268 $(O)wizard.o: wizard.c $(HACK_H) $(INCL)/qtext.h
1269 $(O)worm.o: worm.c $(HACK_H) $(INCL)/lev.h
1270 $(O)worn.o: worn.c $(HACK_H)
1271 $(O)write.o: write.c $(HACK_H)
1272 $(O)zap.o: zap.c $(HACK_H)
1273
1274 # end of file
1275