#
#==============================================================================
# This is used for building two versions of NetHack:
+#
# A tty port utilizing the Win32 Console I/O subsystem, Console
# NetHack;
+#
# A Win32 native port built on the Windows API, Graphical NetHack or
# NetHackW.
#
# Exe File Info.
#==========================================
-# Yacc/Lex ... if you got 'em.
-#
-# If you have yacc and lex programs (or work-alike such as bison
-# and flex), comment out the upper two macros and uncomment
-# the lower two.
-#
-
-DO_YACC = YACC_MSG
-DO_LEX = LEX_MSG
-#DO_YACC = YACC_ACT
-#DO_LEX = LEX_ACT
-
-# - Specify your yacc and lex programs (or work-alikes) here.
-
-#YACC = bison -y
-YACC = byacc
-#YACC = yacc
-
-#LEX = lex
-LEX = flex
-
#
-# - Specify your flex skeleton file (if needed).
-#
-
-FLEXSKEL =
-#FLEXSKEL = -S../tools/flex.ske
-
-YTABC = y_tab.c
-YTABH = y_tab.h
-LEXYYC = lexyy.c
-
+# For the level compiler bits,
+# we just defer to win\win32\dgnstuff.mak
+# and win\win32\levstuff.mak
+#
#
# Optional high-quality BSD random number generation routines
# (see pcconf.h). Set to nothing if not used.
MAPFILE= /MAP:"$(O)$(GAME).MAP"
INCLDIR= /I..\include
-ldebug=/DEBUG
-cdebug = -Zi -Od
-
!IF ("$(ldebug)" != "")
!IF ("$(ldebug)" != "/RELEASE")
ldebug = /DEBUG
!IF ("$(GRAPHICAL)"=="Y")
cflagsGame = $(cdebug) $(cflags2) $(guiflags) $(INCLDIR) \
- $(WINPFLAG) $(DLBFLG)
-lflagsGame = $(ldebug) $(lflags) $(guilibs) $(GAMEPDBFILE) $(GAMEMAPFILE)
+ $(WINPFLAG) $(DLBFLG) $(GAMEPDBFILE) $(GAMEMAPFILE)
+lflagsGame = $(ldebug) $(lflags) $(guilibs)
!ELSE
cflagsGame = $(cdebug) $(cflags2) $(conflags) $(INCLDIR) \
- $(WINPFLAG) $(DLBFLG)
-lflagsGame = $(ldebug) $(lflags) $(conlibs) $(GAMEPDBFILE) $(GAMEMAPFILE)
+ $(WINPFLAG) $(DLBFLG) $(GAMEPDBFILE) $(GAMEMAPFILE)
+lflagsGame = $(ldebug) $(lflags) $(conlibs)
!ENDIF
MAKESRC = $(U)makedefs.c
-SPLEVSRC = $(U)lev_yacc.c $(U)lev_$(LEX).c $(U)lev_main.c $(U)panic.c
-
-DGNCOMPSRC = $(U)dgn_yacc.c $(U)dgn_$(LEX).c $(U)dgn_main.c
-
MAKEOBJS = $(O)makedefs.o $(O)monst.o $(O)objects.o
-SPLEVOBJS = $(O)lev_yacc.o $(O)lev_$(LEX).o $(O)lev_main.o \
+#SPLEVOBJS = $(O)lev_yacc.o $(O)lev_lex.o $(O)lev_main.o \
+# $(O)alloc.o $(O)decl.o $(O)drawing.o \
+# $(O)monst.o $(O)objects.o $(O)panic.o
+
+SPLEVOBJS = $(O)lev_yacc.o $(O)lev_lex.o $(O)lev_main.o \
$(O)alloc.o $(O)decl.o $(O)drawing.o \
$(O)monst.o $(O)objects.o $(O)panic.o
-DGNCOMPOBJS = $(O)dgn_yacc.o $(O)dgn_$(LEX).o $(O)dgn_main.o \
+DGNCOMPOBJS = $(O)dgn_yacc.o $(O)dgn_lex.o $(O)dgn_main.o \
$(O)alloc.o $(O)panic.o
+
RECOVOBJS = $(O)recover.o
TILEFILES = $(WSHR)\monsters.txt $(WSHR)\objects.txt $(WSHR)\other.txt
install: envchk $(GAME) $(O)install.tag
@echo Done.
-
$(O)install.tag: $(DAT)\data $(DAT)\rumors $(DAT)\dungeon \
$(DAT)\oracles $(DAT)\quest.dat $(O)sp_lev.tag $(DLB)
! IF ("$(USE_DLB)"=="Y")
$(U)makedefs -z
$(DAT)\engrave: $(DAT)\engrave.txt $(U)makedefs.exe
- ../util/makedefs -s
+ ..\util\makedefs -s
$(DAT)\epitaph: $(DAT)\epitaph.txt $(U)makedefs.exe
- ../util/makedefs -s
+ ..\util\makedefs -s
$(DAT)\bogusmon: $(DAT)\bogusmon.txt $(U)makedefs.exe
- ../util/makedefs -s
+ ..\util\makedefs -s
#==========================================
..\..\util\uudecode.exe splash.uu
chdir ..\..\src
-#==========================================
+#=================================================
# Level Compiler Stuff
-#==========================================
+#=================================================
+#
+# defer to the steps in ..\win\win32\levstuff.mak
+#
-LEVCFLAGS=-c -nologo -DWINVER=0x0400 -DWIN32 -D_WIN32 \
- -D_MT -MT -I..\include -nologo -Z7 -Od -DDLB
+$(U)lev_yacc.c $(INCL)\lev_comp.h: $(U)lev_comp.y
+ nmake -nologo -f ..\win\win32\levstuff.mak default
-$(U)levcomp.exe: $(SPLEVOBJS)
- @echo Linking $@...
- @$(link) $(lflagsUtil) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
- $(SPLEVOBJS:^ =^
- )
-<<
+LEVCFLAGS=-c -nologo -DWIN32 -D_WIN32 -I$(INCL) -nologo -Z7 -Od -DDLB
$(O)lev_yacc.o: $(HACK_H) $(SP_LEV_H) $(INCL)\lev_comp.h $(U)lev_yacc.c
- @$(CC) $(LEVCFLAGS) -W0 -Fo$@ $(U)lev_yacc.c
+ $(CC) $(LEVCFLAGS) -W0 -Fo$@ $(U)lev_yacc.c
-$(O)lev_$(LEX).o: $(HACK_H) $(INCL)\lev_comp.h $(SP_LEV_H) \
- $(U)lev_$(LEX).c
- @$(CC) $(LEVCFLAGS) -W0 -Fo$@ $(U)lev_$(LEX).c
+$(O)lev_lex.o: $(HACK_H) $(INCL)\lev_comp.h $(SP_LEV_H) \
+ $(U)lev_lex.c
+ $(CC) $(LEVCFLAGS) -W0 -Fo$@ $(U)lev_lex.c
$(O)lev_main.o: $(U)lev_main.c $(HACK_H) $(SP_LEV_H)
- @$(CC) $(LEVCFLAGS) -W0 -Fo$@ $(U)lev_main.c
-
-
-$(U)lev_yacc.c $(INCL)\lev_comp.h : $(U)lev_comp.y
-! IF "$(DO_YACC)"=="YACC_ACT"
- chdir $(UTIL)
- $(YACC) -d lev_comp.y
- copy $(YTABC) lev_yacc.c
- copy $(YTABH) $(INCL)\lev_comp.h
- @del $(YTABC)
- @del $(YTABH)
- chdir $(SRC)
-! ELSE
- @echo $(U)lev_comp.y has changed.
- @echo To update $(U)lev_yacc.c and $(INCL)\lev_comp.h run $(YACC).
- @echo ---
- @echo For now, we will copy the prebuilt lev_yacc.c and
- @echo lev_comp.h from $(SSYS) into $(UTIL) and use them.
- @copy $(SSYS)\lev_yacc.c $(U)lev_yacc.c >nul
- @copy $(SSYS)\lev_comp.h $(INCL)\lev_comp.h >nul
- @echo /**/ >>$(U)lev_yacc.c
- @echo /**/ >>$(INCL)\lev_comp.h
-! ENDIF
+ $(CC) $(LEVCFLAGS) -W0 -Fo$@ $(U)lev_main.c
-$(U)lev_$(LEX).c: $(U)lev_comp.l
-! IF "$(DO_LEX)"=="LEX_ACT"
- chdir $(UTIL)
- $(LEX) $(FLEXSKEL) lev_comp.l
- copy $(LEXYYC) $@
- @del $(LEXYYC)
- chdir $(SRC)
-! ELSE
- @echo $(U)lev_comp.l has changed. To update $@ run $(LEX).
- @echo ---
- @echo For now, we will copy the prebuilt lev_lex.c
- @echo from $(SSYS) into $(UTIL) and use it.
- @copy $(SSYS)\lev_lex.c $@ >nul
- @echo /**/ >>$@
-! ENDIF
-
-#==========================================
-# Dungeon Compiler Stuff
-#==========================================
-
-$(U)dgncomp.exe: $(DGNCOMPOBJS)
- @echo Linking $@...
- @$(link) $(lflagsUtil) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
- $(DGNCOMPOBJS:^ =^
+$(U)levcomp.exe: $(SPLEVOBJS)
+ @echo Linking $@...
+ echo $(link)
+ echo $(lflagsUtil)
+ $(link) $(lflagsUtil) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
+ $(SPLEVOBJS:^ =^
)
<<
+#=================================================
+# Dungeon Compiler Stuff
+#=================================================
+#
+# defer to the steps in ..\win\win32\dgnstuff.mak
+#
+$(U)dgn_yacc.c $(INCL)\dgn_comp.h : $(U)dgn_comp.y
+ nmake -nologo -f ..\win\win32\dgnstuff.mak default
+
$(O)dgn_yacc.o: $(HACK_H) $(DGN_FILE_H) $(INCL)\dgn_comp.h $(U)dgn_yacc.c
@$(CC) $(LEVCFLAGS) -W0 -Fo$@ $(U)dgn_yacc.c
-$(O)dgn_$(LEX).o: $(HACK_H) $(DGN_FILE_H) $(INCL)\dgn_comp.h \
- $(U)dgn_$(LEX).c
- @$(CC) $(LEVCFLAGS) -W0 -Fo$@ $(U)dgn_$(LEX).c
+$(O)dgn_lex.o: $(HACK_H) $(DGN_FILE_H) $(INCL)\dgn_comp.h \
+ $(U)dgn_lex.c
+ @$(CC) $(LEVCFLAGS) -W0 -Fo$@ $(U)dgn_lex.c
$(O)dgn_main.o: $(HACK_H) $(U)dgn_main.c
@$(CC) $(LEVCFLAGS) -W0 -Fo$@ $(U)dgn_main.c
-$(U)dgn_yacc.c $(INCL)\dgn_comp.h : $(U)dgn_comp.y
-! IF "$(DO_YACC)"=="YACC_ACT"
- chdir $(UTIL)
- $(YACC) -d dgn_comp.y
- copy $(YTABC) dgn_yacc.c
- copy $(YTABH) $(INCL)\dgn_comp.h
- @del $(YTABC)
- @del $(YTABH)
- chdir $(SRC)
-! ELSE
- @echo $(U)dgn_comp.y has changed. To update dgn_yacc.c and
- @echo $(INCL)\dgn_comp.h run $(YACC).
- @echo ---
- @echo For now, we will copy the prebuilt $(U)dgn_yacc.c and
- @echo dgn_comp.h from $(SSYS) into $(UTIL) and use them.
- @copy $(SSYS)\dgn_yacc.c $(U)dgn_yacc.c >nul
- @copy $(SSYS)\dgn_comp.h $(INCL)\dgn_comp.h >nul
- @echo /**/ >>$(U)dgn_yacc.c
- @echo /**/ >>$(INCL)\dgn_comp.h
-! ENDIF
-
-$(U)dgn_$(LEX).c: $(U)dgn_comp.l
-! IF "$(DO_LEX)"=="LEX_ACT"
- chdir $(UTIL)
- $(LEX) $(FLEXSKEL) dgn_comp.l
- copy $(LEXYYC) $@
- @del $(LEXYYC)
- chdir $(SRC)
-! ELSE
- @echo $(U)dgn_comp.l has changed. To update $@ run $(LEX).
- @echo ---
- @echo For now, we will copy the prebuilt dgn_lex.c
- @echo from $(SSYS) into $(UTIL) and use it.
- @copy $(SSYS)\dgn_lex.c $@ >nul
- @echo /**/ >>$@
-! ENDIF
+$(U)dgncomp.exe: $(DGNCOMPOBJS)
+ @echo Linking $@...
+ @$(link) $(lflagsUtil) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
+ $(DGNCOMPOBJS:^ =^
+ )
+<<
-#==========================================
+#=================================================
# Create directory for holding object files
-#==========================================
+#=================================================
$(O)obj.tag:
@if not exist $(OBJ)\*.* echo creating directory $(OBJ)
#==========================================
#===========================================
-# Header files NOT distributed in ..\include
+# Header files NOT distributed in $(INCL)
#===========================================
$(INCL)\win32api.h: $(NTSYS)\win32api.h
if exist $(O)sp_lev.tag del $(O)sp_lev.tag
if exist $(O)uudecode.MAP del $(O)uudecode.MAP
if exist $(O)uudecode.PDB del $(O)uudecode.PDB
+ rem
+ rem defer to the steps in ..\win\win32\levstuff.mak
+ rem
+ nmake -nologo -f ..\win\win32\levstuff.mak clean
+ rem
+ rem defer to the steps in ..\win\win32\dgnstuff.mak
+ rem
+ nmake -nologo -f ..\win\win32\dgnstuff.mak clean
! IF ("$(WINPFLAG)"!="")
if exist $(TILEBMP16) del $(TILEBMP16)