#       Unofficial makefile for Nethack 3.2.2, WinNT tty port
#	Mingw32 under Win95 
#
#	This version uses DOS-style Directory separators only!
#
#	Requires Gnu gcc compiler for Win32 (Mingw32 or Cygwin)
#	Also requires Gnu Make utility, either Mingw32 or Cygwin version
#
#	For questions or comments: karlgarrison@earthlink.net
#
#	In addition to your C compiler, you will need a workalike for the
#       UNIX yacc and lex utilities.  Theoretically, you should be able to
#       compile without them, but I ran into errors when I tried to do this.
#
#	Note that flex (workalike for lex) and bison (workalike for yacc) are
#       included with the Cygwin package (full version only).  There may be
#       other ports of these tools available for Win32, but these are the only
#       ones I am aware of.
#

# Directory Seperator
#

# Game Installation Variables
# NOTE: Make sure GAMEDIR exists before make is started.

GAME = slashem
# The GNU Make has a problem if you include a drive spec below (unfortunately).
GAMEDIR = \games\slam32d

#
# Directories
#

# These are for Mingw32's GCC,  which gets confused by \ 
DDAT  = ../dat
DUTIL = ../util
DSRC  = ../src
DINCL = ../include

# Normal dos commands get confused by \\
DAT  = ..\dat
DOC  = ..\doc
INCL = ..\include
WSYS = ..\sys\winnt
SRC  = ..\src
SSHR = ..\sys\share
UTIL = ..\util
WIN  = ..\win\tty
WSHR = ..\win\share

#
#  Executables.

CC    = gcc
LINK  = gcc
MAKEBIN  = make

# The copy, del and echo commands don't seem to work from a makefile since
# it's part of the shell rather than an external utility.  We can get around
# this by specifying an external utility that performs the same function like
# the cp and rm commands from Cygwin32, or xcopy for copy.  Another way to do
# it is to call the shell explicitly and use the /c option to run the built-in
# command.  All of these examples appear below.

#COPY = command.com /c copy
#COPY = cmd.exe /c copy	# Same as above, but for Windows NT
#COPY = xcopy
#COPY = cp		# UNIX copy command
COPY = copy		# MSDOS copy command
#DEL = command.com /c del
#DEL = cmd.exe /c del	# Same as above, but for Windows NT
#DEL = rm -f 		#UNIX del command
DEL = del 		#MSDOS del command
#ECHO = command.com /c echo     # For some reason this doesn't seem to work
#ECHO = cmd.exe /c $(ECHO)	# Same as above, but for Windows NT
#ECHO = echo.exe # UNIX echo command
ECHO = echo # MSDOS echo command
#LS = ls -1		# ls.exe from djgpp distribution
LS = dir /l/b/-p           # DOS command WAC - disable pause for dos6
#LS = *dir /l/b/z        # 4DOS command - cuts through ALIASes

# if you have a uudecode program, add its name here
# otherwise leave blank
UUDECODE =

#
#  Yacc/Lex ... if you got 'em.
#
# If you have yacc/lex or a work-alike set YACC_LEX to Y
#
YACC_LEX = Y

# If YACC_LEX is Y above, set the following to values appropriate for
# your tools.
#
YACC   = bison -y
LEX    = flex
# Win32 versions
#YTABC  = y.tab.c
#YTABH  = y.tab.h
#LEXYYC = lex.yy.c
# DJGPP bison/lex doesn't use LFN
YTABC  = y_tab.c
YTABH  = y_tab.h
LEXYYC = lexyy.c

#
# Uncomment the line below if you want to store all the level files,
# help files, etc. in a single library file.

USE_DLB = Y

#############################################################################
#
# nothing below this line should have to be changed
#

GAMEFILE = $(GAMEDIR)\$(GAME).exe

# Changing this conditional block is not recommended
ifeq ($(USE_DLB),Y)
DLBFLG = -DDLB
else
DLBFLG =
endif

#
#  Flags.
#
# Debugging
#CFLAGS = -pg -c -I..\include -I..\sys\winnt $(DLBFLG) -DWIN32CON
#LFLAGS = -pg

#    Normal
CFLAGS = -c -O -I../include -I../sys/winnt $(DLBFLG) -DWIN32CON
LFLAGS =

#
#  Utility Objects.
#

MAKESRC	    = makedefs.c

SPLEVSRC    = lev_yacc.c  lev_$(LEX).c	 lev_main.c  panic.c

DGNCOMPSRC  = dgn_yacc.c  dgn_$(LEX).c	 dgn_main.c

MAKEOBJS    = makedefs.o  monst.o	 objects.o

SPLEVOBJS   = lev_yacc.o  lev_$(LEX).o	lev_main.o  alloc.o	\
		monst.o	    objects.o	    panic.o  \
		drawing.o	decl.o

DGNCOMPOBJS = dgn_yacc.o  dgn_$(LEX).o	dgn_main.o  alloc.o	 \
		panic.o

RECOVOBJS   = recover.o


#  Tile related object files.

TEXTIO      = tiletext.o tiletxt.o drawing.o decl.o monst.o objects.o

