Metropoli BBS
VIEWER: makefile.os2 MODE: TEXT (ASCII)
#	SCCS Id: @(#)Makefile.os2	3.0	91/01/13
#	OS/2 NetHack 3.0 Makefile for Microsoft(tm) C 5.1 and 6.0
#	-- Timo Hakulinen
#
#	NDMAKE ver 4.5 or MS-NMAKE is required, MS-MAKE will not work.
#	To enable either 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 or compatible.  Remember to set
#	$(RLIBS) to real mode libraries if compiling in DOS, and to
#	protected mode libraries for compilation in OS/2.
#
#	Copy pctty.c, pcunix.c, pcmain.c, msdos.c and this file
#	(+ termcap library if used) into $(SRC) directory, rename
#	this file to "makefile" (important, some targets rely on it),
#	compile and link inside $(SRC).  Termcap library can be built
#	from termcap sources using makefile.lib in "others" directory.
#
#	When using CodeView versions earlier than ver. 2.3, define
#	OS2_CODEVIEW in pcconf.h and set HACKDIR (+ TERM and TERMCAP
#	if used) in OS/2 config.sys. Otherwise path searches may fail.
#
#	Note that $(GAMEDIR) must exist prior to compilation.
#
CC	= cl
LINK	= link
LIB	= lib

# Enable the upper three lines for NDMAKE and lower three for MS-NMAKE.
# ($(MAKE) macro is often predefined, so we use $(MAKEBIN) instead).
#MAKEBIN = make
#AB	= $*.c
#CB	= $*.c
MAKEBIN = nmake
AB	= $(@B).c
CB	= $$(@B).c

# For those of us who have these on PC.
#YACC	= yacc
#LEX	= lex
YACC	= bison -y
LEX	= flex
# Standard file names may vary in PC installations.
YTABC	= y_tab.c
YTABH	= y_tab.h
LEXYYC	= lexyy.c

# Directories (makedefs hardcodes these, don't change them).
INCL	= ..\include		# NetHack include files
AUX	= ..\auxil		# NetHack data and documentation
SRC	= ..\src		# NetHack source

# Modifiable directories.
OBJ	= $(SRC)\o2		# Object files
PLIBP	= c:\libp		# Protected mode C libraries
RLIBP	= c:\lib		# Real mode C libraries
GAMEDIR = \games\nethack	# The game directory

# The game name and description.
GAME	= nethack
GAMEDES = NetHack 3.0

# Memory model, compile only, disable optimization, remove stack probes,
# 80286 instruction set, dedicated datasegment for items >= 5 bytes,
# pack structures on 1 byte boundaries, generate code for 8087
# coprocessor, compiler warning level, include file path.
CFLAGS	= /AL /c /Od /Gs /G2 /Gt5 /Zp1 /FPi /W1 /I$(INCL) $(CDFLAGS) $(STDC)

# + prepare for CodeView symbolic debugger.
CDFLAGS =
#CDFLAGS = /Zi

# Disable for MSC 5.1, enable for 6.0.
STDC	=
#STDC	= /D__STDC__

# Don't ignore case in symbols, no default lib search, stack 4096 bytes.
# (actually a bit of overkill), allow max 1024 segments in program.
LFLAGS	= /noig /nod /stack:4096 /seg:1024 $(LDFLAGS)

# + prepare for CodeView symbolic debugger.
LDFLAGS =
#LDFLAGS = /CO

# Protected mode C libraries for 8087 emulation (change if necessary),
# OS/2 API entry points.  For MSC 5.1, enable the upper line
# for 6.0 the lower.
PLIBS	= $(PLIBP)\llibcep $(PLIBP)\doscalls
#PLIBS	= $(PLIBP)\llibcep $(PLIBP)\os2

# C libraries used by makedefs and lev_comp (change if necessary).
# If compilation is done in DOS, enable the upper line, if in OS/2,
# the lower (protected mode libraries).
#RLIBS	= $(RLIBP)\llibcer
RLIBS	= $(PLIBS)

# Module definition file for OS/2.
OS2DEFS	= $(GAME).def

# The default make target (so just typing 'make' is useful).
default: $(GAME)

# If you have yacc and lex programs and make any changes, comment out the
# upper two lines and uncomment the lower two.
do_yacc: yacc_msg
do_lex:  lex_msg
#do_yacc: yacc_act
#do_lex:  lex_act

# Optional high-quality BSD random number generation routines (see pcconf.h).
# Set to nothing if not used.
RANDOM	= $(OBJ)\random.o
#RANDOM	=

# If TERMLIB defined in pcconf.h, comment out the upper line and
# uncomment the lower.  If the termcap-library doesn't exist, use
# others\makefile.lib to build it.
TERMLIB =
#TERMLIB = termlib.lib

