OSDN Git Service

use .jnethackrc
[jnethack/source.git] / sys / winnt / Makefile.msc
1 # NetHack 3.6   Makefile.msc    $NHDT-Date: 1572748386 2019/11/03 02:33:06 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.167 $ */
2 #       Copyright (c) NetHack PC Development Team 1993-2019
3 #
4 #==============================================================================
5 # Build Tools Environment
6 #
7 #       NetHack 3.6.x Makefile for MS Visual Studio Visual C++ compiler
8 #  
9 #       Visual Studio Compilers Tested:
10 #            - Microsoft Visual Studio 2017 Community Edition
11 #            - Microsoft Visual Studio 2019 Community Edition
12 #
13 #==============================================================================
14 #   This is used for building two versions of NetHack:
15 #
16 #   A tty port utilizing the Win32 Console I/O subsystem, Console
17 #       NetHack.exe
18 #
19 #   A Win32 native port built on the Windows API, Graphical NetHack or
20 #       NetHackW.exe
21 #
22 #       In addition to your C compiler,
23 #
24 #       if you want to change           you will need a
25 #       files with suffix               workalike for
26 #              .y                           yacc   (such as bison)
27 #              .l                           lex    (such as flex)
28 #
29 #   If you have any questions read the sys/winnt/Install.nt file included 
30 #   with the distribution.
31 #========================================================================================
32 # BUILD DECISIONS SECTION
33 #
34 # There are currently only 4 decisions that you can choose to make, and none are 
35 # absolutely required because defaults are in place:
36 #       1. Where do you want your build to end up?
37 #       2. Do you want debug information in the executable?
38 #       3. Do you want to explicitly override auto-detection of a 32-bit or 64-bit target?
39 #       4. Do you want to include the optional curses port?
40 #
41 #-----------------------------------------------------------------------------------------
42 #=========================================================================================
43
44 #---------------------------------------------------------------
45 # 1. Where do you want the game to be built (which folder)?
46
47 GAMEDIR = ..\binary               # Default game build directory
48  
49 #---------------------------------------------------------------
50 # 2. Do you want debug information available to the executable?
51   
52 DEBUGINFO = Y
53
54 #---------------------------------------------------------------
55 # 3. This Makefile will attempt to auto-detect your selected target architecture
56 #    based on Visual Studio command prompt configuration settins etc.
57 #    However, if you want to manually override generation of a 
58 #    32-bit or 64-bit build target, you can uncomment the apppropriate
59 #    TARGET_CPU line below.
60 #
61 #TARGET_CPU=x64
62 #TARGET_CPU=x86
63
64 #---------------------------------------------------------------
65 # OPTIONAL - Curses window port support 
66 #
67 # 4. Uncomment these and set them appropriately if you want to
68 #    include curses port support alongside TTY support in your
69 #    NetHack.exe binary. 
70 #
71 #    You'll have to set PDCURSES_H to the correct location of the 
72 #    PDCurses header (.h) files and PDCURSES_C to the location
73 #    of your PDCurses C files.
74 #
75 #ADD_CURSES=Y
76 #PDCURSES_TOP=..\lib\pdcurses
77 #
78 #==============================================================================
79 # This marks the end of the BUILD DECISIONS section.
80 #==============================================================================
81 #
82 #===============================================
83 #======= End of Modification Section ===========
84 #===============================================
85 #
86 ################################################
87 #                                              #
88 # Nothing below here should have to be changed.#
89 #                                              #
90 ################################################
91
92 #
93 #==============================================================================
94 #
95 #  The version of the game this Makefile was designed for
96 NETHACK_VERSION="3.6.6"
97
98 # A brief version for use in macros
99 NHV=$(NETHACK_VERSION:.=)
100 NHV=$(NHV:"=)
101
102 #
103 #  Source directories.    Makedefs hardcodes these, don't change them.
104 #
105
106 INCL    = ..\include     # NetHack include files
107 DAT     = ..\dat         # NetHack data files
108 DOC     = ..\doc         # NetHack documentation files
109 UTIL    = ..\util        # Utility source
110 SRC     = ..\src         # Main source
111 SSYS    = ..\sys\share   # Shared system files
112 MSWSYS  = ..\sys\winnt   # mswin specific files
113 TTY     = ..\win\tty     # window port files (tty)
114 MSWIN   = ..\win\win32   # window port files (win32)
115 WCURSES = ..\win\curses  # window port files (curses) 
116 WSHR    = ..\win\share   # Tile support files 
117 JP      = ..\japanese    # JP
118
119 #
120 #  Object directory.
121 #
122
123 OBJ     = o
124
125 #
126 #==========================================
127 # Exe File Info.
128 #==========================================
129  
130 #        
131 #
132 # Optional high-quality BSD random number generation routines
133 # (see pcconf.h). Set to nothing if not used.
134 #
135
136 RANDOM  = $(OBJ)\random.o
137 #RANDOM =
138 BCRYPT=bcrypt.lib
139 WINPFLAG= -DTILES -DMSWIN_GRAPHICS -DWIN32CON
140
141 # To store all the level files,
142 # help files, etc. in a single library file.
143 # USE_DLB = Y is left uncommented
144
145 USE_DLB = Y
146
147 ! IF ("$(USE_DLB)"=="Y")
148 DLBFLG = -DDLB
149 ! ELSE
150 DLBFLG =
151 ! ENDIF
152
153 #
154 # If you defined ZLIB_COMP in include/config.h and you need
155 # to link with the zlib.lib library, uncomment the line below.
156 # If necessary, prefix explicit path information to the file name
157 # otherwise it assumes the NetHack src directory.
158 #
159
160 #ZLIB = zlib.lib
161
162
163 #==========================================
164 #================ MACROS ==================
165 #==========================================
166 # This section creates shorthand macros for many objects
167 # referenced later on in the Makefile.
168 #
169 #
170 # Shorten up the location for some files
171 #
172
173 O  = $(OBJ)^\
174
175 U  = $(UTIL)^\
176
177 #
178 # Utility Objects.
179 #
180
181 MAKESRC       = $(U)makedefs.c
182
183 MAKEOBJS      = $(O)makedefs.o $(O)monst.o $(O)objects.o
184
185 LEVCOMPOBJS   = $(O)lev_yacc.o  $(O)lev_lex.o   $(O)lev_main.o  \
186                 $(O)alloc.o $(O)decl.o  $(O)drawing.o   $(O)monst.o     $(O)objects.o   $(O)panic.o
187
188 DGNCOMPOBJS   = $(O)dgn_yacc.o  $(O)dgn_lex.o   $(O)dgn_main.o  \
189                 $(O)alloc.o     $(O)panic.o
190
191 RECOVOBJS      = $(O)recover.o
192
193 TILEFILES      = $(WSHR)\monsters.txt $(WSHR)\objects.txt $(WSHR)\other.txt
194
195 #
196 # These are not invoked during a normal game build in 3.4
197 #
198 TEXT_IO        = $(O)tiletext.o $(O)tiletxt.o   $(O)drawing.o \
199                  $(O)decl.o     $(O)monst.o     $(O)objects.o
200
201 TEXT_IO32      = $(O)tilete32.o $(O)tiletx32.o $(O)drawing.o \
202                  $(O)decl.o     $(O)monst.o     $(O)objects.o
203
204 GIFREADERS     = $(O)gifread.o  $(O)alloc.o $(O)panic.o
205 GIFREADERS32   = $(O)gifrd32.o $(O)alloc.o $(O)panic.o
206
207 PPMWRITERS     = $(O)ppmwrite.o $(O)alloc.o $(O)panic.o
208
209 #
210 #  Object files for the game itself.
211 #
212
213 VOBJ01 = $(O)allmain.o  $(O)alloc.o    $(O)apply.o    $(O)artifact.o
214 VOBJ02 = $(O)attrib.o   $(O)ball.o     $(O)bones.o    $(O)botl.o    
215 VOBJ03 = $(O)cmd.o      $(O)dbridge.o  $(O)decl.o     $(O)detect.o  
216 VOBJ04 = $(O)dig.o      $(O)display.o  $(O)do.o       $(O)do_name.o 
217 VOBJ05 = $(O)do_wear.o  $(O)dog.o      $(O)dogmove.o  $(O)dokick.o  
218 VOBJ06 = $(O)dothrow.o  $(O)drawing.o  $(O)dungeon.o  $(O)eat.o     
219 VOBJ07 = $(O)end.o      $(O)engrave.o  $(O)exper.o    $(O)explode.o 
220 VOBJ08 = $(O)extralev.o $(O)files.o    $(O)fountain.o $(O)hack.o    
221 VOBJ09 = $(O)hacklib.o  $(O)invent.o   $(O)light.o    $(O)lock.o    
222 VOBJ10 = $(O)mail.o     $(O)makemon.o  $(O)mapglyph.o $(O)mcastu.o  
223 VOBJ11 = $(O)mhitm.o    $(O)mhitu.o    $(O)minion.o   $(O)mklev.o   
224 VOBJ12 = $(O)mkmap.o    $(O)mkmaze.o   $(O)mkobj.o    $(O)mkroom.o  
225 VOBJ13 = $(O)mon.o      $(O)mondata.o  $(O)monmove.o  $(O)monstj.o  
226 VOBJ14 = $(O)mplayer.o  $(O)mthrowu.o  $(O)muse.o     $(O)isaac64.o
227 VOBJ15 = $(O)music.o    $(O)o_init.o   $(O)objectsj.o $(O)objnam.o  
228 VOBJ16 = $(O)options.o  $(O)pager.o    $(O)pickup.o   $(O)pline.o   
229 VOBJ17 = $(O)polyself.o $(O)potion.o   $(O)pray.o     $(O)priest.o  
230 VOBJ18 = $(O)quest.o    $(O)questpgr.o $(RANDOM)      $(O)read.o    
231 VOBJ19 = $(O)rect.o     $(O)region.o   $(O)restore.o  $(O)rip.o     
232 VOBJ20 = $(O)rnd.o      $(O)role.o     $(O)rumors.o   $(O)save.o    
233 VOBJ21 = $(O)shk.o      $(O)shknam.o   $(O)sit.o      $(O)sounds.o  
234 VOBJ22 = $(O)sp_lev.o   $(O)spell.o    $(O)steal.o    $(O)steed.o   
235 VOBJ23 = $(O)sys.o      $(O)teleport.o $(O)timeout.o  $(O)topten.o
236 VOBJ24 = $(O)track.o    $(O)trap.o     $(O)u_init.o   $(O)uhitm.o
237 VOBJ25 = $(O)vault.o    $(O)vis_tab.o  $(O)vision.o   $(O)weapon.o
238 VOBJ26 = $(O)were.o     $(O)wield.o    $(O)windows.o  $(O)wizard.o
239 VOBJ27 = $(O)worm.o     $(O)worn.o     $(O)write.o    $(O)zap.o
240 VOBJ28 = 
241 JOBJ   = $(O)jlib.o     $(O)jconj.o
242
243 DLBOBJ = $(O)dlb.o
244
245 REGEX  = $(O)cppregex.o
246
247 TTYOBJ = $(O)topl.o     $(O)getline.o  $(O)wintty.o
248
249 !IFNDEF ADD_CURSES
250 CURSESOBJ=
251 !ELSE
252 CURSESOBJ= $(O)cursdial.o $(O)cursinit.o $(O)cursinvt.o $(O)cursmain.o \
253            $(O)cursmesg.o $(O)cursmisc.o $(O)cursstat.o $(O)curswins.o
254 !ENDIF
255
256 SOBJ   = $(O)windmain.o $(O)winnt.o $(O)win10.o \
257         $(O)safeproc.o $(O)nhlan.o $(SOUND) 
258
259 OBJS   = $(VOBJ01) $(VOBJ02) $(VOBJ03) $(VOBJ04) $(VOBJ05) \
260          $(VOBJ06) $(VOBJ07) $(VOBJ08) $(VOBJ09) $(VOBJ10) \
261          $(VOBJ11) $(VOBJ12) $(VOBJ13) $(VOBJ14) $(VOBJ15) \
262          $(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ19) $(VOBJ20) \
263          $(VOBJ21) $(VOBJ22) $(VOBJ23) $(VOBJ24) $(VOBJ25) \
264          $(VOBJ26) $(VOBJ27) $(VOBJ28) $(VOBJ29) $(REGEX)  \
265          $(CURSESOBJ)
266
267 GUIOBJ  = $(O)mhaskyn.o $(O)mhdlg.o \
268         $(O)mhfont.o $(O)mhinput.o $(O)mhmain.o $(O)mhmap.o \
269         $(O)mhmenu.o $(O)mhmsgwnd.o $(O)mhrip.o $(O)mhsplash.o \
270         $(O)mhstatus.o $(O)mhtext.o $(O)mswproc.o $(O)NetHackW.o
271
272 GUIHDR  = $(MSWIN)\mhaskyn.h $(MSWIN)\mhdlg.h $(MSWIN)\mhfont.h \
273         $(MSWIN)\mhinput.h $(MSWIN)\mhmain.h $(MSWIN)\mhmap.h $(MSWIN)\mhmenu.h \
274         $(MSWIN)\mhmsg.h $(MSWIN)\mhmsgwnd.h $(MSWIN)\mhrip.h $(MSWIN)\mhstatus.h \
275         $(MSWIN)\mhtext.h $(MSWIN)\resource.h $(MSWIN)\winMS.h
276
277 COMCTRL = comctl32.lib
278
279 KEYDLLS = $(GAMEDIR)\nhdefkey.dll $(GAMEDIR)\nh340key.dll $(GAMEDIR)\nhraykey.dll
280
281 TILEUTIL16  = $(UTIL)\tile2bmp.exe
282 TILEBMP16   = $(SRC)\tiles.bmp
283
284 TILEUTIL32  = $(UTIL)\til2bm32.exe
285 TILEBMP32   = $(SRC)\tiles32.bmp
286
287 SOUND = $(OBJ)\ntsound.o
288
289 VVOBJ  = $(O)version.o
290
291 ALLOBJ  = $(SOBJ) $(DLBOBJ)  $(WOBJ) $(OBJS) $(VVOBJ) $(JOBJ)
292
293 OPTIONS_FILE = $(DAT)\options
294
295 !IF "$(ADD_CURSES)" == "Y"      
296 #===============-=================================================
297 # PDCurses build macros
298 # Latest PDCurses from https://github.com/wmcbrine/PDCurses.git
299 #=================================================================
300
301 PDCURSES_CURSES_H       = $(PDCURSES_TOP)\curses.h
302 PDCURSES_CURSPRIV_H     = $(PDCURSES_TOP)\curspriv.h
303 PDCURSES_HEADERS        = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H)
304 PDCSRC                  = $(PDCURSES_TOP)\pdcurses
305 PDCWINCON               = $(PDCURSES_TOP)\wincon
306
307 PDCLIBOBJS = $(O)addch.o $(O)addchstr.o $(O)addstr.o $(O)attr.o $(O)beep.o \
308         $(O)bkgd.o $(O)border.o $(O)clear.o $(O)color.o $(O)delch.o $(O)deleteln.o \
309         $(O)getch.o $(O)getstr.o $(O)getyx.o $(O)inch.o $(O)inchstr.o \
310         $(O)initscr.o $(O)inopts.o $(O)insch.o $(O)insstr.o $(O)instr.o $(O)kernel.o \
311         $(O)keyname.o $(O)mouse.o $(O)move.o $(O)outopts.o $(O)overlay.o $(O)pad.o \
312         $(O)panel.o $(O)printw.o $(O)refresh.o $(O)scanw.o $(O)scr_dump.o $(O)scroll.o \
313         $(O)slk.o $(O)termattr.o $(O)touch.o $(O)util.o $(O)window.o $(O)debug.o
314
315 PDCOBJS = $(O)pdcclip.o $(O)pdcdisp.o $(O)pdcgetsc.o $(O)pdckbd.o $(O)pdcscrn.o \
316         $(O)pdcsetsc.o $(O)pdcutil.o
317
318 PDCLIB = $(O)pdcurses.lib
319
320 PDCINCL = /I$(PDCURSES_TOP) /I$(PDCSRC) /I$(PDCWINCON)
321
322 !ELSE
323 PDCLIB = 
324 !ENDIF
325
326 #==========================================
327 # Header file macros
328 #==========================================
329
330 CONFIG_H = $(INCL)\config.h $(INCL)\config1.h $(INCL)\tradstdc.h \
331                 $(INCL)\global.h $(INCL)\coord.h $(INCL)\vmsconf.h \
332                 $(INCL)\system.h $(INCL)\unixconf.h $(INCL)\os2conf.h \
333                 $(INCL)\micro.h $(INCL)\pcconf.h $(INCL)\tosconf.h \
334                 $(INCL)\amiconf.h $(INCL)\macconf.h $(INCL)\beconf.h \
335                 $(INCL)\ntconf.h
336
337 HACK_H = $(INCL)\hack.h $(CONFIG_H) $(INCL)\align.h $(INCL)\context.h \
338                 $(INCL)\dungeon.h $(INCL)\monsym.h $(INCL)\mkroom.h \
339                 $(INCL)\objclass.h $(INCL)\youprop.h $(INCL)\prop.h \
340                 $(INCL)\permonst.h $(INCL)\monattk.h \
341                 $(INCL)\monflag.h $(INCL)\mondata.h $(INCL)\pm.h \
342                 $(INCL)\wintype.h $(INCL)\decl.h $(INCL)\quest.h \
343                 $(INCL)\spell.h $(INCL)\color.h $(INCL)\obj.h \
344                 $(INCL)\you.h $(INCL)\attrib.h $(INCL)\monst.h $(INCL)\lint.h \
345                 $(INCL)\mextra.h $(INCL)\skills.h $(INCL)\onames.h \
346                 $(INCL)\timeout.h $(INCL)\trap.h $(INCL)\flag.h $(INCL)\rm.h \
347                 $(INCL)\vision.h $(INCL)\display.h $(INCL)\engrave.h \
348                 $(INCL)\rect.h $(INCL)\region.h $(INCL)\winprocs.h $(INCL)\botl.h \
349                 $(INCL)\wintty.h $(INCL)\sys.h $(INCL)\trampoli.h
350
351 LEV_H       = $(INCL)\lev.h
352 DGN_FILE_H  = $(INCL)\dgn_file.h
353 LEV_COMP_H  = $(INCL)\lev_comp.h
354 SP_LEV_H    = $(INCL)\sp_lev.h
355 TILE_H      = ..\win\share\tile.h
356
357 #==========================================
358 # Miscellaneous
359 #==========================================
360
361 DATABASE = $(DAT)\data.base
362
363 #==========================================
364 #==========================================
365 # Setting up the compiler and linker
366 #==========================================
367 #==========================================
368
369 cc=cl
370 cpp=cpp
371 link=link
372 rc=Rc
373
374 # Before we get started, this section is used to determine the version of 
375 # Visual Studio we are using.  We set VSVER to 0000 to flag any version that 
376 # is too old or untested.
377 #
378 #NMAKE version 1421277022 is distributed with latest VS 2019
379
380 #!MESSAGE $(MAKEFLAGS)
381 #!MESSAGE $(MAKEDIR)
382 #!MESSAGE $(MAKE)
383
384 MAKEVERSION=$(_NMAKE_VER:.= )
385 MAKEVERSION=$(MAKEVERSION: =)
386 #!MESSAGE $(_NMAKE_VER)
387 #!MESSAGE $(MAKEVERSION)
388
389 VSNEWEST=2019
390 !IF ($(MAKEVERSION) < 1000000000)
391 VSVER=0000              #untested ancient version
392 !ELSEIF ($(MAKEVERSION) > 1000000000) && ($(MAKEVERSION) < 1100000000)
393 VSVER=2010
394 !ELSEIF ($(MAKEVERSION) > 1100000000) && ($(MAKEVERSION) < 1200000000)
395 VSVER=2012
396 !ELSEIF ($(MAKEVERSION) > 1200000000) && ($(MAKEVERSION) < 1400000000)
397 VSVER=2013
398 !ELSEIF ($(MAKEVERSION) > 1400000000) && ($(MAKEVERSION) < 1411000000)
399 VSVER=2015
400 !ELSEIF ($(MAKEVERSION) > 1411000000) && ($(MAKEVERSION) < 1416270312)
401 VSVER=2017
402 !ELSEIF ($(MAKEVERSION) > 1416270311) && ($(MAKEVERSION) < 1421277023)
403 VSVER=$(VSNEWEST)
404 !ELSEIF ($(MAKEVERSION) > 1421277022)
405 VSVER=2999              #untested future version
406 !ENDIF
407
408 !IF ($(VSVER) >= 2012)
409 !MESSAGE Autodetected Visual Studio $(VSVER)
410 !ELSEIF ($(VSVER) == 2999
411 !MESSAGE The version of Visual Studio is newer than the most recent at
412 !MESSAGE the time this Makefile was crafted (Visual Studio $(VSNEWEST)).
413 !MESSAGE Because it is newer we'll proceed expecting that the 
414 !MESSAGE VS$(VSNEWEST) processing will still work.
415 !ELSEIF ($(VSVER) == 0000)
416 !MESSAGE The version of Visual Studio appears to be quite old, older
417 !MESSAGE than VS2010 which is the oldest supported version by this
418 !MESSAGE Makefile, so we'll stop now.
419 !ERROR Untested old Visual Studio version with NMAKE $(_NMAKE_VER).
420 !ENDIF
421
422 !IF ($(VSVER) == 2010)
423 # For VS2010 use "setenv /x86" or "setenv /x64" before invoking make process
424 # DO NOT DELETE THE FOLLOWING LINE
425 !include <win32.mak>
426 ! ENDIF
427
428 #These will be in the environment variables with one of the VS2017
429 #developer command prompts.
430 #VSCMD_ARG_HOST_ARCH=x64
431 #VSCMD_ARG_TGT_ARCH=x86
432
433 !IFDEF VSCMD_ARG_HOST_ARCH
434 !MESSAGE Host architecture is $(VSCMD_ARG_HOST_ARCH)
435 !MESSAGE Target architecture is $(VSCMD_ARG_TGT_ARCH)
436 ! IFNDEF TARGET_CPU
437 !  IF "$(VSCMD_ARG_TGT_ARCH)"=="x64"
438 TARGET_CPU=x64
439 !  ELSE
440 TARGET_CPU=x86
441 !  ENDIF
442 ! ENDIF
443 !ENDIF
444
445 !IF "$(TARGET_CPU)" == ""
446 TARGET_CPU=x86
447 !ENDIF
448
449 !IF ($(VSVER) == 2010)
450 CL_RECENT=
451 !ELSE
452 ! IF ($(VSVER) > 2010)
453 CL_RECENT=-sdl
454 ! ENDIF
455 !ENDIF
456
457 #==========================================
458 # More compiler setup post-macros
459 #==========================================
460 #----------------------------------------------------------------
461
462 !IF "$(ADD_CURSES)" == "Y"
463 CURSESDEF=-D"CURSES_GRAPHICS" -D"CURSES_BRIEF_INCLUDE" -DCHTYPE_32
464 !ELSE
465 CURSDEF=
466 CURSESLIB=
467 !ENDIF
468
469 ccommon= -c -nologo -D"_CONSOLE" -D"_CRT_NONSTDC_NO_DEPRECATE" -D"_CRT_SECURE_NO_DEPRECATE" \
470         -D"_LIB" -D"_SCL_SECURE_NO_DEPRECATE" -D"_VC80_UPGRADE=0x0600" -D"DLB" -D"_MBCS" \
471         -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -D"NDEBUG" -D"YY_NO_UNISTD_H" \
472         -DHAS_STDINT_H -DHAS_INLINE $(CURSESDEF) \
473         -EHsc -fp:precise -Gd -GF -GS -Gy \
474         $(CL_RECENT) -WX- -Zc:forScope -Zc:wchar_t -Zi
475 cdebug= -analyze- -D"_DEBUG" -MTd -RTC1 -Od
476 crelease= -analyze- -D"_MBCS" -errorReport:prompt -MT -O2 -Ot -Ox -Oy
477
478 lcommon= /NOLOGO /INCREMENTAL:NO
479
480 !IF "$(DEBUGINFO)" == "Y"
481 ldebug = /DEBUG
482 cflags1=$(ccommon) $(cdebug)
483 lflags1=$(lcommon) $(ldebug)
484 !ELSE
485 ldebug= /DEBUG
486 cflags1=$(ccommon) $(crelease)
487 lflags1=$(lcommon) $(ldebug)
488 !ENDIF
489
490 lflags= $(lflags1)
491
492 !IF "$(TARGET_CPU)" == "x86"
493 cflags = $(cflags1) -D_X86_=1  -DWIN32 -D_WIN32 -W3
494 scall  = -Gz
495
496 !ELSEIF "$(TARGET_CPU)" == "x64"
497 cflags = $(cflags1) -D_AMD64_=1 -DWIN64 -D_WIN64  -DWIN32 -D_WIN32 -W4
498 scall  =
499 !ENDIF
500
501 !IF ($(VSVER) >= 2012)
502 cflags = $(cflags:-W4=-W3)
503 !ENDIF
504
505 #More verbose warning output options below
506 #cflags = $(cflags:-W4=-wd4131
507 #cflags = $(cflags:-W4=-Wall)
508 #cflags = $(cflags:-W3=-wd4131
509 #cflags = $(cflags:-W3=-Wall)
510
511 # declarations for use on Intel x86 systems
512 !IF "$(TARGET_CPU)" == "x86"
513 DLLENTRY = @12
514 EXEVER=5.01
515 MACHINE=/MACHINE:X86
516 !ENDIF
517
518 # declarations for use on AMD64 systems
519 !IF "$(TARGET_CPU)" == "x64"
520 DLLENTRY =
521 EXEVER=5.02
522 MACHINE=/MACHINE:X64
523 !ENDIF
524
525 # for Windows applications
526 conlflags = $(lflags) -subsystem:console,$(EXEVER)
527 guilflags = $(lflags) -subsystem:windows,$(EXEVER)
528 dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll
529
530 # basic subsystem specific libraries, less the C Run-Time
531 baselibs    = kernel32.lib $(optlibs) $(winsocklibs) advapi32.lib gdi32.lib \
532                 ole32.lib Shell32.lib
533 winlibs     = $(baselibs) user32.lib comdlg32.lib winspool.lib
534
535 # for Windows applications that use the C Run-Time libraries
536 conlibs     = $(baselibs)
537 guilibs     = $(winlibs)
538 #
539
540 !IFNDEF ADD_CURSES
541 INCLDIR= /I..\include /I..\sys\winnt
542 !ELSE
543 INCLDIR= /I..\include /I..\sys\winnt
544 !ENDIF
545
546 #==========================================
547 # Util builds
548 #==========================================
549
550 cflagsBuild = $(cflags) $(INCLDIR) $(WINPFLAG) $(DLBFLG) -DSAFEPROCS
551 lflagsBuild = $(lflags) $(conlibs) $(MACHINE)
552
553 #==========================================
554 # - Game build
555 #==========================================
556
557 LIBS= user32.lib winmm.lib $(ZLIB) $(CURSESLIB)
558
559 ! IF ("$(USE_DLB)"=="Y")
560 DLB = nhdat$(NHV)
561 ! ELSE
562 DLB =
563 ! ENDIF
564
565 #==========================================
566 #================ RULES ==================
567 #==========================================
568
569 .SUFFIXES: .exe .o .til .uu .c .y .l
570
571 #==========================================
572 # Rules for files in src
573 #==========================================
574
575 .c{$(OBJ)}.o:
576         @$(cc) $(cflagsBuild)  -Fo$@ $<
577
578 {$(SRC)}.c{$(OBJ)}.o:
579         @$(cc) $(cflagsBuild)   -Fo$@  $<
580
581 #==========================================
582 # Rules for files in sys\share
583 #==========================================
584
585 {$(SSYS)}.c{$(OBJ)}.o:
586         @$(cc) $(cflagsBuild)  -Fo$@  $<
587
588 {$(SSYS)}.cpp{$(OBJ)}.o:
589         @$(cc) $(cflagsBuild) /EHsc -Fo$@  $<
590
591 #==========================================
592 # Rules for files in sys\winnt
593 #==========================================
594
595 {$(MSWSYS)}.c{$(OBJ)}.o:
596         @$(cc) $(cflagsBuild)  -Fo$@  $<
597
598 {$(MSWSYS)}.h{$(INCL)}.h:
599         @copy $< $@
600
601 #==========================================
602 # Rules for files in util
603 #==========================================
604
605 {$(UTIL)}.c{$(OBJ)}.o:
606         @$(cc) $(cflagsBuild) -Fo$@ $<
607
608 #==========================================
609 # Rules for files in win\share
610 #==========================================
611
612 {$(WSHR)}.c{$(OBJ)}.o:
613         @$(cc) $(cflagsBuild)  -Fo$@ $<
614
615 {$(WSHR)}.h{$(INCL)}.h:
616         @copy $< $@
617
618 #{$(WSHR)}.txt{$(DAT)}.txt:
619 #       @copy $< $@
620
621 #==========================================
622 # Rules for files in win\tty
623 #==========================================
624
625 {$(TTY)}.c{$(OBJ)}.o:
626         $(cc) $(cflagsBuild)  -Fo$@  $<
627
628 #==========================================
629 # Rules for files in japanese
630 #==========================================
631
632 {$(JP)}.c{$(OBJ)}.o:
633         $(cc) $(cflagsBuild)  -Fo$@  $<
634
635 #==========================================
636 # Rules for files in win\win32
637 #==========================================
638
639 {$(MSWIN)}.c{$(OBJ)}.o:
640         @$(cc) $(cflagsBuild)  -Fo$@  $<
641
642 #==========================================
643 # Rules for files in win\curses
644 #==========================================
645
646 {$(WCURSES)}.c{$(OBJ)}.o:
647         @$(cc) -DPDC_NCMOUSE $(PDCINCL) $(cflagsBuild)  -Fo$@ $<
648
649 #{$(WCURSES)}.txt{$(DAT)}.txt:
650 #       @copy $< $@
651
652 #==========================================
653 # Rules for files in PDCurses
654 #==========================================
655
656 {$(PDCURSES_TOP)}.c{$(OBJ)}.o:
657         @$(cc) $(PDCINCL) $(cflagsBuild)  -Fo$@ $<
658
659 {$(PDCSRC)}.c{$(OBJ)}.o:
660         @$(cc) $(PDCINCL) $(cflagsBuild)  -Fo$@ $<
661
662 {$(PDCWINCON)}.c{$(OBJ)}.o:
663         @$(cc) $(PDCINCL) $(cflagsBuild)  -Fo$@ $<
664
665 #==========================================
666 #=============== TARGETS ==================
667 #==========================================
668
669 #
670 #  The default make target (so just typing 'nmake' is useful).
671 #
672 default : install
673
674 #
675 #  The game target.
676 #
677
678 #
679 #  Everything
680 #
681
682 all :   install
683
684 install: $(O)envchk.tag $(O)obj.tag $(O)utility.tag $(GAMEDIR)\JNetHack.exe $(GAMEDIR)\JNetHackW.exe $(O)install.tag
685          @echo Done.
686
687 $(O)install.tag:        $(DAT)\data     $(DAT)\rumors    $(DAT)\dungeon \
688                 $(DAT)\oracles  $(DAT)\quest.dat $(O)sp_lev.tag $(DLB)
689 ! IF ("$(USE_DLB)"=="Y")
690         copy nhdat$(NHV)          $(GAMEDIR)
691         copy $(DAT)\license       $(GAMEDIR)
692         copy $(DAT)\opthelp       $(GAMEDIR)
693 ! ELSE
694         copy $(DAT)\*.            $(GAMEDIR)
695         copy $(DAT)\*.dat         $(GAMEDIR)
696         copy $(DAT)\*.lev         $(GAMEDIR)
697         if exist $(GAMEDIR)\makefile del $(GAMEDIR)\makefile
698 ! ENDIF
699         if exist $(MSWSYS)\sysconf.template copy $(MSWSYS)\sysconf.template $(GAMEDIR)
700         if exist $(DAT)\symbols copy $(DAT)\symbols $(GAMEDIR)\symbols.template
701         if exist $(DOC)\guidebook.txt copy $(DOC)\guidebook.txt $(GAMEDIR)\Guidebook.txt
702         if exist $(DOC)\nethack.txt copy $(DOC)\nethack.txt $(GAMEDIR)\NetHack.txt
703         @if exist $(GAMEDIR)\JNetHack.PDB echo NOTE: You may want to remove $(GAMEDIR:\=/)/JNetHack.PDB to conserve space
704         @if exist $(GAMEDIR)\JNetHackW.PDB echo NOTE: You may want to remove $(GAMEDIR:\=/)/JNetHackW.PDB to conserve space
705         if exist $(MSWSYS)\.nethackrc.template copy $(MSWSYS)\.nethackrc.template $(GAMEDIR)\.jnethackrc.template
706         -if not exist $(GAMEDIR)\record. goto>$(GAMEDIR)\record.
707         echo install done > $@
708
709 #       copy $(MSWSYS)\winnt.hlp    $(GAMEDIR)
710
711 recover: $(U)recover.exe
712         if exist $(U)recover.exe copy $(U)recover.exe  $(GAMEDIR)
713         if exist $(DOC)\recover.txt copy $(DOC)\recover.txt $(GAMEDIR)\recover.txt
714
715 $(O)sp_lev.tag: $(O)utility.tag $(DAT)\bigroom.des  $(DAT)\castle.des \
716         $(DAT)\endgame.des $(DAT)\gehennom.des $(DAT)\knox.des   \
717         $(DAT)\medusa.des  $(DAT)\oracle.des   $(DAT)\tower.des  \
718         $(DAT)\yendor.des  $(DAT)\arch.des     $(DAT)\barb.des   \
719         $(DAT)\caveman.des $(DAT)\healer.des   $(DAT)\knight.des \
720         $(DAT)\monk.des    $(DAT)\priest.des   $(DAT)\ranger.des \
721         $(DAT)\rogue.des   $(DAT)\samurai.des  $(DAT)\sokoban.des \
722         $(DAT)\tourist.des $(DAT)\valkyrie.des $(DAT)\wizard.des
723         cd $(DAT)
724         $(U)levcomp bigroom.des
725         $(U)levcomp castle.des
726         $(U)levcomp endgame.des
727         $(U)levcomp gehennom.des
728         $(U)levcomp knox.des
729         $(U)levcomp mines.des
730         $(U)levcomp medusa.des
731         $(U)levcomp oracle.des
732         $(U)levcomp sokoban.des
733         $(U)levcomp tower.des
734         $(U)levcomp yendor.des
735         $(U)levcomp arch.des
736         $(U)levcomp barb.des
737         $(U)levcomp caveman.des
738         $(U)levcomp healer.des
739         $(U)levcomp knight.des
740         $(U)levcomp monk.des
741         $(U)levcomp priest.des
742         $(U)levcomp ranger.des
743         $(U)levcomp rogue.des
744         $(U)levcomp samurai.des
745         $(U)levcomp tourist.des
746         $(U)levcomp valkyrie.des
747         $(U)levcomp wizard.des
748         cd $(SRC)
749         echo sp_levs done > $(O)sp_lev.tag
750
751 $(O)utility.tag: $(INCL)\date.h $(INCL)\onames.h $(INCL)\pm.h \
752                 $(SRC)\vis_tab.c  \
753                 $(U)levcomp.exe $(INCL)\vis_tab.h \
754                 $(U)dgncomp.exe $(TILEUTIL16)
755              @echo utilities made >$@
756              @echo utilities made.
757
758 tileutil: $(U)gif2txt.exe $(U)gif2tx32.exe $(U)txt2ppm.exe
759         @echo Optional tile development utilities are up to date.
760
761 $(O)NetHackW.res: $(TILEBMP16) $(MSWIN)\NetHackW.rc $(MSWIN)\mnsel.bmp \
762         $(MSWIN)\mnselcnt.bmp $(MSWIN)\mnunsel.bmp \
763         $(MSWIN)\petmark.bmp $(MSWIN)\pilemark.bmp $(MSWIN)\NetHack.ico $(MSWIN)\rip.bmp \
764         $(MSWIN)\splash.bmp
765         @$(rc) -r -fo$@ -i$(MSWIN) -dNDEBUG $(MSWIN)\NetHackW.rc
766
767 $(O)console.res: $(MSWSYS)\console.rc $(MSWSYS)\NetHack.ico
768         @$(rc) -r -fo$@ -i$(MSWSYS) -dNDEBUG $(MSWSYS)\console.rc
769
770
771 #==========================================
772 #  The game targets.
773 #==========================================
774
775 #  The section for linking the NetHack image looks a little strange at 
776 #  first, especially if you are used to UNIX makes, or NDMAKE.  It is 
777 #  Microsoft nmake specific, and it gets around the problem of the 
778 #  link command line being too long for the linker.  An "in-line" linker 
779 #  response file is generated temporarily.
780 #
781 #  It takes advantage of the following features of nmake:
782 #
783 #  Inline files : 
784 #                       Specifying the "<<" means to start an inline file.
785 #                       Another "<<" at the start of a line closes the 
786 #                       inline file.
787 #
788 #  Substitution within Macros:
789 #                       $(mymacro:string1=string2) replaces every
790 #                       occurrence of string1 with string2 in the 
791 #                       macro mymacro.  Special ascii key codes may be 
792 #                       used in the substitution text by preceding it 
793 #                       with ^ as we have done below.  Every occurence
794 #                       of a <tab> in $(ALLOBJ) is replaced by 
795 #                       <+><return><tab>.
796
797 GAMEOBJ=$(ALLOBJ:^      =^
798 )
799 GAMEOBJ=$(GAMEOBJ:^ =^
800 )
801
802 #
803 #  DO NOT INDENT THE << below!
804 #
805
806 # NetHack
807 # full gui linkage libs:
808 #    libs: $(LIBS) $(conlibs) $(guilibs) $(COMCTRL)
809 #    objs: $(GAMEOBJ) $(TTYOBJ) $(O)nttty.o $(O)tile.o $(GUIOBJ)
810 # otherwise:
811 #    libs: $(LIBS) $(conlibs) 
812 #    objs: $(GAMEOBJ) $(TTYOBJ) $(O)tile.o $(O)guistub.o
813
814
815 $(GAMEDIR)\JNetHack.exe : $(O)gamedir.tag $(PDCLIB) $(O)tile.o $(O)nttty.o $(O)guistub.o \
816                         $(ALLOBJ) $(TTYOBJ) $(GUIOBJ) $(O)console.res $(KEYDLLS)
817         @if not exist $(GAMEDIR)\*.* mkdir $(GAMEDIR)
818         @echo Linking $(@:\=/)
819         $(link) $(lflagsBuild) $(conlflags) /STACK:2048 /PDB:$(GAMEDIR)\$(@B).PDB /MAP:$(O)$(@B).MAP \
820                 $(LIBS) $(PDCLIB) $(conlibs) $(BCRYPT) -out:$@ @<<$(@B).lnk
821                 $(GAMEOBJ)
822                 $(TTYOBJ)
823                 $(O)nttty.o
824                 $(O)tile.o
825                 $(O)guistub.o
826                 $(O)console.res
827 <<
828         @if exist $(O)install.tag del $(O)install.tag
829
830 # NetHackW
831 # full tty linkage libs:
832 #    libs: $(LIBS) $(guilibs) $(COMCTRL)
833 #    objs: $(GAMEOBJ) $(GUIOBJ) $(TTYOBJ) $(O)tile.o $(O)nttty.o
834 # otherwise:
835 #    libs: $(LIBS) $(guilibs) $(COMCTRL)
836 #    objs: $(GAMEOBJ) $(GUIOBJ) $(O)tile.o $(O)ttystub.o
837
838 $(GAMEDIR)\JNetHackW.exe : $(O)gamedir.tag $(O)tile.o $(O)ttystub.o \
839                         $(ALLOBJ) $(TTYOBJ) $(GUIOBJ) $(O)NetHackW.res $(O)gamedir.tag $(KEYDLLS)
840         @if not exist $(GAMEDIR)\*.* mkdir $(GAMEDIR)
841         @echo   Linking $(@:\=/)
842         $(link) $(lflagsBuild) $(guilflags) /STACK:2048 /PDB:$(GAMEDIR)\$(@B).PDB \
843                 /MAP:$(O)$(@B).MAP $(LIBS) $(PDCLIB) $(guilibs) $(COMCTRL) $(BCRYPT) -out:$@ @<<$(@B).lnk
844                 $(GAMEOBJ)
845                 $(GUIOBJ)
846                 $(O)tile.o
847                 $(O)ttystub.o
848                 $(O)NetHackW.res
849 <<
850
851 $(O)gamedir.tag:
852         @if not exist $(GAMEDIR)\*.* echo creating directory $(GAMEDIR:\=/)
853         @if not exist $(GAMEDIR)\*.* mkdir $(GAMEDIR)
854         @echo directory created > $@
855
856 $(O)nhdefkey.def:
857         @echo LIBRARY $(@B) >$@
858 ! IF "$(TARGET_CPU)"=="x64" || "$(PROCESSOR_ARCHITECTURE)"=="x64"
859 ! ELSE
860         @echo EXPORTS >>$@
861         @echo    ProcessKeystroke >>$@
862         @echo    NHkbhit >>$@
863         @echo    CheckInput >>$@
864         @echo    SourceWhere >>$@
865         @echo    SourceAuthor >>$@
866         @echo    KeyHandlerName >>$@
867 ! ENDIF
868
869 $(GAMEDIR)\nhdefkey.dll : $(O)$(@B).o $(O)gamedir.tag $(O)$(@B).def
870         @echo Linking $(@:\=/)
871         @$(link) $(ldebug) /RELEASE /DLL user32.lib \
872                 /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).map" /DEF:$(O)$(@B).def \
873                 /IMPLIB:$(O)$(@B).lib -out:$@ $(O)$(@B).o
874
875 $(O)nh340key.def:
876         @echo LIBRARY $(@B) >$@
877 ! IF "$(TARGET_CPU)"=="x64" || "$(PROCESSOR_ARCHITECTURE)"=="x64"
878 ! ELSE
879         @echo EXPORTS >>$@
880         @echo    ProcessKeystroke >>$@
881         @echo    NHkbhit >>$@
882         @echo    CheckInput >>$@
883         @echo    SourceWhere >>$@
884         @echo    SourceAuthor >>$@
885         @echo    KeyHandlerName >>$@
886 ! ENDIF
887
888 $(GAMEDIR)\nh340key.dll : $(O)$(@B).o $(O)gamedir.tag $(O)$(@B).def
889         @echo Linking $(@:\=/)
890         @$(link) $(ldebug) /RELEASE /NOLOGO /DLL user32.lib \
891                 /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).map" /DEF:$(O)$(@B).def \
892                 /IMPLIB:$(O)$(@B).lib -out:$@ $(O)$(@B).o
893
894 $(O)nhraykey.def:
895         @echo LIBRARY $(@B) >$@
896 ! IF "$(TARGET_CPU)"=="x64" || "$(PROCESSOR_ARCHITECTURE)"=="x64"
897 ! ELSE
898         @echo EXPORTS >>$@
899         @echo    ProcessKeystroke >>$@
900         @echo    NHkbhit >>$@
901         @echo    CheckInput >>$@
902         @echo    SourceWhere >>$@
903         @echo    SourceAuthor >>$@
904         @echo    KeyHandlerName >>$@
905 ! ENDIF
906
907 $(GAMEDIR)\nhraykey.dll : $(O)$(@B).o $(O)gamedir.tag $(O)$(@B).def
908         @echo Linking $(@:\=/)
909         @$(link) $(ldebug) /RELEASE /NOLOGO /DLL user32.lib \
910                 /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).map" /DEF:$(O)$(@B).def \
911                 /IMPLIB:$(O)$(@B).lib -out:$@ $(O)$(@B).o
912
913 #
914 #  Secondary Targets.
915 #
916     
917 #==========================================
918 # Makedefs Stuff
919 #==========================================
920 $(U)nhsizes.exe: $(O)nhsizes.o
921         @echo Linking $(@:\=/)
922         $(link) $(lflagsBuild) -out:$@ $(O)nhsizes.o $(O)panic.o $(O)alloc.o
923
924 $(O)nhsizes.o: $(CONFIG_H) nhsizes.c
925         @$(cc) $(cflagsBuild) -Fo$@ nhsizes.c
926
927 $(U)makedefs.exe:       $(MAKEOBJS)
928         @echo Linking $(@:\=/)
929         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(MAKEOBJS)
930
931 $(O)makedefs.o: $(CONFIG_H)     $(INCL)\monattk.h $(INCL)\monflag.h   $(INCL)\objclass.h \
932                  $(INCL)\monsym.h    $(INCL)\qtext.h    $(INCL)\patchlevel.h \
933                  $(U)makedefs.c
934         @if not exist $(OBJ)\*.* echo creating directory $(OBJ:\=/)
935         @if not exist $(OBJ)\*.* mkdir $(OBJ)
936         @$(cc) -DENUM_PM $(cflagsBuild) -Fo$@ $(U)makedefs.c
937
938 #
939 #  date.h should be remade every time any of the source or include
940 #  files is modified.
941 #
942
943 $(INCL)\date.h $(OPTIONS_FILE) : $(U)makedefs.exe
944         $(U)makedefs -v
945
946 $(INCL)\onames.h : $(U)makedefs.exe
947         $(U)makedefs -o
948
949 $(INCL)\pm.h : $(U)makedefs.exe
950         $(U)makedefs -p
951
952 $(INCL)\vis_tab.h: $(U)makedefs.exe
953         $(U)makedefs -z
954
955 $(SRC)\vis_tab.c: $(U)makedefs.exe
956         $(U)makedefs -z
957
958 #==========================================
959 # uudecode utility and uuencoded targets
960 #==========================================
961
962 $(U)uudecode.exe: $(O)uudecode.o
963         @echo Linking $(@:\=/)
964         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(O)uudecode.o
965
966 $(O)uudecode.o: $(SSYS)\uudecode.c
967         @$(cc) $(cflagsBuild) /D_CRT_SECURE_NO_DEPRECATE -Fo$@ $(SSYS)\uudecode.c
968
969 $(MSWSYS)\NetHack.ico : $(U)uudecode.exe $(MSWSYS)\nhico.uu 
970         chdir $(MSWSYS)
971         ..\..\util\uudecode.exe nhico.uu
972         chdir ..\..\src
973
974 $(MSWIN)\NetHack.ico : $(U)uudecode.exe $(MSWSYS)\nhico.uu 
975         chdir $(MSWIN)
976         ..\..\util\uudecode.exe ../../sys/winnt/nhico.uu
977         chdir ..\..\src
978
979 $(MSWIN)\mnsel.bmp: $(U)uudecode.exe $(MSWIN)\mnsel.uu
980         chdir $(MSWIN)
981         ..\..\util\uudecode.exe mnsel.uu
982         chdir ..\..\src
983
984 $(MSWIN)\mnselcnt.bmp: $(U)uudecode.exe $(MSWIN)\mnselcnt.uu
985         chdir $(MSWIN)
986         ..\..\util\uudecode.exe mnselcnt.uu
987         chdir ..\..\src
988
989 $(MSWIN)\mnunsel.bmp: $(U)uudecode.exe $(MSWIN)\mnunsel.uu
990         chdir $(MSWIN)
991         ..\..\util\uudecode.exe mnunsel.uu
992         chdir ..\..\src
993
994 $(MSWIN)\petmark.bmp: $(U)uudecode.exe $(MSWIN)\petmark.uu
995         chdir $(MSWIN)
996         ..\..\util\uudecode.exe petmark.uu
997         chdir ..\..\src
998
999 $(MSWIN)\pilemark.bmp: $(U)uudecode.exe $(MSWIN)\pilemark.uu
1000         chdir $(MSWIN)
1001         ..\..\util\uudecode.exe pilemark.uu
1002         chdir ..\..\src
1003
1004 $(MSWIN)\rip.bmp: $(U)uudecode.exe $(MSWIN)\rip.uu
1005         chdir $(MSWIN)
1006         ..\..\util\uudecode.exe rip.uu
1007         chdir ..\..\src
1008
1009 $(MSWIN)\splash.bmp: $(U)uudecode.exe $(MSWIN)\splash.uu
1010         chdir $(MSWIN)
1011         ..\..\util\uudecode.exe splash.uu
1012         chdir ..\..\src
1013
1014 #=================================================
1015 # Level Compiler Stuff
1016 #=================================================
1017 #
1018 # defer to the steps in ..\win\win32\levstuff.mak
1019 #
1020
1021 $(U)lev_yacc.c: $(U)lev_comp.y
1022         nmake -nologo -f ..\win\win32\levstuff.mak $(U)lev_yacc.c
1023
1024 $(U)lev_lex.c: $(U)lev_comp.l
1025         nmake -nologo -f ..\win\win32\levstuff.mak $(U)lev_lex.c
1026
1027 $(INCL)\lev_comp.h:
1028         nmake -nologo -f ..\win\win32\levstuff.mak $(INCL)\lev_comp.h
1029
1030 $(O)lev_yacc.o: $(HACK_H)   $(SP_LEV_H) $(INCL)\lev_comp.h $(U)lev_yacc.c
1031         @$(cc) $(cflagsBuild) -Fo$@ $(U)lev_yacc.c
1032
1033 $(O)lev_lex.o: $(HACK_H) $(INCL)\lev_comp.h $(SP_LEV_H) $(U)lev_lex.c
1034         @$(cc) $(cflagsBuild) -Fo$@ $(U)lev_lex.c
1035
1036 $(O)lev_main.o: $(U)lev_main.c $(HACK_H) $(SP_LEV_H)
1037         @$(cc) $(cflagsBuild) -Fo$@ $(U)lev_main.c
1038
1039 $(U)levcomp.exe: $(LEVCOMPOBJS)
1040         @echo Linking $(@:\=/)
1041         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1042                 $(LEVCOMPOBJS:^ =^
1043                 )
1044 <<
1045
1046 #=================================================
1047 # Dungeon Compiler Stuff
1048 #=================================================
1049 #
1050 # defer to the steps in ..\win\win32\dgnstuff.mak
1051 #
1052 $(U)dgn_yacc.c: $(U)dgn_comp.y
1053         nmake -nologo -f ..\win\win32\dgnstuff.mak $(U)dgn_yacc.c
1054
1055 $(INCL)\dgn_comp.h:
1056         nmake -nologo -f ..\win\win32\dgnstuff.mak $(INCL)\dgn_comp.h
1057
1058 $(U)dgn_lex.c: $(U)dgn_comp.l
1059         nmake -nologo -f ..\win\win32\dgnstuff.mak $(U)dgn_lex.c
1060
1061 $(O)dgn_yacc.o: $(HACK_H)   $(DGN_FILE_H) $(INCL)\dgn_comp.h $(U)dgn_yacc.c
1062         @$(cc) $(cflagsBuild) -Fo$@ $(U)dgn_yacc.c
1063
1064 $(O)dgn_lex.o: $(HACK_H)   $(DGN_FILE_H)  $(INCL)\dgn_comp.h \
1065         $(U)dgn_lex.c
1066         @$(cc) $(cflagsBuild) -Fo$@ $(U)dgn_lex.c
1067
1068 $(O)dgn_main.o: $(HACK_H) $(U)dgn_main.c
1069         @$(cc) $(cflagsBuild) -Fo$@ $(U)dgn_main.c
1070
1071 $(U)dgncomp.exe: $(DGNCOMPOBJS)
1072         @echo Linking $(@:\=/)
1073         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1074                 $(DGNCOMPOBJS:^ =^
1075                 )
1076 <<
1077
1078 #=================================================
1079 # Create directory for holding object files
1080 #=================================================
1081
1082 $(O)obj.tag:
1083         @if not exist $(OBJ)\*.* echo creating directory $(OBJ:\=/)
1084         @if not exist $(OBJ)\*.* mkdir $(OBJ)
1085         @echo directory created >$@
1086
1087 #==========================================
1088 # Notify of any CL environment variables
1089 # in effect since they change the compiler
1090 # options.
1091 #==========================================
1092
1093 $(O)envchk.tag: $(O)obj.tag
1094 !       IF "$(TARGET_CPU)"=="x64"
1095         @echo Windows x64 64-bit target build
1096 !       ELSE
1097         @echo Windows x86 32-bit target build
1098 !       ENDIF
1099 !IFDEF TTYOBJ
1100         @echo tty window support included
1101 ! IF "$(ADD_CURSES)"=="Y"
1102         @echo curses window support also included
1103 ! ENDIF
1104 !ENDIF
1105 !       IF "$(CL)"!=""
1106 #          @echo Warning, the CL Environment variable is defined:
1107 #          @echo CL=$(CL)
1108 !       ENDIF
1109         echo envchk >$@
1110
1111 #==========================================
1112 #=========== SECONDARY TARGETS ============
1113 #==========================================
1114
1115 #==========================================
1116 # DLB utility and nhdatNNN file creation
1117 #==========================================
1118
1119 $(U)dlb_main.exe: $(DLBOBJ) $(O)dlb.o
1120         @echo Linking $(@:\=/)
1121         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1122                 $(O)dlb_main.o
1123                 $(O)dlb.o
1124                 $(O)alloc.o
1125                 $(O)panic.o
1126 <<
1127
1128 $(O)dlb.o:      $(O)dlb_main.o $(O)alloc.o $(O)panic.o $(INCL)\dlb.h
1129         @$(cc) $(cflagsBuild) /Fo$@ $(SRC)\dlb.c
1130         
1131 $(O)dlb_main.o: $(UTIL)\dlb_main.c $(INCL)\config.h $(INCL)\dlb.h
1132         @$(cc) $(cflagsBuild) /Fo$@ $(UTIL)\dlb_main.c
1133
1134 $(DAT)\porthelp: $(MSWSYS)\porthelp
1135         @copy $(MSWSYS)\porthelp $@ >nul
1136
1137 nhdat$(NHV):    $(U)dlb_main.exe $(DAT)\data $(DAT)\oracles $(OPTIONS_FILE) \
1138         $(DAT)\quest.dat $(DAT)\rumors $(DAT)\help $(DAT)\hh $(DAT)\cmdhelp $(DAT)\keyhelp \
1139         $(DAT)\history $(DAT)\opthelp $(DAT)\wizhelp $(DAT)\dungeon $(DAT)\porthelp \
1140         $(DAT)\license $(DAT)\engrave $(DAT)\epitaph $(DAT)\bogusmon $(DAT)\tribute $(O)sp_lev.tag
1141         cd $(DAT)
1142         echo data >dlb.lst
1143         echo oracles >>dlb.lst
1144         if exist options echo options >>dlb.lst
1145         if exist ttyoptions echo ttyoptions >>dlb.lst
1146         if exist guioptions echo guioptions >>dlb.lst
1147         if exist porthelp echo porthelp >>dlb.lst
1148         echo quest.dat >>dlb.lst
1149         echo rumors >>dlb.lst
1150         echo engrave >>dlb.lst
1151         echo epitaph >>dlb.lst
1152         echo bogusmon >>dlb.lst
1153         echo tribute >>dlb.lst
1154         echo help >>dlb.lst
1155         echo hh >>dlb.lst
1156         echo cmdhelp >>dlb.lst
1157         echo keyhelp >>dlb.lst
1158         echo history >>dlb.lst
1159         echo opthelp >>dlb.lst
1160         echo wizhelp >>dlb.lst
1161         echo dungeon >>dlb.lst
1162         echo license >>dlb.lst
1163         for %%N in (*.lev) do echo %%N >>dlb.lst
1164         $(U)dlb_main cIf dlb.lst $(SRC)\nhdat
1165         cd $(SRC)
1166
1167 #==========================================
1168 #  Recover Utility
1169 #==========================================
1170
1171 $(U)recover.exe: $(RECOVOBJS)
1172         @echo Linking $(@:\=/)
1173         $(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(RECOVOBJS)
1174
1175 $(O)recover.o: $(CONFIG_H) $(U)recover.c $(MSWSYS)\win32api.h
1176         @$(cc) $(cflagsBuild) -Fo$@ $(U)recover.c
1177
1178 #==========================================
1179 #  Tile Mapping
1180 #==========================================
1181
1182 $(SRC)\tile.c: $(U)tilemap.exe
1183         @echo A new $(@:\=/) has been created
1184         @$(U)tilemap
1185
1186 $(U)tilemap.exe: $(O)tilemap.o
1187         @echo Linking $(@:\=/)
1188         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(O)tilemap.o
1189
1190 $(O)tilemap.o: $(WSHR)\tilemap.c $(HACK_H)
1191         @$(cc) $(cflagsBuild) -Fo$@ $(WSHR)\tilemap.c
1192
1193 $(O)tiletx32.o: $(WSHR)\tilemap.c $(HACK_H)
1194         @$(cc) $(cflagsBuild) /DTILETEXT /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tilemap.c
1195
1196 $(O)tiletxt.o: $(WSHR)\tilemap.c $(HACK_H)
1197         @$(cc) $(cflagsBuild) /DTILETEXT -Fo$@ $(WSHR)\tilemap.c
1198
1199 $(O)gifread.o: $(WSHR)\gifread.c  $(CONFIG_H) $(TILE_H)
1200         @$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@ $(WSHR)\gifread.c
1201
1202 $(O)gifrd32.o: $(WSHR)\gifread.c  $(CONFIG_H) $(TILE_H)
1203         @$(cc) $(cflagsBuild) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\gifread.c
1204
1205 $(O)ppmwrite.o: $(WSHR)\ppmwrite.c $(CONFIG_H) $(TILE_H)
1206         @$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@ $(WSHR)\ppmwrite.c
1207
1208 $(O)tiletext.o: $(WSHR)\tiletext.c  $(CONFIG_H) $(TILE_H)
1209         @$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@ $(WSHR)\tiletext.c
1210
1211 $(O)tilete32.o: $(WSHR)\tiletext.c  $(CONFIG_H) $(TILE_H)
1212         @$(cc) $(cflagsBuild) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tiletext.c
1213
1214 #==========================================
1215 # Optional Tile Utilities
1216 #==========================================
1217
1218 $(U)gif2txt.exe: $(GIFREADERS) $(TEXT_IO)
1219         @echo Linking $(@:\=/)
1220         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1221                 $(GIFREADERS:^  =^
1222                 )
1223                 $(TEXT_IO:^     =^
1224                 )
1225 <<
1226
1227 $(U)gif2tx32.exe: $(GIFREADERS32) $(TEXT_IO32)
1228         @echo Linking $(@:\=/)
1229         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1230                 $(GIFREADERS32:^        =^
1231                 )
1232                 $(TEXT_IO32:^   =^
1233                 )
1234 <<
1235
1236 $(U)txt2ppm.exe: $(PPMWRITERS) $(TEXT_IO)
1237         @echo Linking $(@:\=/)
1238         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1239                 $(PPMWRITERS:^  =^
1240                 )
1241                 $(TEXT_IO:^     =^
1242                 )
1243 <<
1244
1245 $(TILEBMP16): $(TILEUTIL16) $(TILEFILES)
1246         @echo Creating 16x16 binary tile files (this may take some time)
1247         @$(U)tile2bmp $(TILEBMP16)
1248 #$(TILEBMP32): $(TILEUTIL32) $(TILEFILES32)
1249 #       @echo Creating 32x32 binary tile files (this may take some time)
1250 #       @$(U)til2bm32 $(TILEBMP32)
1251
1252
1253 $(U)tile2bmp.exe: $(O)tile2bmp.o $(TEXT_IO)
1254         @echo Linking $(@:\=/)
1255         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1256                 $(O)tile2bmp.o
1257                 $(TEXT_IO:^  =^
1258                 )
1259 <<
1260
1261 $(U)til2bm32.exe: $(O)til2bm32.o $(TEXT_IO32)
1262         @echo Linking $(@:\=/)
1263         @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1264                 $(O)til2bm32.o
1265                 $(TEXT_IO32:^  =^
1266                 )
1267 <<
1268
1269 $(O)tile2bmp.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
1270         @$(cc) $(cflagsBuild) -I$(WSHR) /DPACKED_FILE /Fo$@ $(WSHR)\tile2bmp.c
1271
1272 $(O)til2bm32.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
1273         @$(cc) $(cflagsBuild) -I$(WSHR) /DPACKED_FILE /DTILE_X=32 /DTILE_Y=32 /Fo$@ $(WSHR)\tile2bmp.c
1274
1275 #===============================================================================
1276 # PDCurses
1277 #===============================================================================
1278
1279 $(O)pdcurses.lib : $(PDCLIBOBJS) $(PDCOBJS)
1280         lib -nologo /out:$@ $(PDCLIBOBJS) $(PDCOBJS)
1281
1282 $(O)pdcscrn.o : $(PDCURSES_HEADERS) $(PDCWINCON)\pdcscrn.c $(MSWSYS)\stub-pdcscrn.c
1283         $(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $(MSWSYS)\stub-pdcscrn.c
1284
1285 #===============================================================================
1286 # Housekeeping
1287 #===============================================================================
1288
1289 spotless: clean
1290 ! IF ("$(OBJ)"!="")
1291         if exist $(OBJ)\* rmdir $(OBJ) /s /Q
1292         if exist $(GAMEDIR)\nhdefkey.dll del $(GAMEDIR)\nhdefkey.dll
1293         if exist $(GAMEDIR)\nh340key.dll del $(GAMEDIR)\nh340key.dll
1294         if exist $(GAMEDIR)\nhraykey.dll del $(GAMEDIR)\nhraykey.dll
1295         if exist $(GAMEDIR)\JNetHack.exe  del $(GAMEDIR)\JNetHack.exe
1296         if exist $(GAMEDIR)\JNetHack.pdb  del $(GAMEDIR)\JNetHack.pdb
1297         if exist $(GAMEDIR)\nhdat$(NHV)  del $(GAMEDIR)\nhdat$(NHV)
1298 ! ENDIF
1299         if exist $(INCL)\date.h          del $(INCL)\date.h
1300         if exist $(INCL)\onames.h        del $(INCL)\onames.h
1301         if exist $(INCL)\pm.h            del $(INCL)\pm.h
1302         if exist $(INCL)\vis_tab.h       del $(INCL)\vis_tab.h
1303         if exist $(SRC)\vis_tab.c        del $(SRC)\vis_tab.c
1304         if exist $(SRC)\tile.c           del $(SRC)\tile.c
1305         if exist $(U)*.lnk               del $(U)*.lnk
1306         if exist $(U)*.map               del $(U)*.map
1307         if exist $(DAT)\data             del $(DAT)\data
1308         if exist $(DAT)\rumors           del $(DAT)\rumors
1309         if exist $(DAT)\engrave          del $(DAT)\engrave
1310         if exist $(DAT)\epitaph          del $(DAT)\epitaph
1311         if exist $(DAT)\bogusmon         del $(DAT)\bogusmon
1312         if exist $(DAT)\???-fil?.lev     del $(DAT)\???-fil?.lev
1313         if exist $(DAT)\???-goal.lev     del $(DAT)\???-goal.lev
1314         if exist $(DAT)\???-loca.lev     del $(DAT)\???-loca.lev
1315         if exist $(DAT)\???-strt.lev     del $(DAT)\???-strt.lev
1316         if exist $(DAT)\air.lev          del $(DAT)\air.lev
1317         if exist $(DAT)\asmodeus.lev     del $(DAT)\asmodeus.lev
1318         if exist $(DAT)\astral.lev       del $(DAT)\astral.lev
1319         if exist $(DAT)\baalz.lev        del $(DAT)\baalz.lev
1320         if exist $(DAT)\bigrm-*.lev      del $(DAT)\bigrm-*.lev
1321         if exist $(DAT)\castle.lev       del $(DAT)\castle.lev
1322         if exist $(DAT)\data             del $(DAT)\data
1323         if exist $(DAT)\dungeon          del $(DAT)\dungeon
1324         if exist $(DAT)\dungeon.pdf      del $(DAT)\dungeon.pdf
1325         if exist $(DAT)\earth.lev        del $(DAT)\earth.lev
1326         if exist $(DAT)\fakewiz?.lev     del $(DAT)\fakewiz?.lev
1327         if exist $(DAT)\fire.lev         del $(DAT)\fire.lev
1328         if exist $(DAT)\juiblex.lev      del $(DAT)\juiblex.lev
1329         if exist $(DAT)\knox.lev         del $(DAT)\knox.lev
1330         if exist $(DAT)\medusa-?.lev     del $(DAT)\medusa-?.lev
1331         if exist $(DAT)\mine*.lev        del $(DAT)\mine*.lev
1332         if exist $(DAT)\options          del $(DAT)\options
1333         if exist $(DAT)\ttyoptions       del $(DAT)\ttyoptions
1334         if exist $(DAT)\guioptions       del $(DAT)\guioptions
1335         if exist $(DAT)\oracle.lev       del $(DAT)\oracle.lev
1336         if exist $(DAT)\oracles          del $(DAT)\oracles
1337         if exist $(DAT)\orcus.lev        del $(DAT)\orcus.lev
1338         if exist $(DAT)\rumors           del $(DAT)\rumors
1339         if exist $(DAT)\quest.dat        del $(DAT)\quest.dat
1340         if exist $(DAT)\sanctum.lev      del $(DAT)\sanctum.lev
1341         if exist $(DAT)\soko?-?.lev      del $(DAT)\soko?-?.lev
1342         if exist $(DAT)\tower?.lev       del $(DAT)\tower?.lev
1343         if exist $(DAT)\valley.lev       del $(DAT)\valley.lev
1344         if exist $(DAT)\water.lev        del $(DAT)\water.lev
1345         if exist $(DAT)\wizard?.lev      del $(DAT)\wizard?.lev
1346         if exist $(DAT)\dlb.lst          del $(DAT)\dlb.lst
1347         if exist $(DAT)\porthelp         del $(DAT)\porthelp
1348         if exist $(O)sp_lev.tag          del $(O)sp_lev.tag
1349         if exist $(SRC)\vis_tab.c        del $(SRC)\vis_tab.c
1350         if exist nhdat$(NHV).            del nhdat$(NHV).
1351         if exist $(O)obj.tag             del $(O)obj.tag
1352         if exist $(O)gamedir.tag         del $(O)gamedir.tag
1353         if exist $(O)nh*key.lib          del $(O)nh*key.lib
1354         if exist $(O)nh*key.exp          del $(O)nh*key.exp
1355         if exist $(MSWIN)\mnsel.bmp      del $(MSWIN)\mnsel.bmp
1356         if exist $(MSWIN)\mnselcnt.bmp   del $(MSWIN)\mnselcnt.bmp
1357         if exist $(MSWIN)\mnunsel.bmp    del $(MSWIN)\mnunsel.bmp
1358         if exist $(MSWIN)\petmark.bmp    del $(MSWIN)\petmark.bmp
1359         if exist $(MSWIN)\pilemark.bmp   del $(MSWIN)\pilemark.bmp
1360         if exist $(MSWIN)\rip.bmp        del $(MSWIN)\rip.bmp
1361         if exist $(MSWIN)\splash.bmp     del $(MSWIN)\splash.bmp
1362         if exist $(MSWIN)\nethack.ico    del $(MSWIN)\nethack.ico
1363         if exist $(MSWSYS)\nethack.ico   del $(MSWSYS)\nethack.ico
1364         if exist $(U)recover.exe         del $(U)recover.exe
1365         if exist $(U)tile2bmp.exe        del $(U)tile2bmp.exe
1366         if exist $(U)tilemap.exe         del $(U)tilemap.exe
1367         if exist $(U)uudecode.exe        del $(U)uudecode.exe
1368         if exist $(U)dlb_main.exe        del $(U)dlb_main.exe
1369 !IF "$(ADD_CURSES)" == "Y"      
1370         if exist $(O)pdcurses.lib        del $(O)pdcurses.lib
1371 !ENDIF
1372 clean:
1373         if exist $(O)*.o del $(O)*.o
1374         if exist $(O)utility.tag   del $(O)utility.tag
1375         if exist $(U)makedefs.exe  del $(U)makedefs.exe
1376         if exist $(U)levcomp.exe   del $(U)levcomp.exe
1377         if exist $(U)dgncomp.exe   del $(U)dgncomp.exe
1378         if exist $(SRC)\*.lnk      del $(SRC)\*.lnk
1379         if exist $(SRC)\*.map      del $(SRC)\*.map
1380         if exist $(O)install.tag   del $(O)install.tag
1381         if exist $(O)console.res  del $(O)console.res
1382         if exist $(O)dgncomp.MAP  del $(O)dgncomp.MAP
1383         if exist $(O)dgncomp.PDB  del $(O)dgncomp.PDB
1384         if exist $(O)dlb_main.MAP del $(O)dlb_main.MAP
1385         if exist $(O)dlb_main.PDB del $(O)dlb_main.PDB
1386         if exist $(O)gamedir.tag  del $(O)gamedir.tag
1387         if exist $(O)levcomp.MAP  del $(O)levcomp.MAP
1388         if exist $(O)levcomp.PDB  del $(O)levcomp.PDB
1389         if exist $(O)makedefs.MAP del $(O)makedefs.MAP
1390         if exist $(O)makedefs.PDB del $(O)makedefs.PDB
1391         if exist $(O)NetHack.MAP  del $(O)NetHack.MAP
1392         if exist $(O)nh340key.def del $(O)nh340key.def
1393         if exist $(O)nh340key.exp del $(O)nh340key.exp
1394         if exist $(O)nh340key.lib del $(O)nh340key.lib
1395         if exist $(O)nh340key.map del $(O)nh340key.map
1396         if exist $(O)nh340key.PDB del $(O)nh340key.PDB
1397         if exist $(O)nhdefkey.def del $(O)nhdefkey.def
1398         if exist $(O)nhdefkey.exp del $(O)nhdefkey.exp
1399         if exist $(O)nhdefkey.lib del $(O)nhdefkey.lib
1400         if exist $(O)nhdefkey.map del $(O)nhdefkey.map
1401         if exist $(O)nhdefkey.PDB del $(O)nhdefkey.PDB
1402         if exist $(O)nhraykey.def del $(O)nhraykey.def
1403         if exist $(O)nhraykey.exp del $(O)nhraykey.exp
1404         if exist $(O)nhraykey.lib del $(O)nhraykey.lib
1405         if exist $(O)nhraykey.map del $(O)nhraykey.map
1406         if exist $(O)nhraykey.PDB del $(O)nhraykey.PDB
1407         if exist $(O)envchk.tag   del $(O)envchk.tag
1408         if exist $(O)obj.tag      del $(O)obj.tag
1409         if exist $(O)sp_lev.tag   del $(O)sp_lev.tag
1410         if exist $(O)uudecode.MAP del $(O)uudecode.MAP
1411         if exist $(O)uudecode.PDB del $(O)uudecode.PDB
1412         rem
1413         rem defer to the steps in ..\win\win32\levstuff.mak
1414         rem 
1415         nmake -nologo -f ..\win\win32\levstuff.mak clean
1416         rem
1417         rem defer to the steps in ..\win\win32\dgnstuff.mak
1418         rem
1419         nmake -nologo -f ..\win\win32\dgnstuff.mak clean
1420         if exist $(TILEBMP16)        del $(TILEBMP16)
1421         if exist $(TILEBMP32)        del $(TILEBMP32)
1422
1423 #===================================================================
1424 # OTHER DEPENDENCIES
1425 #===================================================================
1426
1427 #
1428 # dat dependencies
1429 #
1430
1431 $(DAT)\data: $(O)utility.tag    $(DATABASE)
1432         $(U)makedefs -d
1433
1434 $(DAT)\rumors: $(O)utility.tag    $(DAT)\rumors.tru   $(DAT)\rumors.fal
1435         $(U)makedefs -r
1436
1437 $(DAT)\quest.dat: $(O)utility.tag  $(DAT)\quest.txt
1438         $(U)makedefs -q
1439
1440 $(DAT)\oracles: $(O)utility.tag    $(DAT)\oracles.txt
1441         $(U)makedefs -h
1442
1443 $(DAT)\engrave: $(DAT)\engrave.txt $(U)makedefs.exe
1444         $(U)makedefs -s
1445
1446 $(DAT)\epitaph: $(DAT)\epitaph.txt $(U)makedefs.exe
1447         $(U)makedefs -s
1448
1449 $(DAT)\bogusmon: $(DAT)\bogusmon.txt $(U)makedefs.exe
1450         $(U)makedefs -s
1451
1452 $(DAT)\dungeon: $(O)utility.tag  $(DAT)\dungeon.def
1453         $(U)makedefs -e
1454         cd $(DAT)
1455         $(U)dgncomp dungeon.pdf
1456         cd $(SRC)
1457
1458 #
1459 # NT dependencies
1460 #
1461
1462 $(O)nttty.o:   $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h $(MSWSYS)\nttty.c
1463         @$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@  $(MSWSYS)\nttty.c
1464 $(O)winnt.o: $(HACK_H) $(MSWSYS)\win32api.h $(MSWSYS)\winnt.c
1465         @$(cc) $(cflagsBuild) -I$(MSWSYS) -I$(MSWIN) -Fo$@ $(MSWSYS)\win10.c
1466         @$(cc) $(cflagsBuild) -Fo$@  $(MSWSYS)\winnt.c
1467 $(O)ntsound.o: $(HACK_H) $(MSWSYS)\ntsound.c
1468         @$(cc) $(cflagsBuild)  -Fo$@ $(MSWSYS)\ntsound.c
1469
1470 #if you aren't linking in the full gui then
1471 #include the following stub for proper linkage.
1472
1473 $(O)guistub.o: $(HACK_H) $(MSWSYS)\stubs.c
1474         @$(cc) $(cflagsBuild) -DGUISTUB -Fo$@ $(MSWSYS)\stubs.c
1475
1476 #
1477 # WIN32 dependencies
1478 #
1479
1480 $(O)NetHackW.o: $(HACK_H) $(MSWIN)\NetHackW.c
1481         @$(cc) $(cflagsBuild) -I$(MSWSYS) -I$(MSWIN) -Fo$@ $(MSWIN)\NetHackW.c
1482
1483 #if you aren't linking in the full tty then
1484 #include the following stub for proper linkage.
1485
1486 $(O)ttystub.o: $(HACK_H) $(MSWSYS)\stubs.c
1487         @$(cc) $(cflagsBuild) -DTTYSTUB -Fo$@ $(MSWSYS)\stubs.c
1488
1489
1490 # util dependencies
1491 #
1492
1493 $(O)panic.o:  $(U)panic.c $(CONFIG_H)
1494         @$(cc) $(cflagsBuild) -Fo$@ $(U)panic.c
1495
1496
1497 # sys/share dependencies
1498 #
1499
1500 (O)cppregex.o:  $(O)cppregex.cpp $(HACK_H)
1501         @$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\cppregex.cpp
1502
1503
1504 # curses window port dependencies
1505 #
1506 $(O)cursdial.o: $(WCURSES)\cursdial.c $(WCURSES)\cursdial.h $(INCL)\wincurs.h
1507 $(O)cursinit.o: $(WCURSES)\cursinit.c $(WCURSES)\cursinit.h $(INCL)\wincurs.h
1508 $(O)cursinvt.o: $(WCURSES)\cursinvt.c $(WCURSES)\cursinvt.h $(INCL)\wincurs.h
1509 $(O)cursmain.o: $(WCURSES)\cursmain.c $(INCL)\wincurs.h
1510 $(O)cursmesg.o: $(WCURSES)\cursmesg.c $(WCURSES)\cursmesg.h $(INCL)\wincurs.h
1511 $(O)cursmisc.o: $(WCURSES)\cursmisc.c $(WCURSES)\cursmisc.h $(INCL)\wincurs.h
1512 $(O)cursstat.o: $(WCURSES)\cursstat.c $(WCURSES)\cursstat.h $(INCL)\wincurs.h
1513 $(O)curswins.o: $(WCURSES)\curswins.c $(WCURSES)\curswins.h $(INCL)\wincurs.h
1514 #
1515 # The rest are stolen from sys/unix/Makefile.src, 
1516 # with the following changes:
1517 #   * ../include changed to $(INCL)
1518 #   * slashes changed to back-slashes 
1519 #   * -c (which is included in CFLAGS) substituted with -Fo$@
1520 #   * $(CFLAGS) replaced with $(cflagsBuild)
1521 #   * $(CC) replaced with @$(CC)
1522 #   * targets prefixed with $(O)
1523 # but otherwise untouched.
1524 # That means that there is some irrelevant stuff
1525 # in here, but maintenance should be easier.
1526 #
1527
1528 $(O)tos.o: ..\sys\atari\tos.c $(HACK_H) $(INCL)\tcap.h
1529         @$(CC) $(cflagsBuild) -Fo$@ ..\sys\atari\tos.c
1530 $(O)pctty.o: ..\sys\share\pctty.c $(HACK_H)
1531         @$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\pctty.c
1532 $(O)isaac64.o: ..\src\isaac64.c $(HACK_H) $(INCL)\isaac64.h $(INCL)\integer.h
1533         @$(CC) $(cflagsBuild) -Fo$@ ..\src\isaac64.c
1534 $(O)random.o: ..\sys\share\random.c $(HACK_H)
1535         @$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\random.c
1536 $(O)ioctl.o: ..\sys\share\ioctl.c $(HACK_H) $(INCL)\tcap.h
1537         @$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\ioctl.c
1538 $(O)unixtty.o: ..\sys\share\unixtty.c $(HACK_H)
1539         @$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\unixtty.c
1540 $(O)unixmain.o: ..\sys\unix\unixmain.c $(HACK_H) $(INCL)\dlb.h
1541         @$(CC) $(cflagsBuild) -Fo$@ ..\sys\unix\unixmain.c
1542 $(O)unixunix.o: ..\sys\unix\unixunix.c $(HACK_H)
1543         @$(CC) $(cflagsBuild) -Fo$@ ..\sys\unix\unixunix.c
1544 $(O)unixres.o: ..\sys\unix\unixres.c $(CONFIG_H)
1545         @$(CC) $(cflagsBuild) -Fo$@ ..\sys\unix\unixres.c
1546 $(O)bemain.o: ..\sys\be\bemain.c $(HACK_H) $(INCL)\dlb.h
1547         @$(CC) $(cflagsBuild) -Fo$@ ..\sys\be\bemain.c
1548 $(O)getline.o: ..\win\tty\getline.c $(HACK_H) $(INCL)\func_tab.h
1549         @$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\getline.c
1550 $(O)termcap.o: ..\win\tty\termcap.c $(HACK_H) $(INCL)\tcap.h
1551         @$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\termcap.c
1552 $(O)topl.o: ..\win\tty\topl.c $(HACK_H) $(INCL)\tcap.h
1553         @$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\topl.c
1554 $(O)wintty.o: ..\win\tty\wintty.c $(HACK_H) $(INCL)\dlb.h $(INCL)\tcap.h
1555         @$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\wintty.c
1556 #$(O)Window.o: ..\win\X11\Window.c $(INCL)\xwindowp.h $(INCL)\xwindow.h \
1557 #               $(CONFIG_H)
1558 #       @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\Window.c
1559 $(O)dialogs.o: ..\win\X11\dialogs.c $(CONFIG_H)
1560         @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\dialogs.c
1561 $(O)winX.o: ..\win\X11\winX.c $(HACK_H) $(INCL)\winX.h $(INCL)\dlb.h \
1562                 ..\win\X11\nh72icon ..\win\X11\nh56icon ..\win\X11\nh32icon
1563         @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winX.c
1564 $(O)winmap.o: ..\win\X11\winmap.c $(INCL)\xwindow.h $(HACK_H) $(INCL)\dlb.h \
1565                 $(INCL)\winX.h $(INCL)\tile2x11.h
1566         @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmap.c
1567 $(O)winmenu.o: ..\win\X11\winmenu.c $(HACK_H) $(INCL)\winX.h
1568         @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmenu.c
1569 $(O)winmesg.o: ..\win\X11\winmesg.c $(INCL)\xwindow.h $(HACK_H) $(INCL)\winX.h
1570         @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmesg.c
1571 $(O)winmisc.o: ..\win\X11\winmisc.c $(HACK_H) $(INCL)\func_tab.h \
1572                 $(INCL)\winX.h
1573         @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmisc.c
1574 $(O)winstat.o: ..\win\X11\winstat.c $(HACK_H) $(INCL)\winX.h
1575         @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winstat.c
1576 $(O)wintext.o: ..\win\X11\wintext.c $(HACK_H) $(INCL)\winX.h $(INCL)\xwindow.h
1577         @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\wintext.c
1578 $(O)winval.o: ..\win\X11\winval.c $(HACK_H) $(INCL)\winX.h
1579         @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winval.c
1580 $(O)tile.o: $(SRC)\tile.c $(HACK_H)
1581 $(O)gnaskstr.o: ..\win\gnome\gnaskstr.c ..\win\gnome\gnaskstr.h \
1582                 ..\win\gnome\gnmain.h
1583         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnaskstr.c
1584 $(O)gnbind.o: ..\win\gnome\gnbind.c ..\win\gnome\gnbind.h ..\win\gnome\gnmain.h \
1585                 ..\win\gnome\gnmenu.h ..\win\gnome\gnaskstr.h \
1586                 ..\win\gnome\gnyesno.h
1587         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnbind.c
1588 $(O)gnglyph.o: ..\win\gnome\gnglyph.c ..\win\gnome\gnglyph.h $(INCL)\tile2x11.h
1589         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnglyph.c
1590 $(O)gnmain.o: ..\win\gnome\gnmain.c ..\win\gnome\gnmain.h ..\win\gnome\gnsignal.h \
1591                 ..\win\gnome\gnbind.h ..\win\gnome\gnopts.h $(HACK_H) \
1592                 $(INCL)\date.h
1593         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmain.c
1594 $(O)gnmap.o: ..\win\gnome\gnmap.c ..\win\gnome\gnmap.h ..\win\gnome\gnglyph.h \
1595                 ..\win\gnome\gnsignal.h $(HACK_H)
1596         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmap.c
1597 $(O)gnmenu.o: ..\win\gnome\gnmenu.c ..\win\gnome\gnmenu.h ..\win\gnome\gnmain.h \
1598                 ..\win\gnome\gnbind.h $(INCL)\func_tab.h
1599         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmenu.c
1600 $(O)gnmesg.o: ..\win\gnome\gnmesg.c ..\win\gnome\gnmesg.h ..\win\gnome\gnsignal.h
1601         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmesg.c
1602 $(O)gnopts.o: ..\win\gnome\gnopts.c ..\win\gnome\gnopts.h ..\win\gnome\gnglyph.h \
1603                 ..\win\gnome\gnmain.h ..\win\gnome\gnmap.h $(HACK_H)
1604         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnopts.c
1605 $(O)gnplayer.o: ..\win\gnome\gnplayer.c ..\win\gnome\gnplayer.h \
1606                 ..\win\gnome\gnmain.h $(HACK_H)
1607         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnplayer.c
1608 $(O)gnsignal.o: ..\win\gnome\gnsignal.c ..\win\gnome\gnsignal.h \
1609                 ..\win\gnome\gnmain.h
1610         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnsignal.c
1611 $(O)gnstatus.o: ..\win\gnome\gnstatus.c ..\win\gnome\gnstatus.h \
1612                 ..\win\gnome\gnsignal.h ..\win\gnome\gn_xpms.h \
1613                 ..\win\gnome\gnomeprv.h
1614         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnstatus.c
1615 $(O)gntext.o: ..\win\gnome\gntext.c ..\win\gnome\gntext.h ..\win\gnome\gnmain.h \
1616                 ..\win\gnome\gn_rip.h
1617         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gntext.c
1618 $(O)gnyesno.o: ..\win\gnome\gnyesno.c ..\win\gnome\gnbind.h ..\win\gnome\gnyesno.h
1619         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnyesno.c
1620 $(O)gnworn.o: ..\win\gnome\gnworn.c ..\win\gnome\gnworn.h ..\win\gnome\gnglyph.h \
1621                 ..\win\gnome\gnsignal.h ..\win\gnome\gnomeprv.h
1622         @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnworn.c
1623 $(O)wingem.o: ..\win\gem\wingem.c $(HACK_H) $(INCL)\func_tab.h $(INCL)\dlb.h \
1624                 $(INCL)\patchlevel.h $(INCL)\wingem.h
1625         @$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\wingem.c
1626 $(O)wingem1.o: ..\win\gem\wingem1.c $(INCL)\gem_rsc.h $(INCL)\load_img.h \
1627                 $(INCL)\gr_rect.h $(INCL)\wintype.h $(INCL)\wingem.h
1628         @$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\wingem1.c
1629 $(O)load_img.o: ..\win\gem\load_img.c $(INCL)\load_img.h
1630         @$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\load_img.c
1631 $(O)gr_rect.o: ..\win\gem\gr_rect.c $(INCL)\gr_rect.h
1632         @$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\gr_rect.c
1633 $(O)tile.o: $(SRC)\tile.c $(HACK_H)
1634 $(O)qt_win.o: ..\win\Qt\qt_win.cpp $(HACK_H) $(INCL)\func_tab.h \
1635                 $(INCL)\dlb.h $(INCL)\patchlevel.h $(INCL)\tile2x11.h \
1636                 $(INCL)\qt_win.h $(INCL)\qt_clust.h $(INCL)\qt_kde0.h \
1637                 $(INCL)\qt_xpms.h qt_win.moc qt_kde0.moc qttableview.moc
1638         $(CXX) $(CXXFLAGS) -Fo$@ ..\win\Qt\qt_win.cpp
1639 $(O)qt_clust.o: ..\win\Qt\qt_clust.cpp $(INCL)\qt_clust.h
1640         $(CXX) $(CXXFLAGS) -Fo$@ ..\win\Qt\qt_clust.cpp
1641 $(O)qttableview.o: ..\win\Qt\qttableview.cpp $(INCL)\qttableview.h
1642         $(CXX) $(CXXFLAGS) -Fo$@ ..\win\Qt\qttableview.cpp
1643 $(O)wc_chainin.o: ..\win\chain\wc_chainin.c $(HACK_H)
1644         @$(cc) $(cflagsBuild) -Fo$@ ..\win\chain\wc_chainin.c
1645 $(O)wc_chainout.o: ..\win\chain\wc_chainout.c $(HACK_H)
1646         @$(cc) $(cflagsBuild) -Fo$@ ..\win\chain\wc_chainout.c
1647 $(O)wc_trace.o: ..\win\chain\wc_trace.c $(HACK_H) $(INCL)\func_tab.h
1648         @$(cc) $(cflagsBuild) -Fo$@ ..\win\chain\wc_trace.c
1649 $(O)vis_tab.o: vis_tab.c $(CONFIG_H) $(INCL)\vis_tab.h
1650 $(O)allmain.o: allmain.c $(HACK_H)
1651 $(O)alloc.o: alloc.c $(CONFIG_H)
1652 $(O)apply.o: apply.c $(HACK_H)
1653 $(O)artifact.o: artifact.c $(HACK_H) $(INCL)\artifact.h $(INCL)\artilist.h
1654 $(O)attrib.o: attrib.c $(HACK_H)
1655 $(O)ball.o: ball.c $(HACK_H)
1656 $(O)bones.o: bones.c $(HACK_H) $(INCL)\lev.h
1657 $(O)botl.o: botl.c $(HACK_H)
1658 $(O)cmd.o: cmd.c $(HACK_H) $(INCL)\func_tab.h
1659 $(O)dbridge.o: dbridge.c $(HACK_H)
1660 $(O)decl.o: decl.c $(HACK_H)
1661 $(O)detect.o: detect.c $(HACK_H) $(INCL)\artifact.h
1662 $(O)dig.o: dig.c $(HACK_H)
1663 $(O)display.o: display.c $(HACK_H)
1664 $(O)dlb.o: dlb.c $(CONFIG_H) $(INCL)\dlb.h
1665 $(O)do.o: do.c $(HACK_H) $(INCL)\lev.h
1666 $(O)do_name.o: do_name.c $(HACK_H)
1667 $(O)do_wear.o: do_wear.c $(HACK_H)
1668 $(O)dog.o: dog.c $(HACK_H)
1669 $(O)dogmove.o: dogmove.c $(HACK_H) $(INCL)\mfndpos.h
1670 $(O)dokick.o: dokick.c $(HACK_H)
1671 $(O)dothrow.o: dothrow.c $(HACK_H)
1672 $(O)drawing.o: drawing.c $(HACK_H) $(INCL)\tcap.h
1673 $(O)dungeon.o: dungeon.c $(HACK_H) $(INCL)\dgn_file.h $(INCL)\dlb.h
1674 $(O)eat.o: eat.c $(HACK_H)
1675 $(O)end.o: end.c $(HACK_H) $(INCL)\lev.h $(INCL)\dlb.h
1676 $(O)engrave.o: engrave.c $(HACK_H) $(INCL)\lev.h
1677 $(O)exper.o: exper.c $(HACK_H)
1678 $(O)explode.o: explode.c $(HACK_H)
1679 $(O)extralev.o: extralev.c $(HACK_H)
1680 $(O)files.o: files.c $(HACK_H) $(INCL)\dlb.h #zlib.h
1681 $(O)fountain.o: fountain.c $(HACK_H)
1682 $(O)hack.o: hack.c $(HACK_H)
1683 $(O)hacklib.o: hacklib.c $(HACK_H)
1684 $(O)invent.o: invent.c $(HACK_H)
1685 $(O)light.o: light.c $(HACK_H) $(INCL)\lev.h
1686 $(O)lock.o: lock.c $(HACK_H)
1687 $(O)mail.o: mail.c $(HACK_H) $(INCL)\mail.h
1688 $(O)makemon.o: makemon.c $(HACK_H)
1689 $(O)mapglyph.o: mapglyph.c $(HACK_H)
1690 $(O)mcastu.o: mcastu.c $(HACK_H)
1691 $(O)mhitm.o: mhitm.c $(HACK_H) $(INCL)\artifact.h
1692 $(O)mhitu.o: mhitu.c $(HACK_H) $(INCL)\artifact.h
1693 $(O)minion.o: minion.c $(HACK_H)
1694 $(O)mklev.o: mklev.c $(HACK_H)
1695 $(O)mkmap.o: mkmap.c $(HACK_H) $(INCL)\sp_lev.h
1696 $(O)mkmaze.o: mkmaze.c $(HACK_H) $(INCL)\sp_lev.h $(INCL)\lev.h
1697 $(O)mkobj.o: mkobj.c $(HACK_H)
1698 $(O)mkroom.o: mkroom.c $(HACK_H)
1699 $(O)mon.o: mon.c $(HACK_H) $(INCL)\mfndpos.h
1700 $(O)mondata.o: mondata.c $(HACK_H)
1701 $(O)monmove.o: monmove.c $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
1702 $(O)monst.o: monst.c $(CONFIG_H) $(INCL)\permonst.h $(INCL)\align.h \
1703                 $(INCL)\monattk.h $(INCL)\monflag.h $(INCL)\monsym.h \
1704                 $(INCL)\color.h
1705 $(O)mplayer.o: mplayer.c $(HACK_H)
1706 $(O)mthrowu.o: mthrowu.c $(HACK_H)
1707 $(O)muse.o: muse.c $(HACK_H)
1708 $(O)music.o: music.c $(HACK_H) #interp.c
1709 $(O)o_init.o: o_init.c $(HACK_H) $(INCL)\lev.h
1710 $(O)objects.o: objects.c $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h \
1711                 $(INCL)\prop.h $(INCL)\skills.h $(INCL)\color.h
1712 $(O)objectsj.o: objectsj.c $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h \
1713                 $(INCL)\prop.h $(INCL)\skills.h $(INCL)\color.h
1714 $(O)objnam.o: objnam.c $(HACK_H)
1715 $(O)options.o: options.c $(CONFIG_H) $(INCL)\objclass.h $(INCL)\flag.h \
1716                 $(HACK_H) $(INCL)\tcap.h
1717 $(O)pager.o: pager.c $(HACK_H) $(INCL)\dlb.h
1718 $(O)pickup.o: pickup.c $(HACK_H)
1719 $(O)pline.o: pline.c $(HACK_H)
1720 $(O)polyself.o: polyself.c $(HACK_H)
1721 $(O)potion.o: potion.c $(HACK_H)
1722 $(O)pray.o: pray.c $(HACK_H)
1723 $(O)priest.o: priest.c $(HACK_H) $(INCL)\mfndpos.h
1724 $(O)quest.o: quest.c $(HACK_H) $(INCL)\qtext.h
1725 $(O)questpgr.o: questpgr.c $(HACK_H) $(INCL)\dlb.h $(INCL)\qtext.h
1726 $(O)read.o: read.c $(HACK_H)
1727 $(O)rect.o: rect.c $(HACK_H)
1728 $(O)region.o: region.c $(HACK_H) $(INCL)\lev.h
1729 $(O)restore.o: restore.c $(HACK_H) $(INCL)\lev.h $(INCL)\tcap.h
1730 $(O)rip.o: rip.c $(HACK_H)
1731 $(O)rnd.o: rnd.c $(HACK_H)
1732 $(O)role.o: role.c $(HACK_H)
1733 $(O)rumors.o: rumors.c $(HACK_H) $(INCL)\lev.h $(INCL)\dlb.h
1734 $(O)save.o: save.c $(HACK_H) $(INCL)\lev.h
1735 $(O)shk.o: shk.c $(HACK_H)
1736 $(O)shknam.o: shknam.c $(HACK_H)
1737 $(O)sit.o: sit.c $(HACK_H) $(INCL)\artifact.h
1738 $(O)sounds.o: sounds.c $(HACK_H)
1739 $(O)sp_lev.o: sp_lev.c $(HACK_H) $(INCL)\dlb.h $(INCL)\sp_lev.h
1740 $(O)spell.o: spell.c $(HACK_H)
1741 $(O)steal.o: steal.c $(HACK_H)
1742 $(O)steed.o: steed.c $(HACK_H)
1743 $(O)sys.o: sys.c $(HACK_H)
1744 $(O)teleport.o: teleport.c $(HACK_H)
1745 $(O)timeout.o: timeout.c $(HACK_H) $(INCL)\lev.h
1746 $(O)topten.o: topten.c $(HACK_H) $(INCL)\dlb.h $(INCL)\patchlevel.h
1747 $(O)track.o: track.c $(HACK_H)
1748 $(O)trap.o: trap.c $(HACK_H)
1749 $(O)u_init.o: u_init.c $(HACK_H)
1750 $(O)uhitm.o: uhitm.c $(HACK_H)
1751 $(O)vault.o: vault.c $(HACK_H)
1752 $(O)version.o: version.c $(HACK_H) $(INCL)\dlb.h $(INCL)\date.h \
1753                 $(INCL)\patchlevel.h
1754 $(O)vision.o: vision.c $(HACK_H) $(INCL)\vis_tab.h
1755 $(O)weapon.o: weapon.c $(HACK_H)
1756 $(O)were.o: were.c $(HACK_H)
1757 $(O)wield.o: wield.c $(HACK_H)
1758 $(O)windmain.o: $(MSWSYS)\windmain.c $(HACK_H)
1759 #$(O)windows.o: windows.c $(HACK_H) $(INCL)\wingem.h $(INCL)\winGnome.h
1760 $(O)wizard.o: wizard.c $(HACK_H) $(INCL)\qtext.h
1761 $(O)worm.o: worm.c $(HACK_H) $(INCL)\lev.h
1762 $(O)worn.o: worn.c $(HACK_H)
1763 $(O)write.o: write.c $(HACK_H)
1764 $(O)zap.o: zap.c $(HACK_H)
1765
1766 #
1767 # from japanese
1768 #
1769
1770 $(O)jlib.o:    $(PCH) $(JP)\jlib.c $(HACK_H)
1771 $(O)jconj.o:   $(PCH) $(JP)\jconj.c $(HACK_H)
1772 #$(O)jtrns.o:   $(PCH) $(JP)\jtrns.c $(HACK_H) $(INCL)\jdata.h
1773
1774 # end of file
1775