TEXTIO2     = tiletex2.o tiletxt2.o drawing.o decl.o monst.o objects.o


PLANAR_TIB  = NetHack1.tib

OVERVIEW_TIB = NetHacko.tib

DLBOBJ = dlb.o

#  Object files for the game itself.

VOBJ01 = allmain.o  alloc.o    apply.o	  artifact.o attrib.o
VOBJ02 = ball.o	    bones.o    botl.o	  cmd.o	 dbridge.o
VOBJ03 = decl.o	    detect.o   display.o  do.o	     do_name.o
VOBJ04 = do_wear.o  dog.o      dogmove.o  dokick.o   dothrow.o
VOBJ05 = drawing.o  dungeon.o  eat.o	  end.o	     engrave.o
VOBJ06 = exper.o    explode.o  extralev.o files.o    fountain.o
VOBJ07 = getline.o  hack.o     hacklib.o  invent.o   lock.o
VOBJ08 = mail.o	    main.o     makemon.o  mcastu.o   mhitm.o
VOBJ09 = mhitu.o    minion.o   mkmap.o	  mklev.o    mkmaze.o
VOBJ10 = mkobj.o    mkroom.o   mon.o	  mondata.o  monmove.o
VOBJ11 = monst.o    monstr.o   mplayer.o  mthrowu.o  muse.o
VOBJ12 = music.o    o_init.o   objects.o  objnam.o   options.o
VOBJ13 = pickup.o   pline.o    polyself.o potion.o   quest.o
VOBJ14 = questpgr.o pager.o    pray.o	  priest.o   read.o
VOBJ15 = rect.o	    restore.o  rip.o	  rnd.o	     rumors.o
VOBJ16 = save.o	    shk.o      shknam.o	  sit.o	     sounds.o
VOBJ17 = sp_lev.o   spell.o    steal.o	  termcap.o  timeout.o
VOBJ18 = topl.o	    topten.o   track.o	  trap.o     u_init.o
VOBJ19 = uhitm.o    vault.o    vision.o	  vis_tab.o  weapon.o
VOBJ20 = were.o	    wield.o    windows.o  wintty.o   wizard.o
VOBJ21 = worm.o	    worn.o     write.o	  zap.o	     light.o
VOBJ22 = dlb.o      dig.o      teleport.o role.o     steed.o 
VOBJ23 = tech.o     gypsy.o

SOBJ   = winnt.o    sys.o      unix.o     nttty.o    random.o

VVOBJ  = 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)

ALLOBJ = $(VOBJ) $(SOBJ) $(VVOBJ)

#
#  Header Objects.
#

DGN_FILE_H = $(INCL)\align.h	$(INCL)\dgn_file.h
DUNGEON_H  = $(INCL)\align.h	$(INCL)\dungeon.h
EMIN_H	   = $(DUNGEON_H)	$(INCL)\emin.h
EPRI_H	   = $(DUNGEON_H)	$(INCL)\align.h	    $(INCL)\epri.h
ESHK_H	   = $(DUNGEON_H)	$(INCL)\eshk.h
MONDATA_H  = $(INCL)\align.h	$(INCL)\mondata.h
MONST_H	   = $(INCL)\align.h	$(INCL)\monst.h
PERMONST_H = $(INCL)\monattk.h	$(INCL)\monflag.h   $(INCL)\align.h   \
	    $(INCL)\permonst.h
RM_H	   = $(INCL)\align.h	$(INCL)\rm.h
SP_LEV_H   = $(INCL)\align.h	$(INCL)\sp_lev.h
VAULT_H	   = $(DUNGEON_H)	$(INCL)\vault.h
YOUPROP_H  = $(PERMONST_H)	$(MONDATA_H)	    $(INCL)\prop.h    \
	    $(INCL)\pm.h       $(INCL)\youprop.h
YOU_H	   = $(MONST_H)		$(YOUPROP_H)	    $(INCL)\align.h   \
	     $(INCL)\attrib.h	$(INCL)\you.h
DISPLAY_H  = $(MONDATA_H)	$(INCL)\vision.h    $(INCL)\display.h
NTCONF_H   = $(INCL)\micro.h	$(INCL)\system.h    $(INCL)\ntconf.h
CONFIG_H   = $(GLOBAL_H)	$(INCL)\tradstdc.h  $(INCL)\config.h
DECL_H	   = $(YOU_H)		$(INCL)\spell.h	    $(INCL)\color.h   \
	     $(INCL)\obj.h	$(INCL)\onames.h    $(INCL)\pm.h      \
	      $(INCL)\decl.h
GLOBAL_H   = $(NTCONF_H)	$(INCL)\coord.h	    $(INCL)\global.h
HACK_H	   = $(CONFIG_H)	$(DUNGEON_H)	    $(DECL_H)	      \
	       $(DISPLAY_H)	  $(INCL)\monsym.h    $(INCL)\mkroom.h	\
	      $(INCL)\objclass.h $(INCL)\trap.h	     $(INCL)\flag.h    \
	      $(RM_H)		 $(INCL)\vision.h    $(INCL)\wintype.h \
	      $(INCL)\engrave.h	 $(INCL)\rect.h	  \
	       $(INCL)\trampoli.h $(INCL)\hack.h