######################################################################
#
# Nothing below this line should have to be changed.
#
# Other things that have to be reconfigured are in
# config.h, pcconf.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_comp.o $(OBJ)\lev_lex.o $(OBJ)\lev_main.o $(OBJ)\alloc.o
SOBJ02 = $(OBJ)\monst.o $(OBJ)\objects.o $(OBJ)\panic.o

SPLEVOBJS = $(SOBJ01) $(SOBJ02)

VOBJ01 = $(OBJ)\allmain.o  $(OBJ)\alloc.o    $(OBJ)\apply.o    $(OBJ)\artifact.o
VOBJ02 = $(OBJ)\attrib.o   $(OBJ)\bones.o    $(OBJ)\cmd.o      $(OBJ)\dbridge.o
VOBJ03 = $(OBJ)\decl.o     $(OBJ)\demon.o    $(OBJ)\do.o       $(OBJ)\do_name.o
VOBJ04 = $(OBJ)\do_wear.o  $(OBJ)\dog.o      $(OBJ)\dogmove.o  $(OBJ)\dokick.o
VOBJ05 = $(OBJ)\dothrow.o  $(OBJ)\eat.o      $(OBJ)\end.o
VOBJ06 = $(OBJ)\engrave.o  $(OBJ)\exper.o    $(OBJ)\extralev.o $(OBJ)\fountain.o
VOBJ07 = $(OBJ)\getline.o  $(OBJ)\hack.o     $(OBJ)\invent.o   $(OBJ)\lock.o
VOBJ08 = $(OBJ)\mail.o     $(OBJ)\main.o     $(OBJ)\makemon.o  $(OBJ)\mcastu.o
VOBJ09 = $(OBJ)\mhitm.o    $(OBJ)\mhitu.o    $(OBJ)\mklev.o    $(OBJ)\mkmaze.o
VOBJ10 = $(OBJ)\mkobj.o    $(OBJ)\mkroom.o   $(OBJ)\mon.o      $(OBJ)\mondata.o
VOBJ11 = $(OBJ)\msdos.o    $(OBJ)\monmove.o  $(OBJ)\monst.o    $(OBJ)\mthrowu.o
VOBJ12 = $(OBJ)\music.o    $(OBJ)\o_init.o   $(OBJ)\objects.o
VOBJ13 = $(OBJ)\objnam.o   $(OBJ)\options.o  $(OBJ)\pager.o    $(OBJ)\pickup.o
VOBJ14 = $(OBJ)\polyself.o $(OBJ)\potion.o   $(OBJ)\pray.o     $(OBJ)\pri.o
VOBJ15 = $(OBJ)\priest.o   $(OBJ)\prisym.o   $(RANDOM)         $(OBJ)\read.o
VOBJ16 = $(OBJ)\restore.o  $(OBJ)\rip.o      $(OBJ)\rnd.o      $(OBJ)\rumors.o
VOBJ17 = $(OBJ)\save.o     $(OBJ)\search.o   $(OBJ)\shk.o      $(OBJ)\shknam.o
VOBJ18 = $(OBJ)\sit.o      $(OBJ)\sounds.o   $(OBJ)\sp_lev.o   $(OBJ)\spell.o
VOBJ20 = $(OBJ)\steal.o    $(OBJ)\termcap.o  $(OBJ)\timeout.o  $(OBJ)\topl.o
VOBJ21 = $(OBJ)\topten.o   $(OBJ)\track.o    $(OBJ)\trap.o     $(OBJ)\tty.o
VOBJ22 = $(OBJ)\u_init.o   $(OBJ)\uhitm.o    $(OBJ)\unix.o     $(OBJ)\vault.o
VOBJ23 = $(OBJ)\weapon.o   $(OBJ)\were.o     $(OBJ)\wield.o
VOBJ24 = $(OBJ)\wizard.o   $(OBJ)\worm.o     $(OBJ)\worn.o     $(OBJ)\write.o
VOBJ25 = $(OBJ)\zap.o
HHOBJ  = $(OBJ)\version.o

VOBJ =	$(VOBJ01) $(VOBJ02) $(VOBJ03) $(VOBJ04) $(VOBJ05) $(VOBJ06) $(VOBJ07) \
	$(VOBJ08) $(VOBJ09) $(VOBJ10) $(VOBJ11) $(VOBJ12) $(VOBJ13) $(VOBJ14) \
	$(VOBJ15) $(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ20) $(VOBJ21) $(VOBJ22) \
	$(VOBJ23) $(VOBJ24) $(VOBJ25)
HOBJ =	$(VOBJ) $(HHOBJ)

PCCONF_H   = $(INCL)\pcconf.h $(INCL)\msdos.h $(INCL)\system.h \
	     $(INCL)\extern.h $(INCL)\def_os2.h
GLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
CONFIG_H   = $(INCL)\config.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 $(INCL)\gold.h $(TRAP_H) $(INCL)\flag.h \
	     $(INCL)\rm.h $(INCL)\hack.h

# The default target

all:	makedefs lev_comp $(GAME) auxil
	@echo Done.

# The main target

$(GAME): $(OBJ) $(GAMEDIR)\$(GAME).exe
$(GAME).exe: $(GAMEDIR)\$(GAME).exe
$(GAMEDIR)\$(GAME).exe: $(GAME).res
	$(LINK) @$(GAME).res

$(GAME).res: $(HOBJ) $(OS2DEFS)
	@echo $(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 $(VOBJ20) +>> $@
	@echo $(VOBJ21) +>> $@
	@echo $(VOBJ22) +>> $@
	@echo $(VOBJ23) +>> $@
	@echo $(VOBJ24) +>> $@
	@echo $(VOBJ25) +>> $@
	@echo $(HHOBJ)>> $@
	@echo $(GAMEDIR)\$(GAME)>> $@
	@echo $(GAME)>> $@
	@echo $(PLIBS) $(TERMLIB)>> $@
	@echo $(OS2DEFS) $(LFLAGS);>> $@

$(OBJ):
	-mkdir $(OBJ)

# Targets for makedefs.

makedefs: $(OBJ) makedefs.exe
makedefs.exe: makedefs.res
	$(LINK) @makedefs.res

makedefs.res: $(MAKEOBJS)
	@echo $(MAKEOBJS)> $@
	@echo makedefs>> $@
	@echo nul>> $@
	@echo $(RLIBS)>> $@
	@echo $(LFLAGS);>> $@

$(OBJ)\makedefs.o : $(CB) $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)

# Targets for the special levels compiler.

lev_comp: $(OBJ) lev_comp.exe
lev_comp.exe: lev_comp.res
	$(LINK) @lev_comp.res

lev_comp.res: $(SPLEVOBJS)
	@echo $(SOBJ01) +> $@
	@echo $(SOBJ02)>> $@
	@echo lev_comp>> $@
	@echo nul>> $@
	@echo $(RLIBS)>> $@
	@echo $(LFLAGS);>> $@

$(OBJ)\lev_comp.o : $(CB) $(HACK_H) $(INCL)\sp_lev.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\lev_lex.o  : $(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\lev_comp.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\lev_main.o : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)

lev_comp.c : lev_comp.y
	$(MAKEBIN) do_yacc

lev_lex.c  : lev_comp.l
	$(MAKEBIN) do_lex

yacc_msg:
	@echo lev_comp.y has changed. To update lev_comp.c and lev_comp.h run YACC.

yacc_act:
	$(YACC) -d lev_comp.y
	copy $(YTABC) lev_comp.c
	copy $(YTABH) $(INCL)\lev_comp.h
	del $(YTABC)
	del $(YTABH)

lex_msg:
	@echo lev_comp.l has changed. To update lev_lex.c run LEX.

lex_act:
	$(LEX) lev_comp.l
	copy $(LEXYYC) lev_lex.c
	del $(LEXYYC)

#
#	The following include files depend on makedefs to be created.
#
#	date.h should be remade any time any of the source or include code
#	is modified.
#
$(INCL)\date.h: $(VOBJ) makedefs.exe
	makedefs -v

$(INCL)\trap.h:	makedefs.exe
	makedefs -t

$(INCL)\onames.h: makedefs.exe
	makedefs -o

$(INCL)\pm.h: makedefs.exe
	makedefs -p

data:	$(AUX)\data.bas makedefs.exe
	makedefs -d

rumors: $(AUX)\rumors.tru $(AUX)\rumors.fal makedefs.exe
	makedefs -r

