diff --git a/sys/os2/Makefile.os2 b/sys/os2/Makefile.os2 new file mode 100644 index 000000000..6e6c845f9 --- /dev/null +++ b/sys/os2/Makefile.os2 @@ -0,0 +1,1535 @@ +# SCCS Id: @(#)Makefile.os2 3.3 96/10/29 +# OS/2 NetHack 3.3 Makefile for OS/2 versions 1.x and 2.x +# Copyright (C) 1990, 1991, 1992, 1993, 1996 Timo Hakulinen +# +# The supported compilers list is mainly from the NetHack 3.1 era. +# There should be newer versions of all these compilers nowadays. +# +# Supported compilers: Microsoft C 5.1 and 6.0A, GCC emx 0.8f, +# GCC emx 0.9c, IBM C Set/2 1.00 with Toolkit/2 2.00, IBM CSet++ 2.01. +# +# NDMAKE ver 4.5, Microsoft/IBM NMAKE, or Dennis Vadura's DMAKE is +# required; old MS-MAKE will not work. To enable the appropriate +# make utility, uncomment the respective make-specific macros. If +# you plan to cross-compile in DOS, your best bet is NDMAKE, since +# it requires less memory than NMAKE. To compile in OS/2 use NMAKE, +# DMAKE or something compatible. Remember to set $(RLIBS) to real mode +# libraries if cross-compiling in DOS, and to protected mode libraries +# for compilation in OS/2. +# +# GNU MAKE for OS/2 seems to be too limited / braindamaged at the +# moment for me to bother implementing support for it. Maybe later. +# +# Copy this file into $(SRC) directory, rename it to "makefile" +# (important, many targets rely on it), compile and link inside +# $(SRC). If required, termcap library can be built from termcap +# sources using makefile.lib in "sys\share" directory. +# +# "MSC" in this makefile refers to Microsoft C 5.1 and 6.0A. +# Whenever the distinction is significant, it is indicated. +# +# "GCC" refers to GCC emx only. No other ports of GCC are supported. +# Additional credits for honing GCC support for 3.2 go to Ronald +# Van Iwaarden (rrt0136@ibm.net) and Stefan Neis (neis@cs.uni-sb.de). +# +# "CSet/2" refers to both older CSet/2 ver 1 (IBM 32 bit C compiler for +# OS/2 2.0) and newer CSet++ ver 2 (C/C++ compiler). Original CSet/2 +# support courtesy Jeff Urlwin (jurlwin@gandalf.umcs.maine.edu). +# CSet++ support courtesy Helge Hafting (hhafting@intermec.no) and +# Justin Frank (belford-manor@worldnet.att.net). +# +# "OMF" is short for "Object Module Format" and refers to the +# standard OS/2 object format, which e.g. link386 uses. MSC and +# CSet/2 always produce OMF object files, and GCC can be instructed +# to produce them with proper switches (see below). +# +# "a.out" refers to Unix object file format, which is used by GCC +# in its default compilation mode. These object files must be +# linked using GCC's own linker to produce a proper OS/2 executable. +# GDB debugger shipped with GCC can only be used with a.out object +# format. +# +# Note that the default setup in this makefile is my personal setup, +# which you will have to adapt to your configuration. +# + +# +# Compiler and linker selection. +# + +#CC = cl # MSC +CC = gcc # GCC +#CC = icc # CSet/2 + +#LINK = link # MSC +LINK = link386 # GCC OMF, CSet/2 + +# +# Make syntax peculiarities. +# +# Enable the uppermost eight lines for NDMAKE, the middle eight +# for NMAKE (MSC, CSet/2), and the lowermost eight for DMAKE. +# + +#MAKEB = ndmake # Executable name (change if necessary) +#CMD = # Command processor name if required +#AB = $*.c # Base name of the target in target action +#CB = $*.c # - " - dependent +#B = ( # Command line begin in shell one-liners +#E = ) # - " - end - " - +#S = ; # Command separator - " - +#P = % # Literal percent sign +#MAKEB = nmake +#CMD = +#AB = $(@B).c +#CB = $$(@B).c +#B = ( +#E = ) +#S = & +#P = %% +MAKEB = dmake +CMD = cmd /C +AB = $(@:B).c +CB = $$(@:B).c +B = $(CMD) " +E = " +S = & +P = % + +# +# Most makes execute actions automatically inside a subshell, +# which makes even the shell internals work ok. This applies +# to NDMAKE and NMAKE. DMAKE wants it spelled out for it. +# + +ECHO = $(CMD) @echo +RM = $(CMD) del +CP = $(CMD) copy +CAT = $(CMD) type + +# +# For those of us who have these on PC. +# + +#YACC = yacc +#LEX = lex +YACC = bison -y +LEX = flex + +# +# For extracting NetHack icon. +# + +UUDECODE = uudecode + +# +# For people with TeX and LaTeX. +# + +LATEX = latex + +# +# If you have TOUCH, some things become slightly easier. +# + +TOUCH = touch + +# +# Standard file naming for LEX and YACC output may vary in PC +# installations. These three are probably the most generally used +# names. +# + +YTABC = y_tab.c +YTABH = y_tab.h +LEXYYC = lexyy.c + +# +# Source tree base directory. +# + +NHSRC = \nethack\3.3.1\uunet + +# +# Source directories. Makedefs hardcodes these, don't change them. +# + +INCL = $(NHSRC)\include # NetHack include files +DAT = $(NHSRC)\dat # NetHack data files +DOC = $(NHSRC)\doc # NetHack documentation files +UTIL = $(NHSRC)\util # Utility source +SRC = $(NHSRC)\src # Main source +WIN = $(NHSRC)\win\tty # Window system specific source +SYS = $(NHSRC)\sys\os2 # System specific source +SSYS = $(NHSRC)\sys\share # Shared system files + +# +# Modifiable directories. Set these according to your setup and +# preferences. They must all be present prior to compilation. +# OBJ, TEMP and GAMEDIR should all preferably be separate and, +# in particular, not the same as any of the source directories. +# Note that DMAKE may dislike drive designators in paths because +# it misinterprets the colon as being part of a make rule. In that +# case, all directories have to reside on the same drive. +# + +OBJ = \tmp\obj # Object files +TEMP = \tmp\bin # Temporary files during make process +GAMEDIR = \games\nh331 # Game directory +PLIBP = c:\emx\lib # Protected mode C libraries +RLIBP = c:\emx\lib # Possible real mode C libraries + +TLIBP = \toolkt20\os2lib # CSet/2 Toolkit libpath (OS2386.LIB) + +# +# The game name and description. +# + +GAME = nethack +GAMEDES = "NetHack 3.3.1" + +# +# Only if you're using CSet/2. Define the upper line for ver. 1, +# the lower one for ver. 2 (= CSet++). +# + +#CSETVER = /DOS2_CSET2_VER_1 +CSETVER = /DOS2_CSET2_VER_2 + +# +# The uppermost two lines for MSC, the middle two for GCC, and +# the lowermost two for CSet/2. +# +# MSC: compile only, compiler id, large memory model, optimization level, +# remove stack probes, 80286 instruction set, dedicated datasegment for +# items >= 10 bytes, pack structures on 1 byte boundaries, generate code +# for 8087 coprocessor, compiler warning level, include file path, invoke +# large model compiler, debug flags, ANSI conformance. +# +# GCC: compile only, compiler id, object format selection, warnings, +# include file path, debug flags, ANSI conformance. +# +# CSet/2: compile only, compiler id, migration lib, remove stack probes, +# large 32 bit memory model, fast integer code, optimize (to avoid a +# compiler bug - sometimes it *does* work that way around), don't print +# IBM logo, force optlink linkage on function calls, warning level, +# include file path, debug flags, ANSI conformance. +# + +#CFLAGS = /c /DOS2_MSC /AL /O /Gs /G2 /Gt10 /Zp1 /FPi $(WARN) /I$(INCL) $(BIGC) $(CDFLAGS) $(STDC) +#O = /Fo +CFLAGS = -c -DOS2_GCC $(GCCO) $(WARN) -I$(INCL) $(CDFLAGS) $(STDC) +O = -s -O -o +#CFLAGS = /c /DOS2_CSET2 $(CSETVER) /Sm /Gs+ /Gt- /Gi+ /O+ /Q+ /Mp $(WARN) /I$(INCL) $(CDFLAGS) $(STDC) +#O = /Fo + +# +# Compiler warning levels. These are really for development, so +# they are commented out in general distribution to save the user +# from masses of benign warnings. If any problems arise, however, +# they may help in finding the trouble. +# +# MSC: warning level 3 is highest in 5.1, second highest in 6.0. +# Cries a lot, but for no real cause. Warning level 0 for distribution. +# +# GCC: max. reasonable GCC warning levels. Can't use -Wall, because then +# it would whine about all the zillions of unused declarations etc. +# Even with these switches you'll get a lot of warnings, but they should +# all be benign. +# +# CSet/2: warning level 3. The second optional parameter gives +# lots of extra warnings. +# + +#WARN = /W0 #/W3 # MSC +WARN = #-W -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -DGCC_WARN # GCC +#WARN = #/W3 #/Kbper # CSet/2 + +# +# GCC object format selection. The upper line for standard OS/2 OMF +# object format, the lower for Unix style a.out format. +# + +GCCO = -Zomf -Zsys # GCC OMF +#GCCO = # GCC a.out + +# +# MSC 5.1 needs the large model first pass of the compiler. +# Not needed for later versions. +# + +BIGC = +#BIGC = /B1 d:\binb\c1l.exe # MSC 5.1 + +# +# Unset CL to avoid troubles with conflicting switches in MSC 6.0. +# + +CL = + +# +# MSC, CSet/2: don't ignore case in symbols, no default lib search, +# stack 8KB, allow max 1024 segments in program. +# +# GCC: likes a big stack. +# +# CSet/2: give it a bit more stack since we can. +# + +#LFLAGS = /noig /nod /stack:8192 /seg:1024 $(LDFLAGS) # MSC +LFLAGS = /noig /stack:40000 # GCC OMF +#LFLAGS = /noig /nod /stack:32768 /seg:1024 $(LDFLAGS) # CSet/2 + +# +# Prepare for a debugger. +# + +CDFLAGS = +LDFLAGS = +#CDFLAGS = /Zi # CodeView (MSC) +#LDFLAGS = /CO # - " - +#CDFLAGS = -g # GDB (GCC a.out) +#LDFLAGS = -g # - " - +#CDFLAGS = /Ti+ # IPMD (CSet/2) +#LDFLAGS = /CO # - " - + +# +# How to produce the most ANSI-like environment. +# + +#STDC = # MSC 5.1 +STDC = /D__STDC__ # MSC 6.0, CSet/2 +STDC = -ansi # GCC + +# +# Possible system object files required during linking. +# + +#SYSOBJ = # MSC, GCC a.out, CSet/2 +SYSOBJ = $(PLIBP)\crt0.obj $(PLIBP)\end.lib# GCC OMF + +# +# Compiler library selection. Change if necessary. +# +# MSC: Protected mode C libraries for 8087 emulator, +# OS/2 API entry points. +# +# GCC emx 0.8 OMF: C standard lib, extra GCC lib, static system lib, +# OS/2 API entry points. +# +# GCC emx 0.9 OMF: C single-threaded libs, Unix system call alias lib, +# extra GCC lib, single threaded system lib, OS/2 API entry points. +# Note that emx changed library naming convention between 0.8 and 0.9. +# +# GCC a.out: extra GCC lib, C standard lib, extra GCC lib (again), +# OS/2 API entry points. +# +# CSet/2: C standard libraries, OS/2 API entry points. +# Note that ver 1 needs lib dde4sbm.lib whereas ver 2 doesn't. +# + +#PLIBS = $(PLIBP)\llibcep $(PLIBP)\doscalls # MSC 5.1 +#PLIBS = $(PLIBP)\llibcep $(PLIBP)\os2 # MSC 6.0 +#PLIBS = $(PLIBP)\libc $(PLIBP)\libgcc $(PLIBP)\libsys $(PLIBP)\libos2 # GCC emx 0.8 OMF +PLIBS = $(PLIBP)\st\c $(PLIBP)\st\c_app $(PLIBP)\c_alias $(PLIBP)\gcc $(PLIBP)\st\sys $(PLIBP)\os2 # GCC emx 0.9 OMF +#PLIBS = -lgcc -lc -lgcc -los2 # GCC a.out (defining -lgcc twice is required) +#PLIBS = $(PLIBP)\dde4sbs.lib $(PLIBP)\dde4sbm.lib $(TLIBP)\os2386.lib # CSet/2 ver 1 +#PLIBS = $(PLIBP)\dde4sbs.lib $(TLIBP)\os2386.lib # CSet++ ver 2 + +# +# C libraries used by makedefs, lev_comp and dgn_comp (change if +# necessary). If compilation is done in DOS, enable the upper line +# possibly setting the library name to something else, if in OS/2, +# enable the lower line (protected mode libraries). +# + +#RLIBS = $(RLIBP)\llibcer +RLIBS = $(PLIBS) + +# +# Default compilation skeletons. The uppermost six are for +# MSC and CSet/2 and the lowermost six for GCC. +# + +#SRCCC = $(CC) $(CFLAGS) $(O)$@ $(SRC)\$(AB) +#UTILCC = $(CC) $(CFLAGS) $(O)$@ $(UTIL)\$(AB) +#SYSCC = $(CC) $(CFLAGS) $(O)$@ $(SYS)\$(AB) +#SSYSCC = $(CC) $(CFLAGS) $(O)$@ $(SSYS)\$(AB) +#PSYSCC = $(CC) $(CFLAGS) $(O)$@ $(SSYS)\pc$(AB) +#WINCC = $(CC) $(CFLAGS) $(O)$@ $(WIN)\$(AB) +SRCCC = $(CC) $(CFLAGS) $(O) $@ $(AB) +UTILCC = $(B) cd $(UTIL) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E) +SYSCC = $(B) cd $(SYS) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E) +SSYSCC = $(B) cd $(SSYS) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E) +PSYSCC = $(B) cd $(SSYS) $(S) $(CC) $(CFLAGS) $(O) $@ pc$(AB) $(E) +WINCC = $(B) cd $(WIN) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E) + +# +# Default linker skeletons. The upper six lines for everything +# that uses standard OS/2 object format (MSC, CSet/2, GCC OMF), +# the lower six for GCC a.out format. +# + +GAMELN = $(LINK) @$(TEMP)\$(GAME).rsp +MKDFLN = $(LINK) @$(TEMP)\makedefs.rsp +LEVCLN = $(LINK) @$(TEMP)\lev_comp.rsp +DGNCLN = $(LINK) @$(TEMP)\dgn_comp.rsp +RCVRLN = $(LINK) @$(TEMP)\recover.rsp +DLBRLN = $(LINK) @$(TEMP)\dlb.rsp +#GAMELN = $(CC) $(LDFLAGS) -o $(GAMEDIR)\$(GAME).exe $(TEMP)\$(GAMEDEF) $(SYSOBJ) $(HOBJ) $(PLIBS) $(TERMLIB) +#MKDFLN = $(CC) $(LDFLAGS) -o $(TEMP)\makedefs.exe $(TEMP)\$(MKDFDEF) $(SYSOBJ) $(MAKEOBJS) $(PLIBS) +#LEVCLN = $(CC) $(LDFLAGS) -o $(TEMP)\lev_comp.exe $(TEMP)\$(LEVCDEF) $(SYSOBJ) $(SPLEVOBJS) $(PLIBS) +#DGNCLN = $(CC) $(LDFLAGS) -o $(TEMP)\dgn_comp.exe $(TEMP)\$(DGNCDEF) $(SYSOBJ) $(DGNCOMPOBJS) $(PLIBS) +#RCVRLN = $(CC) $(LDFLAGS) -o $(GAMEDIR)\recover.exe $(TEMP)\$(RCVRDEF) $(SYSOBJ) $(RECOVOBJS) $(PLIBS) +#DLBRLN = $(CC) $(LDFLAGS) -o $(TEMP)\dlb.exe $(TEMP)\$(DLBDEF) $(SYSOBJ) $(DLBOBJS) $(PLIBS) + +# +# OS/2 module definition files for NetHack, +# makedefs, dgn_comp, lev_comp, recover, dlb. +# + +GAMEDEF = $(GAME).def +MKDFDEF = makedefs.def +LEVCDEF = lev_comp.def +DGNCDEF = dgn_comp.def +RCVRDEF = recover.def +DLBDEF = dlb.def + +# +# For compilation in DOS, enable the lower three lines and +# disable the upper three. +# + +MKDFMD = $(TEMP)\$(MKDFDEF) +LEVCMD = $(TEMP)\$(LEVCDEF) +DGNCMD = $(TEMP)\$(DGNCDEF) +#MKDFMD = +#LEVCMD = +#DGNCMD = + +# +# Optional high-quality BSD random number generation routines +# (see os2conf.h). Set to nothing if not used. +# + +RANDOM = $(OBJ)\random.o +#RANDOM = + +# +# If TERMLIB is defined in os2conf.h, comment out the upper line and +# uncomment the lower. If the termcap-library doesn't exist, use +# sys\share\makefile.lib to build it. +# + +TERMLIB = +#TERMLIB = termlib.lib + +# +# Short / long file name selection for FAT and HPFS. +# Only three files need consideration. +# + +#GUIDEBOO = Guideboo # FAT +#PATCHLEV = patchlev # - " - +#DATABASE = data.bas # - " - +GUIDEBOO = Guidebook # HPFS +PATCHLEV = patchlevel # - " - +DATABASE = data.base # - " - + + +# +# If you have LaTeX and want to create the NetHack Guidebook in TeX +# device-independent file format, comment out the upper line and +# uncomment the lower. +# + +GUIDE = +#GUIDE = $(TEMP)\$(GUIDEBOO).dvi + +# +# Set WINOBJ lines corresponding to your desired combination +# of windowing systems. Also set windowing systems in config.h. +# +# A straight tty port using no native windowing system is the +# only choice for now. +# + +WINOBJ = $(OBJ)\getline.o $(OBJ)\termcap.o $(OBJ)\topl.o $(OBJ)\wintty.o + +# +# The default make target, so just typing 'make' is useful. +# Has to be the first target in the makefile. +# + +default : all + +# +# If you have yacc and lex programs and make any changes, uncomment +# the lowermost two lines and comment out the others. If you make +# changes to the .y and .l files but prefer processing the files +# separately elsewhere, activate the middle two lines, so your changes +# don't get overwritten. +# + +do_yacc : yacc_cpy # use pre-generated files +do_lex : lex_cpy # - " - +#do_yacc : yacc_msg # show message if changed +#do_lex : lex_msg # - " - +#do_yacc : yacc_act # re-process files +#do_lex : lex_act # - " - + +# +# If you have the TOUCH utility the upper line is ok. Otherwise +# the lower one does the same albeit in an ugly manner. Besides, +# the latter method only works for text files. +# + +#do_touch : realtouch +do_touch : faketouch + +# +# If you don't have uudecode program, use the upper line. +# If you still want the icon, you'll have to extract the +# file manually somewhere else. +# + +do_icon : icon_msg # show message if changed +#do_icon : icon_act # extract icon file + +# +# If you don't want to generate nethack.cmd, use the upper line. +# This could be the case, e.g., if you use a different shell than +# the standard cmd.exe. +# + +#do_cmd : cmd_msg # show message +do_cmd : cmd_act # generate nethack.cmd + +# +# If you want to try the data librarian scheme to reduce +# the amount of data files in the NetHack home directory, comment +# out the lower line and uncomment the upper. Also, make sure +# that DLB is defined in config.h. +# +# NOTE: this feature is presently untested under OS/2. +# + +#do_dlb : dlb_yup +do_dlb : dlb_nope + +###################################################################### +# +# Nothing below this line should have to be changed. +# +# Other things that have to be reconfigured are in +# config.h, os2conf.h and possibly system.h. +# + +# +# The game filename. +# + +GAMEFILE = $(GAMEDIR)\$(GAME).exe + +# +# Object files for makedefs. +# + +MAKEOBJS = $(OBJ)\makedefs.o $(OBJ)\monst.o $(OBJ)\objects.o + +# +# Object files for special levels compiler. +# + +SOBJ01 = $(OBJ)\lev_yacc.o $(OBJ)\lev_lex.o $(OBJ)\lev_main.o $(OBJ)\alloc.o +SOBJ02 = $(OBJ)\monst.o $(OBJ)\objects.o $(OBJ)\panic.o $(OBJ)\decl.o +SOBJ03 = $(OBJ)\drawing.o + +SPLEVOBJS = $(SOBJ01) $(SOBJ02) $(SOBJ03) + +# +# Object files for dungeon compiler. +# + +DOBJ01 = $(OBJ)\dgn_yacc.o $(OBJ)\dgn_lex.o $(OBJ)\dgn_main.o +DOBJ02 = $(OBJ)\panic.o $(OBJ)\alloc.o + +DGNCOMPOBJS = $(DOBJ01) $(DOBJ02) + +# +# Object files for recovery utility. +# + +RECOVOBJS = $(OBJ)\recover.o + +# +# Object files for dlb. +# + +DLBOBJS = $(OBJ)\dlb_main.o $(OBJ)\dlb.o $(OBJ)\alloc.c $(OBJ)\panic.o + +# +# Data files for dlb. +# + +DATHELP = \ + $(GAMEDIR)\help $(GAMEDIR)\hh $(GAMEDIR)\cmdhelp $(GAMEDIR)\history \ + $(GAMEDIR)\opthelp $(GAMEDIR)\wizhelp +SPEC_LEVS = \ + $(GAMEDIR)\asmodeus.lev $(GAMEDIR)\baalz.lev $(GAMEDIR)\bigrm-1.lev \ + $(GAMEDIR)\bigrm-2.lev $(GAMEDIR)\bigrm-3.lev $(GAMEDIR)\bigrm-4.lev \ + $(GAMEDIR)\castle.lev $(GAMEDIR)\fakewiz1.lev $(GAMEDIR)\fakewiz2.lev \ + $(GAMEDIR)\juiblex.lev $(GAMEDIR)\knox.lev $(GAMEDIR)\medusa-1.lev \ + $(GAMEDIR)\medusa-2.lev $(GAMEDIR)\minend-1.lev $(GAMEDIR)\minend-2.lev \ + $(GAMEDIR)\minefill.lev $(GAMEDIR)\minetn-1.lev $(GAMEDIR)\minetn-2.lev \ + $(GAMEDIR)\oracle.lev $(GAMEDIR)\orcus.lev $(GAMEDIR)\sanctum.lev \ + $(GAMEDIR)\tower1.lev $(GAMEDIR)\tower2.lev $(GAMEDIR)\tower3.lev \ + $(GAMEDIR)\valley.lev $(GAMEDIR)\wizard1.lev $(GAMEDIR)\wizard2.lev \ + $(GAMEDIR)\wizard3.lev $(GAMEDIR)\astral.lev $(GAMEDIR)\air.lev \ + $(GAMEDIR)\earth.lev $(GAMEDIR)\fire.lev $(GAMEDIR)\water.lev \ + $(GAMEDIR)\soko1-1.lev $(GAMEDIR)\soko1-2.lev \ + $(GAMEDIR)\soko2-1.lev $(GAMEDIR)\soko2-2.lev \ + $(GAMEDIR)\soko3-1.lev $(GAMEDIR)\soko3-2.lev \ + $(GAMEDIR)\soko4-1.lev $(GAMEDIR)\soko4-2.lev +QUEST_LEVS = \ + $(GAMEDIR)\Arc-goal.lev $(GAMEDIR)\Arc-fila.lev $(GAMEDIR)\Arc-filb.lev \ + $(GAMEDIR)\Arc-loca.lev $(GAMEDIR)\Arc-strt.lev \ + $(GAMEDIR)\Bar-goal.lev $(GAMEDIR)\Bar-fila.lev $(GAMEDIR)\Bar-filb.lev \ + $(GAMEDIR)\Bar-loca.lev $(GAMEDIR)\Bar-strt.lev \ + $(GAMEDIR)\Cav-goal.lev $(GAMEDIR)\Cav-fila.lev $(GAMEDIR)\Cav-filb.lev \ + $(GAMEDIR)\Cav-loca.lev $(GAMEDIR)\Cav-strt.lev \ + $(GAMEDIR)\Hea-goal.lev $(GAMEDIR)\Hea-fila.lev $(GAMEDIR)\Hea-filb.lev \ + $(GAMEDIR)\Hea-loca.lev $(GAMEDIR)\Hea-strt.lev \ + $(GAMEDIR)\Kni-goal.lev $(GAMEDIR)\Kni-fila.lev $(GAMEDIR)\Kni-filb.lev \ + $(GAMEDIR)\Kni-loca.lev $(GAMEDIR)\Kni-strt.lev \ + $(GAMEDIR)\Mon-goal.lev $(GAMEDIR)\Mon-fila.lev $(GAMEDIR)\Mon-filb.lev \ + $(GAMEDIR)\Mon-loca.lev $(GAMEDIR)\Mon-strt.lev \ + $(GAMEDIR)\Pri-goal.lev $(GAMEDIR)\Pri-fila.lev $(GAMEDIR)\Pri-filb.lev \ + $(GAMEDIR)\Pri-loca.lev $(GAMEDIR)\Pri-strt.lev \ + $(GAMEDIR)\Ran-goal.lev $(GAMEDIR)\Ran-fila.lev $(GAMEDIR)\Ran-filb.lev \ + $(GAMEDIR)\Ran-loca.lev $(GAMEDIR)\Ran-strt.lev \ + $(GAMEDIR)\Rog-goal.lev $(GAMEDIR)\Rog-fila.lev $(GAMEDIR)\Rog-filb.lev \ + $(GAMEDIR)\Rog-loca.lev $(GAMEDIR)\Rog-strt.lev \ + $(GAMEDIR)\Sam-goal.lev $(GAMEDIR)\Sam-fila.lev $(GAMEDIR)\Sam-filb.lev \ + $(GAMEDIR)\Sam-loca.lev $(GAMEDIR)\Sam-strt.lev \ + $(GAMEDIR)\Tou-goal.lev $(GAMEDIR)\Tou-fila.lev $(GAMEDIR)\Tou-filb.lev \ + $(GAMEDIR)\Tou-loca.lev $(GAMEDIR)\Tou-strt.lev \ + $(GAMEDIR)\Val-goal.lev $(GAMEDIR)\Val-fila.lev $(GAMEDIR)\Val-filb.lev \ + $(GAMEDIR)\Val-loca.lev $(GAMEDIR)\Val-strt.lev \ + $(GAMEDIR)\Wiz-goal.lev $(GAMEDIR)\Wiz-fila.lev $(GAMEDIR)\Wiz-filb.lev \ + $(GAMEDIR)\Wiz-loca.lev $(GAMEDIR)\Wiz-strt.lev +VARDATD = \ + $(GAMEDIR)\data $(GAMEDIR)\oracles $(GAMEDIR)\options \ + $(GAMEDIR)\quest.dat $(GAMEDIR)\rumors + +DATDLB = $(DATHELP) $(GAMEDIR)\dungeon $(SPEC_LEVS) $(QUEST_LEVS) $(VARDATD) + +# +# Object files for the game itself. +# + +VOBJ01 = $(OBJ)\allmain.o $(OBJ)\alloc.o $(OBJ)\apply.o $(OBJ)\artifact.o +VOBJ02 = $(OBJ)\attrib.o $(OBJ)\ball.o $(OBJ)\bones.o $(OBJ)\botl.o +VOBJ03 = $(OBJ)\cmd.o $(OBJ)\dbridge.o $(OBJ)\decl.o $(OBJ)\detect.o +VOBJ04 = $(OBJ)\dig.o $(OBJ)\display.o $(OBJ)\dlb.o $(OBJ)\do.o +VOBJ05 = $(OBJ)\do_name.o $(OBJ)\do_wear.o $(OBJ)\dog.o $(OBJ)\dogmove.o +VOBJ06 = $(OBJ)\dokick.o $(OBJ)\dothrow.o $(OBJ)\drawing.o $(OBJ)\dungeon.o +VOBJ07 = $(OBJ)\eat.o $(OBJ)\end.o $(OBJ)\engrave.o $(OBJ)\exper.o +VOBJ08 = $(OBJ)\explode.o $(OBJ)\extralev.o $(OBJ)\files.o $(OBJ)\fountain.o +VOBJ09 = $(OBJ)\hack.o $(OBJ)\hacklib.o $(OBJ)\invent.o $(OBJ)\light.o +VOBJ10 = $(OBJ)\lock.o $(OBJ)\mail.o $(OBJ)\main.o $(OBJ)\makemon.o +VOBJ11 = $(OBJ)\mapglyph.o $(OBJ)\mcastu.o $(OBJ)\mhitm.o $(OBJ)\mhitu.o $(OBJ)\minion.o +VOBJ12 = $(OBJ)\mklev.o $(OBJ)\mkmap.o $(OBJ)\mkmaze.o $(OBJ)\mkobj.o +VOBJ13 = $(OBJ)\mkroom.o $(OBJ)\mon.o $(OBJ)\mondata.o $(OBJ)\monmove.o +VOBJ14 = $(OBJ)\monst.o $(OBJ)\monstr.o $(OBJ)\mplayer.o $(OBJ)\mthrowu.o +VOBJ15 = $(OBJ)\muse.o $(OBJ)\music.o $(OBJ)\o_init.o $(OBJ)\objects.o +VOBJ16 = $(OBJ)\objnam.o $(OBJ)\options.o $(OBJ)\os2.o $(OBJ)\pager.o +VOBJ17 = $(OBJ)\pcsys.o $(OBJ)\pickup.o $(OBJ)\pline.o $(OBJ)\polyself.o +VOBJ18 = $(OBJ)\potion.o $(OBJ)\pray.o $(OBJ)\priest.o $(OBJ)\quest.o +VOBJ19 = $(OBJ)\questpgr.o $(OBJ)\read.o $(OBJ)\rect.o $(OBJ)\region.o $(OBJ)\restore.o +VOBJ20 = $(OBJ)\rip.o $(OBJ)\rnd.o $(OBJ)\rumors.o $(OBJ)\save.o +VOBJ21 = $(OBJ)\shk.o $(OBJ)\shknam.o $(OBJ)\sit.o $(OBJ)\sounds.o +VOBJ22 = $(OBJ)\sp_lev.o $(OBJ)\spell.o $(OBJ)\steal.o $(OBJ)\teleport.o +VOBJ23 = $(OBJ)\timeout.o $(OBJ)\topten.o $(OBJ)\track.o $(OBJ)\trap.o +VOBJ24 = $(OBJ)\tty.o $(OBJ)\u_init.o $(OBJ)\uhitm.o $(OBJ)\unix.o +VOBJ25 = $(OBJ)\vault.o $(OBJ)\vision.o $(OBJ)\vis_tab.o $(OBJ)\weapon.o +VOBJ26 = $(OBJ)\were.o $(OBJ)\wield.o $(OBJ)\windows.o $(OBJ)\wizard.o +VOBJ27 = $(OBJ)\worm.o $(OBJ)\worn.o $(OBJ)\write.o $(OBJ)\zap.o +VOBJ28 = $(WINOBJ) $(OBJ)\role.o $(OBJ)\steed.o +VOBJ29 = $(RANDOM) +HHOBJ = $(OBJ)\version.o + +VOBJ = $(VOBJ01) $(VOBJ02) $(VOBJ03) $(VOBJ04) $(VOBJ05) $(VOBJ06) $(VOBJ07) \ + $(VOBJ08) $(VOBJ09) $(VOBJ10) $(VOBJ11) $(VOBJ12) $(VOBJ13) $(VOBJ14) \ + $(VOBJ15) $(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ19) $(VOBJ20) $(VOBJ21) \ + $(VOBJ22) $(VOBJ23) $(VOBJ24) $(VOBJ25) $(VOBJ26) $(VOBJ27) $(VOBJ28) \ + $(VOBJ29) +HOBJ = $(VOBJ) $(HHOBJ) + +EXTERN_H = #$(INCL)\extern.h +OS2CONF_H = $(INCL)\os2conf.h $(INCL)\micro.h $(INCL)\system.h $(EXTERN_H) +GLOBAL_H = $(INCL)\global.h $(INCL)\coord.h $(OS2CONF_H) +CONFIG_H = $(INCL)\config.h $(INCL)\config1.h $(INCL)\tradstdc.h $(GLOBAL_H) +TRAP_H = $(INCL)\trap.h +PERMONST_H = $(INCL)\permonst.h $(INCL)\monattk.h $(INCL)\monflag.h +YOU_H = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \ + $(INCL)\monst.h $(INCL)\youprop.h $(INCL)\prop.h $(INCL)\pm.h +DECL_H = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \ + $(INCL)\onames.h $(INCL)\color.h +HACK_H = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \ + $(INCL)\objclass.h $(TRAP_H) $(INCL)\engrave.h $(INCL)\flag.h \ + $(INCL)\rm.h $(INCL)\dungeon.h $(INCL)\hack.h $(INCL)\display.h \ + $(INCL)\vision.h $(INCL)\wintty.h $(INCL)\wintype.h $(INCL)\align.h \ + $(INCL)\winprocs.h + +# +# The default target. +# + +all : makedefs dgn_comp lev_comp recover $(GAME) dat $(GUIDE) + $(ECHO) Done. + +# +# Definition file creation. +# + +$(TEMP)\$(GAMEDEF) : + $(MAKEB) DD_NAME=$(GAME) DD_DESC=$(GAMEDES) DD_TARG=$@ do_def +$(TEMP)\$(MKDFDEF) : + $(MAKEB) DD_NAME=makedefs DD_DESC="Definitions compiler" DD_TARG=$@ do_def +$(TEMP)\$(DGNCDEF) : + $(MAKEB) DD_NAME=dgn_comp DD_DESC="Dungeon compiler" DD_TARG=$@ do_def +$(TEMP)\$(LEVCDEF) : + $(MAKEB) DD_NAME=lev_comp DD_DESC="Level compiler" DD_TARG=$@ do_def +$(TEMP)\$(RCVRDEF) : + $(MAKEB) DD_NAME=recover DD_DESC="Recovery utility" DD_TARG=$@ do_def +$(TEMP)\$(DLBDEF) : + $(MAKEB) DD_NAME=dld DD_DESC="Archive utility" DD_TARG=$@ do_def + +do_def : + $(ECHO) NAME $(DD_NAME) WINDOWCOMPAT> $(DD_TARG) + $(ECHO) DESCRIPTION '$(DD_DESC)'>> $(DD_TARG) + $(ECHO) PROTMODE>> $(DD_TARG) + $(ECHO) EXETYPE OS2>> $(DD_TARG) + +# +# The main target. +# + +$(GAME) : $(GAMEDIR)\$(GAME).exe +$(GAME).exe : $(GAMEDIR)\$(GAME).exe +$(GAMEDIR)\$(GAME).exe : $(TEMP)\$(GAME).rsp + $(GAMELN) + +$(TEMP)\$(GAME).rsp : $(HOBJ) $(TEMP)\$(GAMEDEF) + $(ECHO) $(SYSOBJ) $(VOBJ01) +> $@ + $(ECHO) $(VOBJ02) +>> $@ + $(ECHO) $(VOBJ03) +>> $@ + $(ECHO) $(VOBJ04) +>> $@ + $(ECHO) $(VOBJ05) +>> $@ + $(ECHO) $(VOBJ06) +>> $@ + $(ECHO) $(VOBJ07) +>> $@ + $(ECHO) $(VOBJ08) +>> $@ + $(ECHO) $(VOBJ09) +>> $@ + $(ECHO) $(VOBJ10) +>> $@ + $(ECHO) $(VOBJ11) +>> $@ + $(ECHO) $(VOBJ12) +>> $@ + $(ECHO) $(VOBJ13) +>> $@ + $(ECHO) $(VOBJ14) +>> $@ + $(ECHO) $(VOBJ15) +>> $@ + $(ECHO) $(VOBJ16) +>> $@ + $(ECHO) $(VOBJ17) +>> $@ + $(ECHO) $(VOBJ18) +>> $@ + $(ECHO) $(VOBJ19) +>> $@ + $(ECHO) $(VOBJ20) +>> $@ + $(ECHO) $(VOBJ21) +>> $@ + $(ECHO) $(VOBJ22) +>> $@ + $(ECHO) $(VOBJ23) +>> $@ + $(ECHO) $(VOBJ24) +>> $@ + $(ECHO) $(VOBJ25) +>> $@ + $(ECHO) $(VOBJ26) +>> $@ + $(ECHO) $(VOBJ27) +>> $@ + $(ECHO) $(VOBJ28) +>> $@ + $(ECHO) $(VOBJ29) +>> $@ + $(ECHO) $(HHOBJ)>> $@ + $(ECHO) $(GAMEDIR)\$(GAME).exe>> $@ + $(ECHO) $(TEMP)\$(GAME)>> $@ + $(ECHO) $(PLIBS) $(TERMLIB)>> $@ + $(ECHO) $(TEMP)\$(GAMEDEF) $(LFLAGS);>> $@ + +# +# Targets for makedefs. +# + +makedefs : $(TEMP)\makedefs.exe +$(TEMP)\makedefs.exe : $(TEMP)\makedefs.rsp + $(MKDFLN) + +$(TEMP)\makedefs.rsp : $(MAKEOBJS) $(TEMP)\$(MKDFDEF) + $(ECHO) $(SYSOBJ) $(MAKEOBJS)> $@ + $(ECHO) $(TEMP)\makedefs.exe>> $@ + $(ECHO) nul>> $@ + $(ECHO) $(RLIBS)>> $@ + $(ECHO) $(MKDFMD) $(LFLAGS);>> $@ + +$(OBJ)\makedefs.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\permonst.h $(INCL)\objclass.h \ + $(INCL)\monsym.h $(INCL)\artilist.h $(INCL)\qtext.h + $(UTILCC) + +# +# Targets for the special levels compiler. +# + +lev_comp : $(TEMP)\lev_comp.exe +$(TEMP)\lev_comp.exe : $(TEMP)\lev_comp.rsp + $(LEVCLN) + +$(TEMP)\lev_comp.rsp : $(SPLEVOBJS) $(TEMP)\$(LEVCDEF) + $(ECHO) $(SYSOBJ) $(SOBJ01) +> $@ + $(ECHO) $(SOBJ02) +>> $@ + $(ECHO) $(SOBJ03)>> $@ + $(ECHO) $(TEMP)\lev_comp.exe>> $@ + $(ECHO) nul>> $@ + $(ECHO) $(RLIBS)>> $@ + $(ECHO) $(LEVCMD) $(LFLAGS);>> $@ + +$(OBJ)\lev_yacc.o : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h + $(UTILCC) +$(OBJ)\lev_lex.o : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\lev_comp.h + $(UTILCC) +$(OBJ)\lev_main.o : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\tcap.h + $(UTILCC) + +$(UTIL)\lev_yacc.c : $(UTIL)\lev_comp.y + $(MAKEB) YY=lev do_yacc + +$(UTIL)\lev_lex.c : $(UTIL)\lev_comp.l + $(MAKEB) YY=lev do_lex + +# +# Targets for the dungeon compiler. +# + +dgn_comp : $(TEMP)\dgn_comp.exe +$(TEMP)\dgn_comp.exe : $(TEMP)\dgn_comp.rsp + $(DGNCLN) + +$(TEMP)\dgn_comp.rsp : $(DGNCOMPOBJS) $(TEMP)\$(DGNCDEF) + $(ECHO) $(SYSOBJ) $(DOBJ01) +> $@ + $(ECHO) $(DOBJ02)>> $@ + $(ECHO) $(TEMP)\dgn_comp.exe>> $@ + $(ECHO) nul>> $@ + $(ECHO) $(RLIBS)>> $@ + $(ECHO) $(DGNCMD) $(LFLAGS);>> $@ + +$(OBJ)\dgn_yacc.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\date.h $(INCL)\dgn_file.h + $(UTILCC) +$(OBJ)\dgn_lex.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\dgn_comp.h $(INCL)\dgn_file.h + $(UTILCC) +$(OBJ)\dgn_main.o : $(UTIL)\$(CB) $(CONFIG_H) + $(UTILCC) + +$(UTIL)\dgn_yacc.c : $(UTIL)\dgn_comp.y + $(MAKEB) YY=dgn do_yacc + +$(UTIL)\dgn_lex.c : $(UTIL)\dgn_comp.l + $(MAKEB) YY=dgn do_lex + +# +# For both lev_comp and dgn_comp. +# + +$(OBJ)\panic.o : $(UTIL)\$(CB) $(CONFIG_H) + $(UTILCC) + +# +# Yacc and Lex targets. +# + +yacc_cpy : + $(CP) $(SSYS)\$(YY)_yacc.c $(UTIL) + $(CP) $(SSYS)\$(YY)_comp.h $(INCL) + $(MAKEB) TT=$(UTIL)\$(YY)_yacc.c do_touch + $(MAKEB) TT=$(INCL)\$(YY)_comp.h do_touch + +yacc_msg : + $(ECHO) $(YY)_comp.y has changed. To update $(YY)_yacc.c and $(YY)_comp.h run $(YACC). + +yacc_act : + $(YACC) -d $(UTIL)\$(YY)_comp.y + $(CP) $(YTABC) $(UTIL)\$(YY)_yacc.c + $(CP) $(YTABH) $(INCL)\$(YY)_comp.h + $(RM) $(YTABC) + $(RM) $(YTABH) + +lex_cpy : + $(CP) $(SSYS)\$(YY)_lex.c $(UTIL) + $(MAKEB) TT=$(UTIL)\$(YY)_lex.c do_touch + +lex_msg : + $(ECHO) $(YY)_comp.l has changed. To update $(YY)_lex.c run $(LEX). + +lex_act : + $(LEX) $(UTIL)\$(YY)_comp.l + $(CP) $(LEXYYC) $(UTIL)\$(YY)_lex.c + $(RM) $(LEXYYC) + +# +# Why must this be so kludgy? +# + +realtouch : + $(TOUCH) $(TT) + +faketouch : + $(B) $(CAT) $(TT) > $(TEMP)\foo.bar $(S) $(CP) $(TEMP)\foo.bar $(TT) $(S) $(RM) $(TEMP)\foo.bar $(E) + +# +# Targets for the recovery utility. +# + +recover : $(GAMEDIR)\recover.exe +$(GAMEDIR)\recover.exe : $(TEMP)\recover.rsp + $(RCVRLN) + +$(TEMP)\recover.rsp : $(RECOVOBJS) $(TEMP)\$(RCVRDEF) + $(ECHO) $(SYSOBJ) $(RECOVOBJS)> $@ + $(ECHO) $(GAMEDIR)\recover.exe>> $@ + $(ECHO) nul>> $@ + $(ECHO) $(PLIBS)>> $@ + $(ECHO) $(TEMP)\$(RCVRDEF) $(LFLAGS);>> $@ + +$(OBJ)\recover.o : $(UTIL)\$(CB) $(CONFIG_H) + $(UTILCC) + +# +# Targets for the dlb. +# + +dlb : $(TEMP)\dlb.exe +$(TEMP)\dlb.exe : $(TEMP)\dlb.rsp + $(RCVRLN) + +$(TEMP)\dlb.rsp : $(DLBOBJS) $(TEMP)\$(DLBDEF) + $(ECHO) $(SYSOBJ) $(DLBOBJS)> $@ + $(ECHO) $(TEMP)\dlb.exe>> $@ + $(ECHO) nul>> $@ + $(ECHO) $(PLIBS)>> $@ + $(ECHO) $(TEMP)\$(DLBDEF) $(LFLAGS);>> $@ + +$(OBJ)\dlb_main.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\dlb.h + $(UTILCC) + +$(GAMEDIR)\nhdat : + $(MAKEB) do_dlb + +dlb_yup : dlb + $(TEMP)\dlb cf $(GAMEDIR)\nhdat $(DATDLB) + -$(RM) $(GAMEDIR)\help + -$(RM) $(GAMEDIR)\hh + -$(RM) $(GAMEDIR)\cmdhelp + -$(RM) $(GAMEDIR)\history + -$(RM) $(GAMEDIR)\opthelp + -$(RM) $(GAMEDIR)\wizhelp + -$(RM) $(GAMEDIR)\asmodeus.lev + -$(RM) $(GAMEDIR)\baalz.lev + -$(RM) $(GAMEDIR)\bigrm-?.lev + -$(RM) $(GAMEDIR)\castle.lev + -$(RM) $(GAMEDIR)\fakewiz?.lev + -$(RM) $(GAMEDIR)\juiblex.lev + -$(RM) $(GAMEDIR)\knox.lev + -$(RM) $(GAMEDIR)\medusa-?.lev + -$(RM) $(GAMEDIR)\minend-?.lev + -$(RM) $(GAMEDIR)\minefill.lev + -$(RM) $(GAMEDIR)\minetn-?.lev + -$(RM) $(GAMEDIR)\oracle.lev + -$(RM) $(GAMEDIR)\orcus.lev + -$(RM) $(GAMEDIR)\sanctum.lev + -$(RM) $(GAMEDIR)\tower?.lev + -$(RM) $(GAMEDIR)\valley.lev + -$(RM) $(GAMEDIR)\wizard?.lev + -$(RM) $(GAMEDIR)\astral.lev + -$(RM) $(GAMEDIR)\air.lev + -$(RM) $(GAMEDIR)\earth.lev + -$(RM) $(GAMEDIR)\fire.lev + -$(RM) $(GAMEDIR)\water.lev + -$(RM) $(GAMEDIR)\???-goal.lev + -$(RM) $(GAMEDIR)\???-fil?.lev + -$(RM) $(GAMEDIR)\???-loca.lev + -$(RM) $(GAMEDIR)\???-strt.lev + -$(RM) $(GAMEDIR)\data + -$(RM) $(GAMEDIR)\oracles + -$(RM) $(GAMEDIR)\options + -$(RM) $(GAMEDIR)\quest.dat + -$(RM) $(GAMEDIR)\rumors + +dlb_nope : + $(ECHO) DLB not requested. + +# +# The following files depend on makedefs to be created. +# +# date.h should be remade every time any of the source or include +# files is modified. +# + +$(INCL)\date.h : $(VOBJ) $(TEMP)\makedefs.exe + $(TEMP)\makedefs -v + $(CP) $(DAT)\options $(GAMEDIR) + $(RM) $(DAT)\options + +$(INCL)\onames.h : $(TEMP)\makedefs.exe + $(TEMP)\makedefs -o + +$(INCL)\pm.h : $(TEMP)\makedefs.exe + $(TEMP)\makedefs -p + +monstr.c : $(TEMP)\makedefs.exe + $(TEMP)\makedefs -m + +$(OBJ)\monstr.o : $(CB) + $(SRCCC) + +$(GAMEDIR)\data : $(DAT)\$(DATABASE) $(TEMP)\makedefs.exe + $(TEMP)\makedefs -d + $(CP) $(DAT)\data $(GAMEDIR) + $(RM) $(DAT)\data + +$(GAMEDIR)\rumors : $(DAT)\rumors.tru $(DAT)\rumors.fal $(TEMP)\makedefs.exe + $(TEMP)\makedefs -r + $(CP) $(DAT)\rumors $(GAMEDIR) + $(RM) $(DAT)\rumors + +$(GAMEDIR)\oracles : $(DAT)\oracles.txt $(TEMP)\makedefs.exe + $(TEMP)\makedefs -h + $(CP) $(DAT)\oracles $(GAMEDIR) + $(RM) $(DAT)\oracles + +$(GAMEDIR)\quest.dat : $(DAT)\quest.txt $(TEMP)\makedefs.exe + $(TEMP)\makedefs -q + $(CP) $(DAT)\quest.dat $(GAMEDIR) + $(RM) $(DAT)\quest.dat + +# +# Vision tables for algorithm D. +# + +vis_tab.c : $(INCL)\vis_tab.h +$(INCL)\vis_tab.h : $(TEMP)\makedefs.exe + $(TEMP)\makedefs -z + +$(OBJ)\vis_tab.o : $(CB) + $(SRCCC) + +# +# The following programs vary depending on what OS you are using. +# + +$(OBJ)\main.o : $(SSYS)\pc$(CB) $(HACK_H) $(INCL)\dlb.h + $(PSYSCC) +$(OBJ)\tty.o : $(SSYS)\pc$(CB) $(HACK_H) $(INCL)\func_tab.h + $(PSYSCC) +$(OBJ)\unix.o : $(SSYS)\pc$(CB) $(HACK_H) + $(PSYSCC) + +# +# Other system specific modules. +# + +$(OBJ)\os2.o : $(SYS)\$(CB) $(HACK_H) $(INCL)\tcap.h $(INCL)\def_os2.h + $(SYSCC) +$(OBJ)\pcsys.o : $(SSYS)\$(CB) $(HACK_H) + $(SSYSCC) + +# +# Berkeley random(3) routines. +# + +$(OBJ)\random.o : $(SSYS)\$(CB) + $(SSYSCC) + +# +# Window source. +# + +$(OBJ)\getline.o : $(WIN)\$(CB) $(HACK_H) $(INCL)\func_tab.h + $(WINCC) +$(OBJ)\termcap.o : $(WIN)\$(CB) $(HACK_H) $(INCL)\tcap.h + $(WINCC) +$(OBJ)\topl.o : $(WIN)\$(CB) $(HACK_H) $(INCL)\tcap.h + $(WINCC) +$(OBJ)\wintty.o : $(WIN)\$(CB) $(HACK_H) $(INCL)\tcap.h + $(WINCC) + +# +# Secondary targets. +# + +dat : spec_lev help_fil $(GAMEDIR)\dungeon $(GAMEDIR)\data $(GAMEDIR)\rumors \ + $(GAMEDIR)\oracles $(GAMEDIR)\quest.dat $(GAMEDIR)\$(GAME).ico \ + $(GAMEDIR)\$(GAME).cmd $(GAMEDIR)\nethack.cnf $(GAMEDIR)\nhdat + +help_fil : $(GAMEDIR)\cmdhelp $(GAMEDIR)\help $(GAMEDIR)\hh $(GAMEDIR)\history \ + $(GAMEDIR)\license $(GAMEDIR)\opthelp $(GAMEDIR)\wizhelp + +$(GAMEDIR)\cmdhelp : $(DAT)\cmdhelp + $(CP) $(DAT)\cmdhelp $(GAMEDIR) +$(GAMEDIR)\help : $(DAT)\help + $(CP) $(DAT)\help $(GAMEDIR) +$(GAMEDIR)\hh : $(DAT)\hh + $(CP) $(DAT)\hh $(GAMEDIR) +$(GAMEDIR)\history : $(DAT)\history + $(CP) $(DAT)\history $(GAMEDIR) +$(GAMEDIR)\license : $(DAT)\license + $(CP) $(DAT)\license $(GAMEDIR) +$(GAMEDIR)\opthelp : $(DAT)\opthelp + $(CP) $(DAT)\opthelp $(GAMEDIR) +$(GAMEDIR)\wizhelp : $(DAT)\wizhelp + $(CP) $(DAT)\wizhelp $(GAMEDIR) + +$(GAMEDIR)\dungeon : $(DAT)\dungeon.def $(TEMP)\makedefs.exe $(TEMP)\dgn_comp.exe + $(TEMP)\makedefs -e + $(TEMP)\dgn_comp $(DAT)\dungeon.pdf + $(CP) $(DAT)\dungeon $(GAMEDIR) + $(RM) $(DAT)\dungeon.pdf + $(RM) $(DAT)\dungeon + +AFILES = $(GAMEDIR)\Arc-goal.lev +BFILES = $(GAMEDIR)\Bar-goal.lev +CFILES = $(GAMEDIR)\Cav-goal.lev +HFILES = $(GAMEDIR)\Hea-goal.lev +KFILES = $(GAMEDIR)\Kni-goal.lev +MFILES = $(GAMEDIR)\Mon-goal.lev +PFILES = $(GAMEDIR)\Pri-goal.lev +RANFILES = $(GAMEDIR)\Ran-goal.lev +RFILES = $(GAMEDIR)\Rog-goal.lev +SFILES = $(GAMEDIR)\Sam-goal.lev +TFILES = $(GAMEDIR)\Tou-goal.lev +VFILES = $(GAMEDIR)\Val-goal.lev +WFILES = $(GAMEDIR)\Wiz-goal.lev + +XFILES = $(AFILES) $(BFILES) $(CFILES) $(HFILES) $(KFILES) $(MFILES) \ + $(PFILES) $(RANFILES) $(RFILES) $(SFILES) $(TFILES) $(VFILES) $(WFILES) + +spec_lev : $(GAMEDIR)\astral.lev $(GAMEDIR)\bigrm-1.lev $(GAMEDIR)\castle.lev \ + $(GAMEDIR)\knox.lev $(GAMEDIR)\medusa-1.lev $(GAMEDIR)\minefill.lev \ + $(GAMEDIR)\oracle.lev $(GAMEDIR)\tower1.lev $(GAMEDIR)\valley.lev \ + $(GAMEDIR)\wizard1.lev $(GAMEDIR)\soko1-1.lev $(XFILES) + +# Single special level files + +$(GAMEDIR)\castle.lev : $(DAT)\castle.des $(TEMP)\lev_comp.exe + $(MAKEB) LF=castle do_slev +$(GAMEDIR)\knox.lev : $(DAT)\knox.des $(TEMP)\lev_comp.exe + $(MAKEB) LF=knox do_slev +$(GAMEDIR)\oracle.lev : $(DAT)\oracle.des $(TEMP)\lev_comp.exe + $(MAKEB) LF=oracle do_slev + +do_slev : + $(TEMP)\lev_comp $(DAT)\$(LF).des + $(CP) $(LF).lev $(GAMEDIR) + $(RM) $(LF).lev + +# Multiple special level files + +$(GAMEDIR)\astral.lev : $(DAT)\endgame.des $(TEMP)\lev_comp.exe + $(TEMP)\lev_comp $(DAT)\endgame.des + $(CP) air.lev $(GAMEDIR) + $(CP) astral.lev $(GAMEDIR) + $(CP) earth.lev $(GAMEDIR) + $(CP) fire.lev $(GAMEDIR) + $(CP) water.lev $(GAMEDIR) + $(RM) air.lev + $(RM) astral.lev + $(RM) earth.lev + $(RM) fire.lev + $(RM) water.lev + +$(GAMEDIR)\bigrm-1.lev : $(DAT)\bigroom.des $(TEMP)\lev_comp.exe + $(TEMP)\lev_comp $(DAT)\bigroom.des + $(CP) bigrm-?.lev $(GAMEDIR) + $(RM) bigrm-?.lev + +$(GAMEDIR)\medusa-1.lev : $(DAT)\medusa.des $(TEMP)\lev_comp.exe + $(TEMP)\lev_comp $(DAT)\medusa.des + $(CP) medusa-?.lev $(GAMEDIR) + $(RM) medusa-?.lev + +$(GAMEDIR)\minefill.lev : $(DAT)\mines.des $(TEMP)\lev_comp.exe + $(TEMP)\lev_comp $(DAT)\mines.des + $(CP) minend-?.lev $(GAMEDIR) + $(CP) minefill.lev $(GAMEDIR) + $(CP) minetn-?.lev $(GAMEDIR) + $(RM) minend-?.lev + $(RM) minefill.lev + $(RM) minetn-?.lev + +$(GAMEDIR)\tower1.lev : $(DAT)\tower.des $(TEMP)\lev_comp.exe + $(TEMP)\lev_comp $(DAT)\tower.des + $(CP) tower?.lev $(GAMEDIR) + $(RM) tower?.lev + +$(GAMEDIR)\valley.lev : $(DAT)\gehennom.des $(TEMP)\lev_comp.exe + $(TEMP)\lev_comp $(DAT)\gehennom.des + $(CP) asmodeus.lev $(GAMEDIR) + $(CP) baalz.lev $(GAMEDIR) + $(CP) juiblex.lev $(GAMEDIR) + $(CP) orcus.lev $(GAMEDIR) + $(CP) sanctum.lev $(GAMEDIR) + $(CP) valley.lev $(GAMEDIR) + $(RM) asmodeus.lev + $(RM) baalz.lev + $(RM) juiblex.lev + $(RM) orcus.lev + $(RM) sanctum.lev + $(RM) valley.lev + +$(GAMEDIR)\wizard1.lev : $(DAT)\yendor.des $(TEMP)\lev_comp.exe + $(TEMP)\lev_comp $(DAT)\yendor.des + $(CP) wizard?.lev $(GAMEDIR) + $(CP) fakewiz?.lev $(GAMEDIR) + $(RM) wizard?.lev + $(RM) fakewiz?.lev + +$(GAMEDIR)\soko1-1.lev : $(DAT)\sokoban.des $(TEMP)\lev_comp.exe + $(TEMP)\lev_comp $(DAT)\sokoban.des + $(CP) soko?-?.lev $(GAMEDIR) + $(RM) soko?-?.lev + + +# Quest dungeons + +$(AFILES) : $(DAT)\Arch.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Arc QF=Arch do_quest +$(BFILES) : $(DAT)\Barb.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Bar QF=Barb do_quest +$(CFILES) : $(DAT)\Caveman.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Cav QF=Caveman do_quest +$(HFILES) : $(DAT)\Healer.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Hea QF=Healer do_quest +$(KFILES) : $(DAT)\Knight.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Kni QF=Knight do_quest +$(MFILES) : $(DAT)\Monk.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Mon QF=Monk do_quest +$(PFILES) : $(DAT)\Priest.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Pri QF=Priest do_quest +$(RANFILES) : $(DAT)\Ranger.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Ran QF=Ranger do_quest +$(RFILES) : $(DAT)\Rogue.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Rog QF=Rogue do_quest +$(SFILES) : $(DAT)\Samurai.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Sam QF=Samurai do_quest +$(TFILES) : $(DAT)\Tourist.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Tou QF=Tourist do_quest +$(VFILES) : $(DAT)\Valkyrie.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Val QF=Valkyrie do_quest +$(WFILES) : $(DAT)\Wizard.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Wiz QF=Wizard do_quest + +do_quest : + $(TEMP)\lev_comp $(DAT)\$(QF).des + $(CP) $(QQ)-fil?.lev $(GAMEDIR) + $(CP) $(QQ)-goal.lev $(GAMEDIR) + $(CP) $(QQ)-loca.lev $(GAMEDIR) + $(CP) $(QQ)-strt.lev $(GAMEDIR) + $(RM) $(QQ)-fil?.lev + $(RM) $(QQ)-goal.lev + $(RM) $(QQ)-loca.lev + $(RM) $(QQ)-strt.lev + +# +# NetHack icon for Presentation Manager. +# + +$(GAMEDIR)\$(GAME).ico : $(SYS)\nhpmico.uu + $(MAKEB) do_icon + +icon_msg : + $(ECHO) Icon file not extracted. Extract manually if required. + +icon_act : + $(UUDECODE) $(SYS)\nhpmico.uu + $(CP) nethack.ico $(GAMEDIR)\$(GAME).ico + $(RM) nethack.ico + +# +# NetHack command file to use with Presentation Manager. +# + +$(GAMEDIR)\$(GAME).cmd : + $(MAKEB) CMDF=$@ do_cmd + +cmd_msg : + $(ECHO) Command file not created. Create manually if required. + +cmd_act : + $(ECHO) @echo off> $(CMDF) + $(ECHO) REM Command file for starting nethack.exe from PM/WPS Desktop>> $(CMDF) + $(ECHO) $(GAME).exe $(P)1 $(P)2 $(P)3 $(P)4 $(P)5 $(P)6 $(P)7>> $(CMDF) + $(ECHO) pause>> $(CMDF) + +# +# NetHack configuration file. Will not overwrite an existing file. +# + +$(GAMEDIR)\nethack.cnf : + $(CP) $(SSYS)\nethack.cnf $(GAMEDIR) + +# +# Documentation. +# + +$(TEMP)\$(GUIDEBOO).dvi : $(DOC)\$(GUIDEBOO).tex + $(LATEX) $(DOC)\$(GUIDEBOO).tex + $(CP) $(GUIDEBOO).dvi $(TEMP) + $(CP) $(GUIDEBOO).aux $(TEMP) + $(CP) $(GUIDEBOO).log $(TEMP) + $(RM) $(GUIDEBOO).dvi + $(RM) $(GUIDEBOO).aux + $(RM) $(GUIDEBOO).log + +# +# Housekeeping. +# + +clean : + -$(RM) $(OBJ)\*.o + +spotless : clean + -$(RM) $(INCL)\date.h + -$(RM) $(INCL)\onames.h + -$(RM) $(INCL)\pm.h + -$(RM) $(INCL)\vis_tab.h + -$(RM) vis_tab.c + -$(RM) monstr.c + -$(RM) *.lev + -$(RM) nethack.ico + -$(RM) $(TEMP)\makedefs.exe + -$(RM) $(TEMP)\lev_comp.exe + -$(RM) $(TEMP)\dgn_comp.exe + -$(RM) $(TEMP)\*.rsp + -$(RM) $(TEMP)\*.def + -$(RM) $(TEMP)\*.map + -$(RM) $(TEMP)\$(GUIDEBOO).dvi + -$(RM) $(TEMP)\$(GUIDEBOO).aux + -$(RM) $(TEMP)\$(GUIDEBOO).log + +# +# Main source. +# +# Default rules are sooo difficult for so many make +# programs that we do this the most straightforward way. +# + +$(OBJ)\allmain.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\alloc.o : $(SRC)\$(CB) $(CONFIG_H) + $(SRCCC) +$(OBJ)\apply.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h + $(SRCCC) +$(OBJ)\artifact.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\artilist.h + $(SRCCC) +$(OBJ)\attrib.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h + $(SRCCC) +$(OBJ)\ball.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\bones.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h + $(SRCCC) +$(OBJ)\botl.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\cmd.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\func_tab.h + $(SRCCC) +$(OBJ)\dbridge.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\decl.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\quest.h + $(SRCCC) +$(OBJ)\detect.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h + $(SRCCC) +$(OBJ)\dig.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\display.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\dlb.o : $(SRC)\$(CB) $(CONFIG_H) $(INCL)\dlb.h + $(SRCCC) +$(OBJ)\do.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h + $(SRCCC) +$(OBJ)\do_name.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\do_wear.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\dog.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h + $(SRCCC) +$(OBJ)\dogmove.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h + $(SRCCC) +$(OBJ)\dokick.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h + $(SRCCC) +$(OBJ)\dothrow.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\drawing.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\tcap.h + $(SRCCC) +$(OBJ)\dungeon.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\dgn_file.h + $(SRCCC) +$(OBJ)\eat.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\end.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h + $(SRCCC) +$(OBJ)\engrave.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h + $(SRCCC) +$(OBJ)\exper.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\explode.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\extralev.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\files.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\fountain.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\hack.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\hacklib.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\invent.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h + $(SRCCC) +$(OBJ)\light.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\lock.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\mail.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\mail.h + $(SRCCC) +$(OBJ)\makemon.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h $(INCL)\emin.h + $(SRCCC) +$(OBJ)\mapglyph.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\mcastu.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\mhitm.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h + $(SRCCC) +$(OBJ)\mhitu.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h + $(SRCCC) +$(OBJ)\minion.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\emin.h $(INCL)\epri.h + $(SRCCC) +$(OBJ)\mklev.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\mkmap.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h + $(SRCCC) +$(OBJ)\mkmaze.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h + $(SRCCC) +$(OBJ)\mkobj.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h + $(SRCCC) +$(OBJ)\mkroom.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\mon.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h + $(SRCCC) +$(OBJ)\mondata.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h + $(SRCCC) +$(OBJ)\monmove.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h + $(SRCCC) +$(OBJ)\monst.o : $(SRC)\$(CB) $(CONFIG_H) $(PERMONST_H) $(INCL)\monsym.h $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h $(INCL)\color.h + $(SRCCC) +$(OBJ)\mplayer.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\mthrowu.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\muse.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h + $(SRCCC) +$(OBJ)\music.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\o_init.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\objects.o : $(SRC)\$(CB) $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h $(INCL)\color.h + $(SRCCC) +$(OBJ)\objnam.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\options.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\tcap.h + $(SRCCC) +$(OBJ)\pager.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\pickup.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\pline.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h + $(SRCCC) +$(OBJ)\polyself.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\potion.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\pray.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h + $(SRCCC) +$(OBJ)\priest.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h $(INCL)\emin.h + $(SRCCC) +$(OBJ)\quest.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\quest.h $(INCL)\qtext.h + $(SRCCC) +$(OBJ)\questpgr.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\qtext.h + $(SRCCC) +$(OBJ)\read.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\region.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\rect.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\restore.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\tcap.h $(INCL)\quest.h + $(SRCCC) +$(OBJ)\rip.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\rnd.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\role.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\rumors.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\save.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\quest.h + $(SRCCC) +$(OBJ)\shk.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h + $(SRCCC) +$(OBJ)\shknam.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h + $(SRCCC) +$(OBJ)\sit.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h + $(SRCCC) +$(OBJ)\sounds.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h + $(SRCCC) +$(OBJ)\sp_lev.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\rect.h + $(SRCCC) +$(OBJ)\spell.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\steal.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\steed.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\teleport.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\timeout.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\topten.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\track.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\trap.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\u_init.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\uhitm.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\vault.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\vault.h + $(SRCCC) +$(OBJ)\version.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\date.h $(INCL)\$(PATCHLEV).h + $(SRCCC) +$(OBJ)\vision.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\vis_tab.h + $(SRCCC) +$(OBJ)\weapon.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\were.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\wield.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\windows.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\wizard.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\qtext.h + $(SRCCC) +$(OBJ)\worm.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h + $(SRCCC) +$(OBJ)\worn.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\write.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC) +$(OBJ)\zap.o : $(SRC)\$(CB) $(HACK_H) + $(SRCCC)