DLB_H      = $(INCL)\dlb.h

ifeq ($(USE_DLB),Y)
DLB = $(DAT)\nhdat
DLBOBJS = dlb_main.o dlb.o alloc.o panic.o
else
DLB =
DLBOBJS =
endif

#
#  Make Rules.
#

.SUFFIXES:  .exe .o .c .y .l

.c.o:
	$(CC) $(CFLAGS) -o$@ $<

#.phony: dlb

#
#  Primary Targets.
#

#  The default target.

default: $(GAMEFILE)

all: install.tag

util: utility.tag

install: install.tag

utility.tag: $(INCL)\date.h $(INCL)\trap.h    $(INCL)\onames.h	       \
	$(INCL)\pm.h	  monstr.c   vis_tab.c	$(INCL)\filename.h\
	lev_comp.exe	 dgn_comp.exe	 recover.exe $(TILEUTIL)
	$(ECHO) utilities made > utility.tag

install.tag: dat.tag $(GAMEFILE)
ifeq ($(USE_DLB),Y)
	$(COPY) $(DLB)         $(GAMEDIR)
	$(COPY) $(DAT)\license       $(GAMEDIR)
else
	$(COPY) $(DAT)\*.            $(GAMEDIR)
	$(COPY) $(DAT)\*.dat         $(GAMEDIR)
	$(COPY) $(DAT)\*.lev         $(GAMEDIR)
#	$(DEL) $(GAMEDIR)\makefile.
endif
#	$(COPY) *.tib                $(GAMEDIR)
	$(COPY) $(SSHR)\NetHack.cnf  $(GAMEDIR)
	$(COPY) recover.exe          $(GAMEDIR)
	$(COPY) $(DOC)\guideboo*.txt   $(GAMEDIR)
	$(COPY) $(DOC)\recover.txt $(GAMEDIR)
	$(COPY) $(DOC)\slashem.txt $(GAMEDIR)
	$(ECHO) install done > install.tag

#  The main target.


$(GAMEFILE): utility.tag $(ALLOBJ) $(GAME).lnk
	$(LINK) $(LFLAGS) -o$(GAME).exe $(GAME).lnk
	$(COPY) $(GAME).exe $(GAMEFILE)
	$(DEL) $(GAME).exe

$(GAME).lnk: $(ALLOBJ)
	@echo INPUT( $(VOBJ01) )> $@
	@echo INPUT( $(VOBJ02) )>> $@
	@echo INPUT( $(VOBJ03) )>> $@
	@echo INPUT( $(VOBJ04) )>> $@
	@echo INPUT( $(VOBJ05) )>> $@
	@echo INPUT( $(VOBJ06) )>> $@
	@echo INPUT( $(VOBJ07) )>> $@
	@echo INPUT( $(VOBJ08) )>> $@
	@echo INPUT( $(VOBJ09) )>> $@
	@echo INPUT( $(VOBJ10) )>> $@
	@echo INPUT( $(VOBJ11) )>> $@
	@echo INPUT( $(VOBJ12) )>> $@
	@echo INPUT( $(VOBJ13) )>> $@
	@echo INPUT( $(VOBJ14) )>> $@
	@echo INPUT( $(VOBJ15) )>> $@
	@echo INPUT( $(VOBJ16) )>> $@
	@echo INPUT( $(VOBJ17) )>> $@
	@echo INPUT( $(VOBJ18) )>> $@
	@echo INPUT( $(VOBJ19) )>> $@
	@echo INPUT( $(VOBJ20) )>> $@
	@echo INPUT( $(VOBJ21) )>> $@
	@echo INPUT( $(VOBJ22) )>> $@
	@echo INPUT( $(VOBJ23) )>> $@
	@echo INPUT( $(SOBJ)   )>> $@
	@echo INPUT( $(VVOBJ)  )>> $@

#
#  Housekeeping.
#

clean:
	$(DEL) *.o
	$(DEL) *.map
	$(DEL) dlb_main.exe

