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