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
4 #==============================================================================
5 # Build Tools Environment
7 # NetHack 3.6.x Makefile for MS Visual Studio Visual C++ compiler
9 # Visual Studio Compilers Tested:
10 # - Microsoft Visual Studio 2017 Community Edition
11 # - Microsoft Visual Studio 2019 Community Edition
13 #==============================================================================
14 # This is used for building two versions of NetHack:
16 # A tty port utilizing the Win32 Console I/O subsystem, Console
19 # A Win32 native port built on the Windows API, Graphical NetHack or
22 # In addition to your C compiler,
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)
29 # If you have any questions read the sys/winnt/Install.nt file included
30 # with the distribution.
31 #========================================================================================
32 # BUILD DECISIONS SECTION
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?
41 #-----------------------------------------------------------------------------------------
42 #=========================================================================================
44 #---------------------------------------------------------------
45 # 1. Where do you want the game to be built (which folder)?
47 GAMEDIR = ..\binary # Default game build directory
49 #---------------------------------------------------------------
50 # 2. Do you want debug information available to the executable?
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.
64 #---------------------------------------------------------------
65 # OPTIONAL - Curses window port support
67 # 4. Uncomment these and set them appropriately if you want to
68 # include curses port support alongside TTY support in your
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.
76 #PDCURSES_TOP=..\lib\pdcurses
78 #==============================================================================
79 # This marks the end of the BUILD DECISIONS section.
80 #==============================================================================
82 #===============================================
83 #======= End of Modification Section ===========
84 #===============================================
86 ################################################
88 # Nothing below here should have to be changed.#
90 ################################################
93 #==============================================================================
95 # The version of the game this Makefile was designed for
96 NETHACK_VERSION="3.6.6"
98 # A brief version for use in macros
99 NHV=$(NETHACK_VERSION:.=)
103 # Source directories. Makedefs hardcodes these, don't change them.
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
126 #==========================================
128 #==========================================
132 # Optional high-quality BSD random number generation routines
133 # (see pcconf.h). Set to nothing if not used.
136 RANDOM = $(OBJ)\random.o
139 WINPFLAG= -DTILES -DMSWIN_GRAPHICS -DWIN32CON
141 # To store all the level files,
142 # help files, etc. in a single library file.
143 # USE_DLB = Y is left uncommented
147 ! IF ("$(USE_DLB)"=="Y")
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.
163 #==========================================
164 #================ MACROS ==================
165 #==========================================
166 # This section creates shorthand macros for many objects
167 # referenced later on in the Makefile.
170 # Shorten up the location for some files
181 MAKESRC = $(U)makedefs.c
183 MAKEOBJS = $(O)makedefs.o $(O)monst.o $(O)objects.o
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
188 DGNCOMPOBJS = $(O)dgn_yacc.o $(O)dgn_lex.o $(O)dgn_main.o \
189 $(O)alloc.o $(O)panic.o
191 RECOVOBJS = $(O)recover.o
193 TILEFILES = $(WSHR)\monsters.txt $(WSHR)\objects.txt $(WSHR)\other.txt
196 # These are not invoked during a normal game build in 3.4
198 TEXT_IO = $(O)tiletext.o $(O)tiletxt.o $(O)drawing.o \
199 $(O)decl.o $(O)monst.o $(O)objects.o
201 TEXT_IO32 = $(O)tilete32.o $(O)tiletx32.o $(O)drawing.o \
202 $(O)decl.o $(O)monst.o $(O)objects.o
204 GIFREADERS = $(O)gifread.o $(O)alloc.o $(O)panic.o
205 GIFREADERS32 = $(O)gifrd32.o $(O)alloc.o $(O)panic.o
207 PPMWRITERS = $(O)ppmwrite.o $(O)alloc.o $(O)panic.o
210 # Object files for the game itself.
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
241 JOBJ = $(O)jlib.o $(O)jconj.o
245 REGEX = $(O)cppregex.o
247 TTYOBJ = $(O)topl.o $(O)getline.o $(O)wintty.o
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
256 SOBJ = $(O)windmain.o $(O)winnt.o $(O)win10.o \
257 $(O)safeproc.o $(O)nhlan.o $(SOUND)
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) \
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
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
277 COMCTRL = comctl32.lib
279 KEYDLLS = $(GAMEDIR)\nhdefkey.dll $(GAMEDIR)\nh340key.dll $(GAMEDIR)\nhraykey.dll
281 TILEUTIL16 = $(UTIL)\tile2bmp.exe
282 TILEBMP16 = $(SRC)\tiles.bmp
284 TILEUTIL32 = $(UTIL)\til2bm32.exe
285 TILEBMP32 = $(SRC)\tiles32.bmp
287 SOUND = $(OBJ)\ntsound.o
289 VVOBJ = $(O)version.o
291 ALLOBJ = $(SOBJ) $(DLBOBJ) $(WOBJ) $(OBJS) $(VVOBJ) $(JOBJ)
293 OPTIONS_FILE = $(DAT)\options
295 !IF "$(ADD_CURSES)" == "Y"
296 #===============-=================================================
297 # PDCurses build macros
298 # Latest PDCurses from https://github.com/wmcbrine/PDCurses.git
299 #=================================================================
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
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
315 PDCOBJS = $(O)pdcclip.o $(O)pdcdisp.o $(O)pdcgetsc.o $(O)pdckbd.o $(O)pdcscrn.o \
316 $(O)pdcsetsc.o $(O)pdcutil.o
318 PDCLIB = $(O)pdcurses.lib
320 PDCINCL = /I$(PDCURSES_TOP) /I$(PDCSRC) /I$(PDCWINCON)
326 #==========================================
328 #==========================================
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 \
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
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
357 #==========================================
359 #==========================================
361 DATABASE = $(DAT)\data.base
363 #==========================================
364 #==========================================
365 # Setting up the compiler and linker
366 #==========================================
367 #==========================================
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.
378 #NMAKE version 1421277022 is distributed with latest VS 2019
380 #!MESSAGE $(MAKEFLAGS)
384 MAKEVERSION=$(_NMAKE_VER:.= )
385 MAKEVERSION=$(MAKEVERSION: =)
386 #!MESSAGE $(_NMAKE_VER)
387 #!MESSAGE $(MAKEVERSION)
390 !IF ($(MAKEVERSION) < 1000000000)
391 VSVER=0000 #untested ancient version
392 !ELSEIF ($(MAKEVERSION) > 1000000000) && ($(MAKEVERSION) < 1100000000)
394 !ELSEIF ($(MAKEVERSION) > 1100000000) && ($(MAKEVERSION) < 1200000000)
396 !ELSEIF ($(MAKEVERSION) > 1200000000) && ($(MAKEVERSION) < 1400000000)
398 !ELSEIF ($(MAKEVERSION) > 1400000000) && ($(MAKEVERSION) < 1411000000)
400 !ELSEIF ($(MAKEVERSION) > 1411000000) && ($(MAKEVERSION) < 1416270312)
402 !ELSEIF ($(MAKEVERSION) > 1416270311) && ($(MAKEVERSION) < 1421277023)
404 !ELSEIF ($(MAKEVERSION) > 1421277022)
405 VSVER=2999 #untested future version
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).
422 !IF ($(VSVER) == 2010)
423 # For VS2010 use "setenv /x86" or "setenv /x64" before invoking make process
424 # DO NOT DELETE THE FOLLOWING LINE
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
433 !IFDEF VSCMD_ARG_HOST_ARCH
434 !MESSAGE Host architecture is $(VSCMD_ARG_HOST_ARCH)
435 !MESSAGE Target architecture is $(VSCMD_ARG_TGT_ARCH)
437 ! IF "$(VSCMD_ARG_TGT_ARCH)"=="x64"
445 !IF "$(TARGET_CPU)" == ""
449 !IF ($(VSVER) == 2010)
452 ! IF ($(VSVER) > 2010)
457 #==========================================
458 # More compiler setup post-macros
459 #==========================================
460 #----------------------------------------------------------------
462 !IF "$(ADD_CURSES)" == "Y"
463 CURSESDEF=-D"CURSES_GRAPHICS" -D"CURSES_BRIEF_INCLUDE" -DCHTYPE_32
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
478 lcommon= /NOLOGO /INCREMENTAL:NO
480 !IF "$(DEBUGINFO)" == "Y"
482 cflags1=$(ccommon) $(cdebug)
483 lflags1=$(lcommon) $(ldebug)
486 cflags1=$(ccommon) $(crelease)
487 lflags1=$(lcommon) $(ldebug)
492 !IF "$(TARGET_CPU)" == "x86"
493 cflags = $(cflags1) -D_X86_=1 -DWIN32 -D_WIN32 -W3
496 !ELSEIF "$(TARGET_CPU)" == "x64"
497 cflags = $(cflags1) -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4
501 !IF ($(VSVER) >= 2012)
502 cflags = $(cflags:-W4=-W3)
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)
511 # declarations for use on Intel x86 systems
512 !IF "$(TARGET_CPU)" == "x86"
518 # declarations for use on AMD64 systems
519 !IF "$(TARGET_CPU)" == "x64"
525 # for Windows applications
526 conlflags = $(lflags) -subsystem:console,$(EXEVER)
527 guilflags = $(lflags) -subsystem:windows,$(EXEVER)
528 dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll
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
535 # for Windows applications that use the C Run-Time libraries
536 conlibs = $(baselibs)
541 INCLDIR= /I..\include /I..\sys\winnt
543 INCLDIR= /I..\include /I..\sys\winnt
546 #==========================================
548 #==========================================
550 cflagsBuild = $(cflags) $(INCLDIR) $(WINPFLAG) $(DLBFLG) -DSAFEPROCS
551 lflagsBuild = $(lflags) $(conlibs) $(MACHINE)
553 #==========================================
555 #==========================================
557 LIBS= user32.lib winmm.lib $(ZLIB) $(CURSESLIB)
559 ! IF ("$(USE_DLB)"=="Y")
565 #==========================================
566 #================ RULES ==================
567 #==========================================
569 .SUFFIXES: .exe .o .til .uu .c .y .l
571 #==========================================
572 # Rules for files in src
573 #==========================================
576 @$(cc) $(cflagsBuild) -Fo$@ $<
578 {$(SRC)}.c{$(OBJ)}.o:
579 @$(cc) $(cflagsBuild) -Fo$@ $<
581 #==========================================
582 # Rules for files in sys\share
583 #==========================================
585 {$(SSYS)}.c{$(OBJ)}.o:
586 @$(cc) $(cflagsBuild) -Fo$@ $<
588 {$(SSYS)}.cpp{$(OBJ)}.o:
589 @$(cc) $(cflagsBuild) /EHsc -Fo$@ $<
591 #==========================================
592 # Rules for files in sys\winnt
593 #==========================================
595 {$(MSWSYS)}.c{$(OBJ)}.o:
596 @$(cc) $(cflagsBuild) -Fo$@ $<
598 {$(MSWSYS)}.h{$(INCL)}.h:
601 #==========================================
602 # Rules for files in util
603 #==========================================
605 {$(UTIL)}.c{$(OBJ)}.o:
606 @$(cc) $(cflagsBuild) -Fo$@ $<
608 #==========================================
609 # Rules for files in win\share
610 #==========================================
612 {$(WSHR)}.c{$(OBJ)}.o:
613 @$(cc) $(cflagsBuild) -Fo$@ $<
615 {$(WSHR)}.h{$(INCL)}.h:
618 #{$(WSHR)}.txt{$(DAT)}.txt:
621 #==========================================
622 # Rules for files in win\tty
623 #==========================================
625 {$(TTY)}.c{$(OBJ)}.o:
626 $(cc) $(cflagsBuild) -Fo$@ $<
628 #==========================================
629 # Rules for files in japanese
630 #==========================================
633 $(cc) $(cflagsBuild) -Fo$@ $<
635 #==========================================
636 # Rules for files in win\win32
637 #==========================================
639 {$(MSWIN)}.c{$(OBJ)}.o:
640 @$(cc) $(cflagsBuild) -Fo$@ $<
642 #==========================================
643 # Rules for files in win\curses
644 #==========================================
646 {$(WCURSES)}.c{$(OBJ)}.o:
647 @$(cc) -DPDC_NCMOUSE $(PDCINCL) $(cflagsBuild) -Fo$@ $<
649 #{$(WCURSES)}.txt{$(DAT)}.txt:
652 #==========================================
653 # Rules for files in PDCurses
654 #==========================================
656 {$(PDCURSES_TOP)}.c{$(OBJ)}.o:
657 @$(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $<
659 {$(PDCSRC)}.c{$(OBJ)}.o:
660 @$(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $<
662 {$(PDCWINCON)}.c{$(OBJ)}.o:
663 @$(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $<
665 #==========================================
666 #=============== TARGETS ==================
667 #==========================================
670 # The default make target (so just typing 'nmake' is useful).
684 install: $(O)envchk.tag $(O)obj.tag $(O)utility.tag $(GAMEDIR)\JNetHack.exe $(GAMEDIR)\JNetHackW.exe $(O)install.tag
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)
694 copy $(DAT)\*. $(GAMEDIR)
695 copy $(DAT)\*.dat $(GAMEDIR)
696 copy $(DAT)\*.lev $(GAMEDIR)
697 if exist $(GAMEDIR)\makefile del $(GAMEDIR)\makefile
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 > $@
709 # copy $(MSWSYS)\winnt.hlp $(GAMEDIR)
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
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
724 $(U)levcomp bigroom.des
725 $(U)levcomp castle.des
726 $(U)levcomp endgame.des
727 $(U)levcomp gehennom.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
737 $(U)levcomp caveman.des
738 $(U)levcomp healer.des
739 $(U)levcomp knight.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
749 echo sp_levs done > $(O)sp_lev.tag
751 $(O)utility.tag: $(INCL)\date.h $(INCL)\onames.h $(INCL)\pm.h \
753 $(U)levcomp.exe $(INCL)\vis_tab.h \
754 $(U)dgncomp.exe $(TILEUTIL16)
755 @echo utilities made >$@
756 @echo utilities made.
758 tileutil: $(U)gif2txt.exe $(U)gif2tx32.exe $(U)txt2ppm.exe
759 @echo Optional tile development utilities are up to date.
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 \
765 @$(rc) -r -fo$@ -i$(MSWIN) -dNDEBUG $(MSWIN)\NetHackW.rc
767 $(O)console.res: $(MSWSYS)\console.rc $(MSWSYS)\NetHack.ico
768 @$(rc) -r -fo$@ -i$(MSWSYS) -dNDEBUG $(MSWSYS)\console.rc
771 #==========================================
773 #==========================================
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.
781 # It takes advantage of the following features of nmake:
784 # Specifying the "<<" means to start an inline file.
785 # Another "<<" at the start of a line closes the
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
797 GAMEOBJ=$(ALLOBJ:^ =^
799 GAMEOBJ=$(GAMEOBJ:^ =^
803 # DO NOT INDENT THE << below!
807 # full gui linkage libs:
808 # libs: $(LIBS) $(conlibs) $(guilibs) $(COMCTRL)
809 # objs: $(GAMEOBJ) $(TTYOBJ) $(O)nttty.o $(O)tile.o $(GUIOBJ)
811 # libs: $(LIBS) $(conlibs)
812 # objs: $(GAMEOBJ) $(TTYOBJ) $(O)tile.o $(O)guistub.o
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
828 @if exist $(O)install.tag del $(O)install.tag
831 # full tty linkage libs:
832 # libs: $(LIBS) $(guilibs) $(COMCTRL)
833 # objs: $(GAMEOBJ) $(GUIOBJ) $(TTYOBJ) $(O)tile.o $(O)nttty.o
835 # libs: $(LIBS) $(guilibs) $(COMCTRL)
836 # objs: $(GAMEOBJ) $(GUIOBJ) $(O)tile.o $(O)ttystub.o
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
852 @if not exist $(GAMEDIR)\*.* echo creating directory $(GAMEDIR:\=/)
853 @if not exist $(GAMEDIR)\*.* mkdir $(GAMEDIR)
854 @echo directory created > $@
857 @echo LIBRARY $(@B) >$@
858 ! IF "$(TARGET_CPU)"=="x64" || "$(PROCESSOR_ARCHITECTURE)"=="x64"
861 @echo ProcessKeystroke >>$@
863 @echo CheckInput >>$@
864 @echo SourceWhere >>$@
865 @echo SourceAuthor >>$@
866 @echo KeyHandlerName >>$@
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
876 @echo LIBRARY $(@B) >$@
877 ! IF "$(TARGET_CPU)"=="x64" || "$(PROCESSOR_ARCHITECTURE)"=="x64"
880 @echo ProcessKeystroke >>$@
882 @echo CheckInput >>$@
883 @echo SourceWhere >>$@
884 @echo SourceAuthor >>$@
885 @echo KeyHandlerName >>$@
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
895 @echo LIBRARY $(@B) >$@
896 ! IF "$(TARGET_CPU)"=="x64" || "$(PROCESSOR_ARCHITECTURE)"=="x64"
899 @echo ProcessKeystroke >>$@
901 @echo CheckInput >>$@
902 @echo SourceWhere >>$@
903 @echo SourceAuthor >>$@
904 @echo KeyHandlerName >>$@
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
917 #==========================================
919 #==========================================
920 $(U)nhsizes.exe: $(O)nhsizes.o
921 @echo Linking $(@:\=/)
922 $(link) $(lflagsBuild) -out:$@ $(O)nhsizes.o $(O)panic.o $(O)alloc.o
924 $(O)nhsizes.o: $(CONFIG_H) nhsizes.c
925 @$(cc) $(cflagsBuild) -Fo$@ nhsizes.c
927 $(U)makedefs.exe: $(MAKEOBJS)
928 @echo Linking $(@:\=/)
929 @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(MAKEOBJS)
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 \
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
939 # date.h should be remade every time any of the source or include
943 $(INCL)\date.h $(OPTIONS_FILE) : $(U)makedefs.exe
946 $(INCL)\onames.h : $(U)makedefs.exe
949 $(INCL)\pm.h : $(U)makedefs.exe
952 $(INCL)\vis_tab.h: $(U)makedefs.exe
955 $(SRC)\vis_tab.c: $(U)makedefs.exe
958 #==========================================
959 # uudecode utility and uuencoded targets
960 #==========================================
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
966 $(O)uudecode.o: $(SSYS)\uudecode.c
967 @$(cc) $(cflagsBuild) /D_CRT_SECURE_NO_DEPRECATE -Fo$@ $(SSYS)\uudecode.c
969 $(MSWSYS)\NetHack.ico : $(U)uudecode.exe $(MSWSYS)\nhico.uu
971 ..\..\util\uudecode.exe nhico.uu
974 $(MSWIN)\NetHack.ico : $(U)uudecode.exe $(MSWSYS)\nhico.uu
976 ..\..\util\uudecode.exe ../../sys/winnt/nhico.uu
979 $(MSWIN)\mnsel.bmp: $(U)uudecode.exe $(MSWIN)\mnsel.uu
981 ..\..\util\uudecode.exe mnsel.uu
984 $(MSWIN)\mnselcnt.bmp: $(U)uudecode.exe $(MSWIN)\mnselcnt.uu
986 ..\..\util\uudecode.exe mnselcnt.uu
989 $(MSWIN)\mnunsel.bmp: $(U)uudecode.exe $(MSWIN)\mnunsel.uu
991 ..\..\util\uudecode.exe mnunsel.uu
994 $(MSWIN)\petmark.bmp: $(U)uudecode.exe $(MSWIN)\petmark.uu
996 ..\..\util\uudecode.exe petmark.uu
999 $(MSWIN)\pilemark.bmp: $(U)uudecode.exe $(MSWIN)\pilemark.uu
1001 ..\..\util\uudecode.exe pilemark.uu
1004 $(MSWIN)\rip.bmp: $(U)uudecode.exe $(MSWIN)\rip.uu
1006 ..\..\util\uudecode.exe rip.uu
1009 $(MSWIN)\splash.bmp: $(U)uudecode.exe $(MSWIN)\splash.uu
1011 ..\..\util\uudecode.exe splash.uu
1014 #=================================================
1015 # Level Compiler Stuff
1016 #=================================================
1018 # defer to the steps in ..\win\win32\levstuff.mak
1021 $(U)lev_yacc.c: $(U)lev_comp.y
1022 nmake -nologo -f ..\win\win32\levstuff.mak $(U)lev_yacc.c
1024 $(U)lev_lex.c: $(U)lev_comp.l
1025 nmake -nologo -f ..\win\win32\levstuff.mak $(U)lev_lex.c
1028 nmake -nologo -f ..\win\win32\levstuff.mak $(INCL)\lev_comp.h
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
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
1036 $(O)lev_main.o: $(U)lev_main.c $(HACK_H) $(SP_LEV_H)
1037 @$(cc) $(cflagsBuild) -Fo$@ $(U)lev_main.c
1039 $(U)levcomp.exe: $(LEVCOMPOBJS)
1040 @echo Linking $(@:\=/)
1041 @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1046 #=================================================
1047 # Dungeon Compiler Stuff
1048 #=================================================
1050 # defer to the steps in ..\win\win32\dgnstuff.mak
1052 $(U)dgn_yacc.c: $(U)dgn_comp.y
1053 nmake -nologo -f ..\win\win32\dgnstuff.mak $(U)dgn_yacc.c
1056 nmake -nologo -f ..\win\win32\dgnstuff.mak $(INCL)\dgn_comp.h
1058 $(U)dgn_lex.c: $(U)dgn_comp.l
1059 nmake -nologo -f ..\win\win32\dgnstuff.mak $(U)dgn_lex.c
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
1064 $(O)dgn_lex.o: $(HACK_H) $(DGN_FILE_H) $(INCL)\dgn_comp.h \
1066 @$(cc) $(cflagsBuild) -Fo$@ $(U)dgn_lex.c
1068 $(O)dgn_main.o: $(HACK_H) $(U)dgn_main.c
1069 @$(cc) $(cflagsBuild) -Fo$@ $(U)dgn_main.c
1071 $(U)dgncomp.exe: $(DGNCOMPOBJS)
1072 @echo Linking $(@:\=/)
1073 @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1078 #=================================================
1079 # Create directory for holding object files
1080 #=================================================
1083 @if not exist $(OBJ)\*.* echo creating directory $(OBJ:\=/)
1084 @if not exist $(OBJ)\*.* mkdir $(OBJ)
1085 @echo directory created >$@
1087 #==========================================
1088 # Notify of any CL environment variables
1089 # in effect since they change the compiler
1091 #==========================================
1093 $(O)envchk.tag: $(O)obj.tag
1094 ! IF "$(TARGET_CPU)"=="x64"
1095 @echo Windows x64 64-bit target build
1097 @echo Windows x86 32-bit target build
1100 @echo tty window support included
1101 ! IF "$(ADD_CURSES)"=="Y"
1102 @echo curses window support also included
1106 # @echo Warning, the CL Environment variable is defined:
1111 #==========================================
1112 #=========== SECONDARY TARGETS ============
1113 #==========================================
1115 #==========================================
1116 # DLB utility and nhdatNNN file creation
1117 #==========================================
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
1128 $(O)dlb.o: $(O)dlb_main.o $(O)alloc.o $(O)panic.o $(INCL)\dlb.h
1129 @$(cc) $(cflagsBuild) /Fo$@ $(SRC)\dlb.c
1131 $(O)dlb_main.o: $(UTIL)\dlb_main.c $(INCL)\config.h $(INCL)\dlb.h
1132 @$(cc) $(cflagsBuild) /Fo$@ $(UTIL)\dlb_main.c
1134 $(DAT)\porthelp: $(MSWSYS)\porthelp
1135 @copy $(MSWSYS)\porthelp $@ >nul
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
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
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
1167 #==========================================
1169 #==========================================
1171 $(U)recover.exe: $(RECOVOBJS)
1172 @echo Linking $(@:\=/)
1173 $(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(RECOVOBJS)
1175 $(O)recover.o: $(CONFIG_H) $(U)recover.c $(MSWSYS)\win32api.h
1176 @$(cc) $(cflagsBuild) -Fo$@ $(U)recover.c
1178 #==========================================
1180 #==========================================
1182 $(SRC)\tile.c: $(U)tilemap.exe
1183 @echo A new $(@:\=/) has been created
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
1190 $(O)tilemap.o: $(WSHR)\tilemap.c $(HACK_H)
1191 @$(cc) $(cflagsBuild) -Fo$@ $(WSHR)\tilemap.c
1193 $(O)tiletx32.o: $(WSHR)\tilemap.c $(HACK_H)
1194 @$(cc) $(cflagsBuild) /DTILETEXT /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tilemap.c
1196 $(O)tiletxt.o: $(WSHR)\tilemap.c $(HACK_H)
1197 @$(cc) $(cflagsBuild) /DTILETEXT -Fo$@ $(WSHR)\tilemap.c
1199 $(O)gifread.o: $(WSHR)\gifread.c $(CONFIG_H) $(TILE_H)
1200 @$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@ $(WSHR)\gifread.c
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
1205 $(O)ppmwrite.o: $(WSHR)\ppmwrite.c $(CONFIG_H) $(TILE_H)
1206 @$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@ $(WSHR)\ppmwrite.c
1208 $(O)tiletext.o: $(WSHR)\tiletext.c $(CONFIG_H) $(TILE_H)
1209 @$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@ $(WSHR)\tiletext.c
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
1214 #==========================================
1215 # Optional Tile Utilities
1216 #==========================================
1218 $(U)gif2txt.exe: $(GIFREADERS) $(TEXT_IO)
1219 @echo Linking $(@:\=/)
1220 @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1227 $(U)gif2tx32.exe: $(GIFREADERS32) $(TEXT_IO32)
1228 @echo Linking $(@:\=/)
1229 @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
1236 $(U)txt2ppm.exe: $(PPMWRITERS) $(TEXT_IO)
1237 @echo Linking $(@:\=/)
1238 @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
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)
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
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
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
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
1275 #===============================================================================
1277 #===============================================================================
1279 $(O)pdcurses.lib : $(PDCLIBOBJS) $(PDCOBJS)
1280 lib -nologo /out:$@ $(PDCLIBOBJS) $(PDCOBJS)
1282 $(O)pdcscrn.o : $(PDCURSES_HEADERS) $(PDCWINCON)\pdcscrn.c $(MSWSYS)\stub-pdcscrn.c
1283 $(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $(MSWSYS)\stub-pdcscrn.c
1285 #===============================================================================
1287 #===============================================================================
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)
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
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
1413 rem defer to the steps in ..\win\win32\levstuff.mak
1415 nmake -nologo -f ..\win\win32\levstuff.mak clean
1417 rem defer to the steps in ..\win\win32\dgnstuff.mak
1419 nmake -nologo -f ..\win\win32\dgnstuff.mak clean
1420 if exist $(TILEBMP16) del $(TILEBMP16)
1421 if exist $(TILEBMP32) del $(TILEBMP32)
1423 #===================================================================
1424 # OTHER DEPENDENCIES
1425 #===================================================================
1431 $(DAT)\data: $(O)utility.tag $(DATABASE)
1434 $(DAT)\rumors: $(O)utility.tag $(DAT)\rumors.tru $(DAT)\rumors.fal
1437 $(DAT)\quest.dat: $(O)utility.tag $(DAT)\quest.txt
1440 $(DAT)\oracles: $(O)utility.tag $(DAT)\oracles.txt
1443 $(DAT)\engrave: $(DAT)\engrave.txt $(U)makedefs.exe
1446 $(DAT)\epitaph: $(DAT)\epitaph.txt $(U)makedefs.exe
1449 $(DAT)\bogusmon: $(DAT)\bogusmon.txt $(U)makedefs.exe
1452 $(DAT)\dungeon: $(O)utility.tag $(DAT)\dungeon.def
1455 $(U)dgncomp dungeon.pdf
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
1470 #if you aren't linking in the full gui then
1471 #include the following stub for proper linkage.
1473 $(O)guistub.o: $(HACK_H) $(MSWSYS)\stubs.c
1474 @$(cc) $(cflagsBuild) -DGUISTUB -Fo$@ $(MSWSYS)\stubs.c
1477 # WIN32 dependencies
1480 $(O)NetHackW.o: $(HACK_H) $(MSWIN)\NetHackW.c
1481 @$(cc) $(cflagsBuild) -I$(MSWSYS) -I$(MSWIN) -Fo$@ $(MSWIN)\NetHackW.c
1483 #if you aren't linking in the full tty then
1484 #include the following stub for proper linkage.
1486 $(O)ttystub.o: $(HACK_H) $(MSWSYS)\stubs.c
1487 @$(cc) $(cflagsBuild) -DTTYSTUB -Fo$@ $(MSWSYS)\stubs.c
1493 $(O)panic.o: $(U)panic.c $(CONFIG_H)
1494 @$(cc) $(cflagsBuild) -Fo$@ $(U)panic.c
1497 # sys/share dependencies
1500 (O)cppregex.o: $(O)cppregex.cpp $(HACK_H)
1501 @$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\cppregex.cpp
1504 # curses window port dependencies
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
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.
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 \
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 \
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) \
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 \
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)
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