spotless: clean
	$(DEL) utility.tag
	$(DEL) install.tag
	$(DEL) dat.tag
	$(DEL) $(GAME).lnk
	$(DEL) makedefs.exe
	$(DEL) lev_comp.exe
	$(DEL) dgn_comp.exe
	$(DEL) $(SRC)\lev_lex.c
	$(DEL) $(SRC)\lev_yacc.c
	$(DEL) $(SRC)\dgn_lex.c
	$(DEL) $(SRC)\dgn_yacc.c
	$(DEL) recover.exe
	$(DEL) $(INCL)\onames.h
	$(DEL) $(INCL)\pm.h
	$(DEL) $(INCL)\vis_tab.h
	$(DEL) $(INCL)\pcvideo.h
	$(DEL) $(INCL)\pctiles.h
	$(DEL) $(INCL)\portio.h
	$(DEL) $(INCL)\tile.h
	$(DEL) monstr.c
	$(DEL) vis_tab.c
	$(DEL) $(SRC)\panic.c
	$(DEL) $(SRC)\makedefs.c
	$(DEL) $(SRC)\recover.c
	$(DEL) $(SRC)\lev_main.c
	$(DEL) $(SRC)\dlb_main.c
	$(DEL) $(SRC)\dgn_main.c
	$(DEL) $(SRC)\wintty.c
	$(DEL) $(SRC)\topl.c
	$(DEL) $(SRC)\getline.c
	$(DEL) $(SRC)\termcap.c
	$(DEL) $(SRC)\tile2bin.c
	$(DEL) $(SRC)\msdos.c
	$(DEL) $(SRC)\pckeys.c
	$(DEL) $(SRC)\video.c
	$(DEL) $(SRC)\sound.c
	$(DEL) $(SRC)\tilemap.c
	$(DEL) $(SRC)\gifread.c
	$(DEL) $(SRC)\ppmwrite.c
	$(DEL) $(SRC)\pcmain.c
	$(DEL) $(SRC)\pcunix.c
	$(DEL) $(SRC)\pcsys.c
	$(DEL) $(SRC)\tile.c
	$(DEL) $(INCL)\date.h
	$(DEL) $(INCL)\onames.h
	$(DEL) $(INCL)\pm.h
	$(DEL) $(INCL)\vis_tab.h
	$(DEL) vis_tab.c
	$(DEL) random.c
	$(DEL) *.lnk
	$(DEL) *.def
	$(DEL) *.map
	$(DEL) *.lev
	$(DEL) a.out
	$(DEL) tilemap.exe
	$(DEL) tile2bin.exe
	$(DEL) $(DAT)\data
	$(DEL) $(DAT)\*.lev
	$(DEL) $(DAT)\data
	$(DEL) $(DAT)\dungeon
	$(DEL) $(DAT)\options
	$(DEL) $(DAT)\oracles
	$(DEL) $(DAT)\rumors
	$(DEL) $(DAT)\quest.dat
	$(DEL) $(DLB)
	$(DEL) $(DAT)\dlb.lst
	$(DEL) $(DAT)\msdoshlp.txt
	$(DEL) $(DAT)\dlb_main.exe
	$(DEL) $(DAT)\lev_comp.exe
	$(DEL) $(DAT)\dgn_comp.exe
	$(DEL) sp_lev.tag
	$(DEL) $(PLANAR_TIB)
	$(DEL) $(OVERVIEW_TIB)


#
#  Secondary Targets.
#
#  The following include 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 : makedefs.exe
	-makedefs -v

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

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

monstr.c: makedefs.exe
	-makedefs -m

$(INCL)\vis_tab.h: makedefs.exe
	-makedefs -z

vis_tab.c: makedefs.exe
	-makedefs -z

$(INCL)\filename.h: makedefs.exe
	-makedefs -f

#
#  Makedefs Stuff
#

makedefs.exe:  $(MAKEOBJS)
	$(LINK) $(LFLAGS) -omakedefs.exe $(MAKEOBJS)

makedefs.c: $(UTIL)\makedefs.c
	$(COPY) $(UTIL)\makedefs.c .

makedefs.o:  $(CONFIG_H)	$(PERMONST_H)	   $(INCL)\objclass.h \
		$(INCL)\monsym.h   $(INCL)\qtext.h makedefs.c

#
#  Level Compiler Dependencies
#

lev_comp.exe:  $(SPLEVOBJS)
	$(LINK) $(LFLAGS) -olev_comp.exe $(SPLEVOBJS)

ifeq ($(YACC_LEX),Y)

lev_yacc.o:  $(HACK_H)	 $(SP_LEV_H)	lev_yacc.c
	$(CC) $(CFLAGS) -o$@ lev_yacc.c

else

lev_yacc.o:  $(HACK_H)	 $(SP_LEV_H) $(INCL)\lev_comp.h lev_yacc.c
	$(CC) $(CFLAGS) -o$@ lev_yacc.c

endif

lev_$(LEX).o:  $(HACK_H)   $(SP_LEV_H)	  $(INCL)\lev_comp.h \
	lev_$(LEX).c
	$(CC) $(CFLAGS) -o$@ lev_$(LEX).c

lev_main.c:  $(UTIL)\lev_main.c
	$(COPY) $(UTIL)\lev_main.c .

lev_main.o:  $(HACK_H) lev_main.c

$(INCL)\lev_comp.h: lev_yacc.c

ifeq ($(YACC_LEX),Y)

lev_yacc.c:  $(UTIL)\lev_comp.y
	$(YACC) -d $(DUTIL)/lev_comp.y
	$(COPY) $(YTABC) $@
	$(COPY) $(YTABH) $(INCL)\lev_comp.h
	$(DEL) $(YTABC)
	$(DEL) $(YTABH)

lev_$(LEX).c:  $(UTIL)\lev_comp.l
	$(LEX) $(DUTIL)/lev_comp.l
	$(COPY) $(LEXYYC) $@
	$(DEL) $(LEXYYC)