#
#	The following programs vary depending on what OS you are using.
#
$(OBJ)\main.o: pc$(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ pc$(AB)

$(OBJ)\tty.o:  pc$(CB) $(HACK_H) $(INCL)\func_tab.h
	$(CC) $(CFLAGS) /Fo$@ pc$(AB)

$(OBJ)\unix.o: pc$(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ pc$(AB)

#
# Secondary targets
#

auxil:	spec_lev data rumors
	xcopy $(AUX)\cmdhelp $(GAMEDIR)
	xcopy $(AUX)\help    $(GAMEDIR)
	xcopy $(AUX)\hh      $(GAMEDIR)
	xcopy $(AUX)\history $(GAMEDIR)
	xcopy $(AUX)\license $(GAMEDIR)
	xcopy $(AUX)\opthelp $(GAMEDIR)
	xcopy $(AUX)\oracles $(GAMEDIR)
	xcopy $(AUX)\data    $(GAMEDIR)
	xcopy $(AUX)\rumors  $(GAMEDIR)

spec_lev: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des
	lev_comp $(AUX)\castle.des
	lev_comp $(AUX)\endgame.des
	lev_comp $(AUX)\tower.des
	xcopy castle  $(GAMEDIR)
	xcopy endgame $(GAMEDIR)
	xcopy tower?  $(GAMEDIR)
	del castle
	del endgame
	del tower?

$(OS2DEFS):
	@echo NAME $(GAME) WINDOWCOMPAT> $(OS2DEFS)
	@echo DESCRIPTION '$(GAMEDES)'>> $(OS2DEFS)
	@echo PROTMODE>> $(OS2DEFS)
	@echo EXETYPE OS2>> $(OS2DEFS)

clean:
	-del $(OBJ)\*.o
	-rmdir $(OBJ)

spotless: clean
	-del $(INCL)\date.h
	-del $(INCL)\onames.h
	-del $(INCL)\pm.h
	-del makedefs.exe
	-del lev_comp.exe
	-del *.res
	-del *.def
	-del *.map
	-del $(AUX)\data
	-del $(AUX)\rumors
	-del castle
	-del endgame
	-del tower?

#
# Other dependencies.
#
# MS-NMAKE doesn't give a damn about default rules here, so until
# that is fixed, we do this the hard way.
#

$(OBJ)\allmain.o  : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\alloc.o    : $(CB) $(CONFIG_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\apply.o    : $(CB) $(HACK_H) $(INCL)\edog.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\artifact.o : $(CB) $(HACK_H) $(INCL)\artifact.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\attrib.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\bones.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\cmd.o      : $(CB) $(HACK_H) $(INCL)\func_tab.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\dbridge.o  : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\decl.o     : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\demon.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\do.o       : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\do_name.o  : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\do_wear.o  : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\dog.o      : $(CB) $(HACK_H) $(INCL)\edog.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\dogmove.o  : $(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\dokick.o   : $(CB) $(HACK_H) $(INCL)\eshk.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\dothrow.o  : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\eat.o      : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\end.o      : $(CB) $(HACK_H) $(INCL)\eshk.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\engrave.o  : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\exper.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\extralev.o : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\fountain.o : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\getline.o  : $(CB) $(HACK_H) $(INCL)\func_tab.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\hack.o     : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\invent.o   : $(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\ioctl.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\lock.o     : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\makemon.o  : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mail.o     : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mcastu.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mhitm.o    : $(CB) $(HACK_H) $(INCL)\artifact.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mhitu.o    : $(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mklev.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mkmaze.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mkobj.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mkroom.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mon.o      : $(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\wseg.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mondata.o  : $(CB) $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\monmove.o  : $(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\monst.o    : $(CB) $(CONFIG_H) $(PERMONST_H) $(INCL)\monsym.h $(INCL)\eshk.h \
		    $(INCL)\vault.h $(INCL)\epri.h $(INCL)\color.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\msdos.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\mthrowu.o  : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\music.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\o_init.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\objects.o  : $(CB) $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h \
		    $(INCL)\color.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\objnam.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\options.o  : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\pager.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\panic.o    : $(CB) $(CONFIG_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\pickup.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\polyself.o : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\potion.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\pray.o     : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\pri.o      : $(CB) $(HACK_H) $(INCL)\epri.h $(INCL)\termcap.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\priest.o   : $(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\prisym.o   : $(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\random.o   : $(CB)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\read.o     : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\restore.o  : $(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\rip.o      : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\rnd.o      : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\rumors.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\save.o     : $(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\search.o   : $(CB) $(HACK_H) $(INCL)\artifact.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\shk.o      : $(CB) $(HACK_H) $(INCL)\eshk.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\shknam.o   : $(CB) $(HACK_H) $(INCL)\eshk.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\sit.o      : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\sounds.o   : $(CB) $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\sp_lev.o   : $(CB) $(HACK_H) $(INCL)\sp_lev.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\spell.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\steal.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\termcap.o  : $(CB) $(HACK_H) $(INCL)\termcap.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\timeout.o  : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\topl.o     : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\topten.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\track.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\trap.o     : $(CB) $(HACK_H) $(INCL)\edog.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\u_init.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\uhitm.o    : $(CB) $(HACK_H) $(INCL)\artifact.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\vault.o    : $(CB) $(HACK_H) $(INCL)\vault.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\version.o  : $(CB) $(HACK_H) $(INCL)\date.h $(INCL)\patchlev.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\weapon.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\were.o     : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\wield.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\wizard.o   : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\worm.o     : $(CB) $(HACK_H) $(INCL)\wseg.h
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\worn.o     : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\write.o    : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
$(OBJ)\zap.o      : $(CB) $(HACK_H)
	$(CC) $(CFLAGS) /Fo$@ $(AB)
[ RETURN TO DIRECTORY ]