OSDN Git Service

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