else

lev_yacc.c: $(SSHR)\lev_yacc.c
	$(COPY) $(SSHR)\lev_yacc.c $@

$(INCL)\lev_comp.h: $(SSHR)\lev_comp.h
	$(COPY) $(SSHR)\lev_comp.h $@
	touch $(DINCL)\lev_comp.h

lev_$(LEX).c: $(SSHR)\lev_lex.c
	$(COPY) $(SSHR)\lev_lex.c $@

endif



#
#  Dungeon Dependencies
#

dgn_comp.exe:  $(DGNCOMPOBJS)
	$(LINK) $(LFLAGS) -odgn_comp.exe $(DGNCOMPOBJS)

ifeq ($(YACC_LEX),Y)

dgn_yacc.o:  $(HACK_H)	 $(DGN_FILE_H)	dgn_yacc.c
	$(CC) $(CFLAGS) -o$@ dgn_yacc.c

else

dgn_yacc.o:  $(HACK_H)	 $(DGN_FILE_H)	$(INCL)\dgn_comp.h dgn_yacc.c
	$(CC) $(CFLAGS) -o$@ dgn_yacc.c

endif

dgn_$(LEX).o:  $(HACK_H)   $(DGN_FILE_H)  $(INCL)\dgn_comp.h \
	dgn_$(LEX).c
	$(CC) $(CFLAGS) -o$@ dgn_$(LEX).c

dgn_main.c:  $(UTIL)\dgn_main.c
	$(COPY) $(UTIL)\dgn_main.c .

dgn_main.o:  $(HACK_H)

$(INCL)\dgn_comp.h:  dgn_yacc.c

ifeq ($(YACC_LEX),Y)

dgn_yacc.c: $(UTIL)\dgn_comp.y
	$(YACC) -d $(DUTIL)/dgn_comp.y
	$(COPY) $(YTABC) $@
	$(COPY) $(YTABH) $(INCL)\dgn_comp.h
	$(DEL) $(YTABC)
	$(DEL) $(YTABH)

dgn_$(LEX).c:  $(UTIL)\dgn_comp.l
	$(LEX) $(DUTIL)/dgn_comp.l
	$(COPY) $(LEXYYC) $@
	$(DEL) $(LEXYYC)

else

dgn_yacc.c: $(SSHR)\dgn_yacc.c
	$(COPY) $(SSHR)\dgn_yacc.c $@

$(INCL)\dgn_comp.h: $(SSHR)\dgn_comp.h
	$(COPY) $(SSHR)\dgn_comp.h $@
	touch $(DINCL)\dgn_comp.h

dgn_$(LEX).c: $(SSHR)\dgn_lex.c
	$(COPY) $(SSHR)\dgn_lex.c $@
 
endif

#
#  Recover Utility
#

recover.exe:   $(RECOVOBJS)
	$(LINK) $(LFLAGS) -orecover.exe recover.o

recover.c:  $(UTIL)\recover.c
	$(COPY) $(UTIL)\recover.c .

recover.o:   $(CONFIG_H) recover.c
	$(CC) $(CFLAGS) -o$@ recover.c

#
#  Other Util Dependencies.
#

alloc.o: $(CONFIG_H)	 alloc.c
	$(CC) $(CFLAGS) -oalloc.o alloc.c

drawing.o: $(CONFIG_H) drawing.c
	$(CC) $(CFLAGS) -odrawing.o drawing.c

decl.o: $(CONFIG_H) decl.c
	$(CC) $(CFLAGS) -odecl.o decl.c

monst.o: $(CONFIG_H)	     $(PERMONST_H)	$(ESHK_H)	   \
	$(EPRI_H)	      $(VAULT_H)	 $(INCL)\monsym.h   \
	$(INCL)\color.h	 monst.c
	$(CC) $(CFLAGS) -omonst.o monst.c

objects.o: $(CONFIG_H)	      $(INCL)\obj.h	 $(INCL)\objclass.h \
	$(INCL)\prop.h	    $(INCL)\color.h    objects.c
	$(CC) $(CFLAGS) -oobjects.o objects.c

panic.c:  $(UTIL)\panic.c
	$(COPY) $(UTIL)\panic.c .

panic.o:   $(CONFIG_H)	  panic.c

random.c: $(SSHR)\random.c
	$(COPY) $(SSHR)\random.c .

random.o: random.c
	$(CC) $(CFLAGS) -orandom.o random.c

DATABASE = $(DAT)\data.base

dat.tag: $(DAT)\data	     $(DAT)\rumors	 $(DAT)\dungeon \
	$(DAT)\oracles	    $(DAT)\quest.dat	sp_lev.tag	$(DLB)
	$(ECHO) dat done >dat.tag

$(DAT)\data:	 utility.tag	$(DATABASE)
	-makedefs -d

$(DAT)\rumors:	     utility.tag    $(DAT)\rumors.tru	$(DAT)\rumors.fal
	-makedefs -r

$(DAT)\quest.dat: utility.tag  $(DAT)\quest.txt
	-makedefs -q

$(DAT)\oracles:	     utility.tag    $(DAT)\oracles.txt
	-makedefs -h

sp_lev.tag: utility.tag     $(DAT)\beholder.des $(DAT)\bigroom.des \
	$(DAT)\blkmar.des   $(DAT)\castle.des   $(DAT)\caves.des \
	$(DAT)\darkelf.des  $(DAT)\dragons.des  $(DAT)\endgame.des \
	$(DAT)\gehennom.des $(DAT)\giants.des   $(DAT)\guild.des \
	$(DAT)\knox.des     $(DAT)\kobold-1.des $(DAT)\kobold-2.des \
	$(DAT)\lich.des     $(DAT)\mall-1.des   $(DAT)\mall-2.des \
	$(DAT)\medusa.des   $(DAT)\sokoban.des \
	$(DAT)\mines.des    $(DAT)\mtemple.des  $(DAT)\newmall.des \
	$(DAT)\nymph.des    $(DAT)\oracle.des   $(DAT)\rats.des \
	$(DAT)\sea.des      $(DAT)\spiders.des  $(DAT)\stor-1.des \
	$(DAT)\stor-2.des   $(DAT)\stor-3.des   $(DAT)\tomb.des \
	$(DAT)\tower.des    $(DAT)\yendor.des \
	$(DAT)\arch.des     $(DAT)\barb.des 	$(DAT)\caveman.des \
	$(DAT)\dopp.des     $(DAT)\elf.des 	$(DAT)\flame.des \
	$(DAT)\gnome.des    $(DAT)\healer.des 	$(DAT)\ice.des \
	$(DAT)\knight.des   $(DAT)\lycn.des     $(DAT)\monk.des \
	$(DAT)\necro.des    $(DAT)\priest.des   $(DAT)\rogue.des \
	$(DAT)\samurai.des  $(DAT)\tourist.des  $(DAT)\slayer.des \
	$(DAT)\valkyrie.des $(DAT)\wizard.des   $(DAT)\yeoman.des \
	$(DAT)\hobbit.des   $(DAT)\frnknstn.des $(DAT)\dwarf.des \
	$(DAT)\nightmar.des

	lev_comp $(DDAT)/beholder.des
	lev_comp $(DDAT)/bigroom.des
	lev_comp $(DDAT)/blkmar.des
	lev_comp $(DDAT)/castle.des
	lev_comp $(DDAT)/caves.des
	lev_comp $(DDAT)/darkelf.des
	lev_comp $(DDAT)/dragons.des
	lev_comp $(DDAT)/endgame.des
	lev_comp $(DDAT)/gehennom.des
	lev_comp $(DDAT)/giants.des
	lev_comp $(DDAT)/guild.des
	lev_comp $(DDAT)/knox.des
	lev_comp $(DDAT)/kobold-1.des
	lev_comp $(DDAT)/kobold-2.des
	lev_comp $(DDAT)/lich.des
	lev_comp $(DDAT)/mall-1.des
	lev_comp $(DDAT)/mall-2.des
	lev_comp $(DDAT)/medusa.des
	lev_comp $(DDAT)/sokoban.des
	lev_comp $(DDAT)/mines.des
	lev_comp $(DDAT)/mtemple.des
	lev_comp $(DDAT)/newmall.des
	lev_comp $(DDAT)/nymph.des
	lev_comp $(DDAT)/oracle.des
	lev_comp $(DDAT)/rats.des
	lev_comp $(DDAT)/sea.des
	lev_comp $(DDAT)/spiders.des
	lev_comp $(DDAT)/stor-1.des
	lev_comp $(DDAT)/stor-2.des
	lev_comp $(DDAT)/stor-3.des
	lev_comp $(DDAT)/tomb.des
	lev_comp $(DDAT)/tower.des
	lev_comp $(DDAT)/yendor.des
	lev_comp $(DDAT)/arch.des
	lev_comp $(DDAT)/barb.des
	lev_comp $(DDAT)/caveman.des
	lev_comp $(DDAT)/dopp.des
	lev_comp $(DDAT)/elf.des
	lev_comp $(DDAT)/flame.des
	lev_comp $(DDAT)/gnome.des
	lev_comp $(DDAT)/healer.des
	lev_comp $(DDAT)/ice.des
	lev_comp $(DDAT)/knight.des
	lev_comp $(DDAT)/lycn.des
	lev_comp $(DDAT)/monk.des
	lev_comp $(DDAT)/necro.des
	lev_comp $(DDAT)/priest.des
	lev_comp $(DDAT)/rogue.des
	lev_comp $(DDAT)/samurai.des
	lev_comp $(DDAT)/tourist.des
	lev_comp $(DDAT)/slayer.des
	lev_comp $(DDAT)/valkyrie.des
	lev_comp $(DDAT)/wizard.des
	lev_comp $(DDAT)/yeoman.des
	lev_comp $(DDAT)/hobbit.des
	lev_comp $(DDAT)/frnknstn.des
	lev_comp $(DDAT)/dwarf.des
	lev_comp $(DDAT)/nightmar.des
	$(COPY) .\*.lev $(DAT)
	$(ECHO) sp_levs done > sp_lev.tag
	
$(DAT)\dungeon:	  utility.tag  $(DAT)\dungeon.def
	@copy $(SRC)\dgn_comp.exe $(DAT)\dgn_comp.exe
	-makedefs -e
	cd $(DAT) ; dgn_comp dungeon.pdf 
	cd $(SRC)
#
# DLB stuff
#
$(DLB):	dlb_main.exe
	$(ECHO) data >$(DAT)\dlb.lst
	$(ECHO) dungeon >>$(DAT)\dlb.lst
	$(ECHO) oracles >>$(DAT)\dlb.lst
	$(ECHO) options >>$(DAT)\dlb.lst
	$(ECHO) quest.dat >>$(DAT)\dlb.lst
	$(ECHO) rumors >>$(DAT)\dlb.lst
	$(ECHO) help >>$(DAT)\dlb.lst
	$(ECHO) hh >>$(DAT)\dlb.lst
	$(ECHO) cmdhelp >>$(DAT)\dlb.lst
	$(ECHO) history >>$(DAT)\dlb.lst
	$(ECHO) opthelp >>$(DAT)\dlb.lst
	$(ECHO) wizhelp >>$(DAT)\dlb.lst
	$(ECHO) license >>$(DAT)\dlb.lst
	cd $(DAT) ; $(LS) *.lev >>dlb.lst
# The line above works, but the line below doesn't.  I can't figure-out why.
	cd $(DAT) ; dlb_main cvIf dlb.lst nhdat
	cd $(SRC)

dlb_main.exe: $(DLBOBJS)
	$(LINK) $(LFLAGS) -odlb_main.exe $(DLBOBJS)
	$(COPY) $@ $(DAT)\dlb_main.exe


dlb_main.o: $(UTIL)\dlb_main.c $(INCL)\config.h $(DLB_H)
	$(COPY) $(UTIL)\dlb_main.c .
	$(CC) $(CFLAGS) -odlb_main.o dlb_main.c

# Game Dependencies

# sys/share
main.o:	 $(HACK_H) $(DLB_H) $(SSHR)\pcmain.c
	$(COPY) $(SSHR)\pcmain.c .
	$(CC) $(CFLAGS) -o$@ pcmain.c

unix.o:	 $(HACK_H) $(SSHR)\pcunix.c
	$(COPY) $(SSHR)\pcunix.c .
	$(CC) $(CFLAGS) -o$@ pcunix.c

sys.o : $(HACK_H) $(SSHR)\pcsys.c
	$(COPY) $(SSHR)\pcsys.c .
	$(CC) $(CFLAGS) -o$@ pcsys.c

# sys/winnt
winnt.o : $(HACK_H)  $(WSYS)\winnt.c
	$(COPY) $(WSYS)\winnt.c .
	$(COPY) $(WSYS)\win32api.h ..\include
	$(CC) $(CFLAGS) -o$@ winnt.c

nttty.o : $(HACK_H)  $(WSYS)\nttty.c
	$(COPY) $(WSYS)\nttty.c .
	$(CC) $(CFLAGS) -o$@ nttty.c


# win/tty
getline.o : $(HACK_H) $(INCL)\wintty.h $(WIN)\getline.c
	$(COPY) $(WIN)\getline.c .
	$(CC) $(CFLAGS) -o$@ getline.c

termcap.o : $(CONFIG_H) $(WIN)\termcap.c
	$(COPY) $(WIN)\termcap.c .
	$(CC) $(CFLAGS) -o$@ termcap.c

topl.o : $(CONFIG_H) $(WIN)\topl.c
	$(COPY) $(WIN)\topl.c .
	$(CC) $(CFLAGS) -o$@ topl.c

wintty.o : $(CONFIG_H) $(WIN)\wintty.c
	$(COPY) $(WIN)\wintty.c .
	$(CC) $(CFLAGS) -o$@ wintty.c

# src dependencies
allmain.o:  $(HACK_H)
alloc.o:    $(CONFIG_H)
apply.o:    $(HACK_H) $(INCL)\edog.h
artifact.o: $(HACK_H) $(INCL)\artifact.h $(INCL)\artilist.h
attrib.o:   $(HACK_H) $(INCL)\artifact.h
ball.o:	    $(HACK_H)
bones.o:    $(HACK_H) $(INCL)\lev.h
botl.o:	    $(HACK_H)
cmd.o:	    $(HACK_H) $(INCL)\func_tab.h
dbridge.o:  $(HACK_H)
decl.o:	    $(HACK_H) $(INCL)\quest.h
detect.o:   $(HACK_H) $(INCL)\artifact.h
dig.o:      $(HACK_H)
display.o:  $(HACK_H)
dlb.o:      $(HACK_H) $(DLB_H)
do.o:	    $(HACK_H) $(INCL)\lev.h
do_name.o:  $(HACK_H)
do_wear.o:  $(HACK_H)
dog.o:	    $(HACK_H) $(INCL)\edog.h
dogmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
dokick.o:   $(HACK_H) $(ESHK_H)
dothrow.o:  $(HACK_H)
drawing.o:  $(HACK_H) $(INCL)\termcap.h
dungeon.o:  $(HACK_H) $(INCL)\dgn_file.h
eat.o:	    $(HACK_H)
end.o:	    $(HACK_H) $(ESHK_H)
engrave.o:  $(HACK_H) $(INCL)\lev.h
exper.o:    $(HACK_H)
explode.o:  $(HACK_H)
extralev.o:  $(HACK_H)
files.o:     $(HACK_H)
fountain.o:  $(HACK_H)
gypsy.o:     $(HACK_H)
hack.o:	     $(HACK_H)
hacklib.o:   $(HACK_H)
invent.o:    $(HACK_H) $(INCL)\artifact.h
light.o:     $(HACK_H) $(INCL)\lev.h
lock.o:	     $(HACK_H)
mail.o:	     $(HACK_H) $(INCL)\mail.h
makemon.o:   $(HACK_H) $(EPRI_H) $(EMIN_H)
mcastu.o:    $(HACK_H)
mhitm.o:     $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
mhitu.o:     $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
minion.o:    $(HACK_H) $(EMIN_H) $(EPRI_H)
mklev.o:     $(HACK_H)
mkmap.o:     $(HACK_H) $(INCL)\sp_lev.h
mkmaze.o:    $(HACK_H) $(INCL)\sp_lev.h
mkobj.o:     $(HACK_H) $(INCL)\artifact.h $(INCL)\prop.h
mkroom.o:    $(HACK_H)
mon.o:	     $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
mondata.o:   $(HACK_H) $(ESHK_H) $(EPRI_H)
monmove.o:   $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
monst.o:     $(CONFIG_H) $(PERM_H) $(ESHK_H) $(EPRI_H) \
	  $(INCL)\color.h $(INCL)\monsym.h $(INCL)\vault.h
mplayer.o:   $(HACK_H)
mthrowu.o:   $(HACK_H)
muse.o:	     $(HACK_H)
music.o:     $(HACK_H)
o_init.o:    $(HACK_H)
objects.o:   $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h \
	       $(INCL)\prop.h $(INCL)\color.h
objnam.o:    $(HACK_H)
options.o:   $(CONFIG_H) $(HACK_H) $(INCL)\objclass.h $(INCL)\flag.h \
	      $(INCL)\termcap.h
pager.o:     $(HACK_H)
pickup.o:    $(HACK_H)
pline.o:     $(HACK_H) $(EPRI_H)
polyself.o:  $(HACK_H)
potion.o:    $(HACK_H)
pray.o:	     $(HACK_H) $(EPRI_H)
priest.o:    $(HACK_H) $(INCL)\mfndpos.h $(ESHK_H) $(EPRI_H) $(EMIN_H)
quest.o:     $(HACK_H) $(INCL)\quest.h $(INCL)\qtext.h
questpgr.o:  $(HACK_H) $(INCL)\qtext.h
read.o:	     $(HACK_H)
rect.o:	     $(HACK_H)
restore.o:   $(HACK_H) $(INCL)\lev.h $(INCL)\termcap.h $(INCL)\quest.h
rip.o:	     $(HACK_H)
rnd.o:	     $(HACK_H)
rumors.o:    $(HACK_H)
save.o:	     $(HACK_H) $(INCL)\lev.h $(INCL)\quest.h
shk.o:	     $(HACK_H) $(ESHK_H)
shknam.o:    $(HACK_H) $(ESHK_H)
sit.o:	     $(HACK_H) $(INCL)\artifact.h
sounds.o:    $(HACK_H) $(INCL)\edog.h
sp_lev.o:    $(HACK_H) $(INCL)\sp_lev.h $(INCL)\align.h $(INCL)\rect.h
spell.o:     $(HACK_H)
steal.o:     $(HACK_H)
steed.o:     $(HACK_H)
teleport.o:  $(HACK_H)
tech.o:	     $(HACK_H) $(INCL)\tech.h
tile.o:	     $(HACK_H) $(TILE_H)
timeout.o:   $(HACK_H)
topten.o:    $(HACK_H)
track.o:     $(HACK_H)
trap.o:	     $(HACK_H)
u_init.o:    $(HACK_H)
uhitm.o:     $(HACK_H)
vault.o:     $(HACK_H) $(INCL)\vault.h
version.o:   $(HACK_H) $(INCL)\patchlevel.h
vision.o:    $(HACK_H) $(INCL)\vis_tab.h
weapon.o:    $(HACK_H)
were.o:	     $(HACK_H)
wield.o:     $(HACK_H)
windows.o:   $(HACK_H) $(INCL)\wintty.h
wizard.o:    $(HACK_H) $(INCL)\qtext.h
worm.o:	     $(HACK_H) $(INCL)\lev.h
worn.o:	     $(HACK_H)
write.o:     $(HACK_H)
zap.o:	     $(HACK_H)

# end of file
