From: nhmall Date: Thu, 29 Nov 2018 21:27:02 +0000 (-0500) Subject: Windows Makefile updates (first batch) X-Git-Tag: nmake-explicit-path~121 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f2da47a347103b32086a8acb0ce63e7d463cd9bd;p=nethack Windows Makefile updates (first batch) --- diff --git a/sys/winnt/Makefile.gcc b/sys/winnt/Makefile.gcc index 1cc6dea87..76b140fd6 100644 --- a/sys/winnt/Makefile.gcc +++ b/sys/winnt/Makefile.gcc @@ -139,17 +139,29 @@ TARGET_CPU=x86 # Source directories. Makedefs hardcodes these, don't change them. # -INCL = ../include # NetHack include files -DAT = ../dat # NetHack data files -DOC = ../doc # NetHack documentation files -UTIL = ../util # Utility source -SRC = ../src # Main source -SSYS = ../sys/share # Shared system files -MSWSYS = ../sys/winnt # mswin specific files -TTY = ../win/tty # window port files (tty) -MSWIN = ../win/win32 # window port files (win32) -WCURSES = ../win/curses # window port files (curses) -WSHR = ../win/share # Tile support files +# INCL - NetHack include files +# DAT - NetHack data files +# DOC - NetHack documentation files +# UTIL - Utility source +# SRC - Main source +# SSYS - Shared system files +# MSWSYS - mswin specific files +# TTY - window port files (tty) +# MSWIN - window port files (win32) +# WCURSES - window port files (curses) +# WSHR - Tile support files + +INCL =../include +DAT =../dat +DOC =../doc +UTIL =../util +SRC =../src +SSYS =../sys/share +MSWSYS =../sys/winnt +TTY =../win/tty +MSWIN =../win/win32 +WCURSES =../win/curses +WSHR =../win/share # # Object directory. @@ -157,14 +169,6 @@ WSHR = ../win/share # Tile support files OBJ = o -cc = gcc -cxx = g++ -rc = windres -link = gcc -ifeq "$(WANT_WIN_QT4)" "Y" - link = g++ -endif - # # Optional high-quality BSD random number generation routines # (see pcconf.h). Set to nothing if not used. @@ -198,82 +202,6 @@ endif #ZLIB = zlib.lib -#========================================== -#========================================== -# Setting up the compiler and linker -# macros. All builds include the base ones. -#========================================== -#========================================== - -cflags = -mms-bitfields -lflags = -ifeq "$(DEBUGINFO)" "Y" -cdebug = -g -linkdebug = -g -else -cdebug = -linkdebug = -endif - -CFLAGSBASE = -c $(cflags) -I$(INCL) $(WINPINC) $(cdebug) -#LFLAGSBASEC = $(linkdebug) -#LFLAGSBASEG = $(linkdebug) -mwindows - -conlibs = -lgdi32 -lwinmm -guilibs = -lcomctl32 -lwinmm -ifeq "$(WANT_WIN_QT4)" "Y" - # Might be either Qt 4 or Qt 5 - ifeq "$(HAVE_QT5)" "Y" - guilibs += $(QT4_DIRECTORY)/lib/libQt5Core.a - guilibs += $(QT4_DIRECTORY)/lib/libQt5Gui.a - guilibs += $(QT4_DIRECTORY)/lib/libQt5Widgets.a - conlibs += $(QT4_DIRECTORY)/lib/libQt5Core.a - else - guilibs += $(QT4_DIRECTORY)/lib/libQtCore4.a - guilibs += $(QT4_DIRECTORY)/lib/libQtGui4.a - conlibs += $(QT4_DIRECTORY)/lib/libQtCore4.a - endif -endif - -#========================================== -# Extra files needed for some ports -#========================================== -EXTRA_FILES = -ifeq "$(WANT_WIN_QT4)" "Y" - ifeq "$(HAVE_QT5)" "Y" - EXTRA_FILES += $(GAMEDIR)/Qt5Core.dll - EXTRA_FILES += $(GAMEDIR)/Qt5Gui.dll - EXTRA_FILES += $(GAMEDIR)/Qt5Widgets.dll - else - # TODO: define QT 4 DLLs here - EXTRA_FILES += $(GAMEDIR)/QtCore4.dll - EXTRA_FILES += $(GAMEDIR)/QtGui4.dll - endif - EXTRA_FILES += $(GAMEDIR)/rip.xpm -endif - -#========================================== -# Util builds -#========================================== - -CFLAGSU = $(CFLAGSBASE) $(WINPFLAG) $(DLBFLG) -LFLAGSU = $(LFLAGSBASEC) - -#========================================== -# - Game build -#========================================== - -CFLAGS = $(CFLAGSBASE) $(WINPFLAG) $(DLBFLG) -lflags = $(LFLAGSBASEC) $(linkdebuf) - -CXXFLAGS = $(CFLAGS) - -ifeq "$(USE_DLB)" "Y" -DLB = nhdat -else -DLB = -endif - #========================================== #================ MACROS ================== #========================================== @@ -359,7 +287,7 @@ VOBJ24 = $(O)track.o $(O)trap.o $(O)u_init.o $(O)uhitm.o VOBJ25 = $(O)vault.o $(O)vis_tab.o $(O)vision.o $(O)weapon.o VOBJ26 = $(O)were.o $(O)wield.o $(O)windows.o $(O)wizard.o VOBJ27 = $(O)worm.o $(O)worn.o $(O)write.o $(O)zap.o -VOBJ28 = $(O)win10.o +#VOBJ28 = $(O)win10.o DLBOBJ = $(O)dlb.o @@ -367,23 +295,23 @@ REGEX = $(O)cppregex.o TTYOBJ = $(O)topl.o $(O)getline.o $(O)wintty.o -!IFNDEF ADD_CURSES -CURSESOBJ= -!ELSE +ifeq "$(ADD_CURSES)" "Y" CURSESOBJ= $(O)cursdial.o $(O)cursinit.o $(O)cursinvt.o $(O)cursmain.o \ $(O)cursmesg.o $(O)cursmisc.o $(O)cursstat.o $(O)curswins.o -!ENDIF +else +CURSESOBJ= +endif SOBJ = $(O)winnt.o $(O)pcsys.o $(O)pcunix.o \ $(SOUND) $(O)pcmain.o $(O)nhlan.o OBJS = $(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) $(REGEX) \ - $(CURSESOBJ) + $(VOBJ06) $(VOBJ07) $(VOBJ08) $(VOBJ09) $(VOBJ10) \ + $(VOBJ11) $(VOBJ12) $(VOBJ13) $(VOBJ14) $(VOBJ15) \ + $(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ19) $(VOBJ20) \ + $(VOBJ21) $(VOBJ22) $(VOBJ23) $(VOBJ24) $(VOBJ25) \ + $(VOBJ26) $(VOBJ27) $(VOBJ28) $(VOBJ29) $(REGEX) \ + $(CURSESOBJ) GUIOBJ = $(O)mhaskyn.o $(O)mhdlg.o \ $(O)mhfont.o $(O)mhinput.o $(O)mhmain.o $(O)mhmap.o \ @@ -457,8 +385,7 @@ PDCOBJS = $(O)pdcclip.o $(O)pdcdisp.o $(O)pdcgetsc.o $(O)pdckbd.o $(O)pdcscrn.o PDCLIB = $(O)pdcurses.a -PDCINCL = /I$(PDCURSES_TOP) /I$(PDCSRC) /I$(PDCWINCON) - +PDCINCL = -I$(PDCURSES_TOP) -I$(PDCSRC) -I$(PDCWINCON) else PDCLIB = endif @@ -501,7 +428,7 @@ TILE_H = ../win/share/tile.h DATABASE = $(DAT)/data.base #========================================== -# More compiler setup post-macros +# More compiler setup macros #========================================== # ifeq "$(ADD_CURSES)" "Y" @@ -514,9 +441,93 @@ CURSESINCL= endif ifneq "$(ADD_CURSES)" "Y" -INCLDIR= /I../include /I../sys/winnt +INCLDIR=-I../include -I../sys/winnt +else +INCLDIR=-I../include -I../sys/winnt -I$(CURSESINCL) +endif + +#========================================== +#========================================== +# Setting up the compiler and linker +# macros. All builds include the base ones. +#========================================== +#========================================== + +cc = gcc +cxx = g++ +rc = windres +link = gcc +ifeq "$(WANT_WIN_QT4)" "Y" + link = g++ +endif + +cflags = -mms-bitfields $(INCLDIR) +lflags = +ifeq "$(DEBUGINFO)" "Y" +cdebug = -g +linkdebug = -g +else +cdebug = +linkdebug = +endif + +CFLAGSBASE = -c $(cflags) $(WINPINC) $(cdebug) +#LFLAGSBASEC = $(linkdebug) +#LFLAGSBASEG = $(linkdebug) -mwindows + +conlibs = -lgdi32 -lwinmm +guilibs = -lcomctl32 -lwinmm +ifeq "$(WANT_WIN_QT4)" "Y" + # Might be either Qt 4 or Qt 5 + ifeq "$(HAVE_QT5)" "Y" + guilibs += $(QT4_DIRECTORY)/lib/libQt5Core.a + guilibs += $(QT4_DIRECTORY)/lib/libQt5Gui.a + guilibs += $(QT4_DIRECTORY)/lib/libQt5Widgets.a + conlibs += $(QT4_DIRECTORY)/lib/libQt5Core.a + else + guilibs += $(QT4_DIRECTORY)/lib/libQtCore4.a + guilibs += $(QT4_DIRECTORY)/lib/libQtGui4.a + conlibs += $(QT4_DIRECTORY)/lib/libQtCore4.a + endif +endif + +#========================================== +# Extra files needed for some ports +#========================================== +EXTRA_FILES = +ifeq "$(WANT_WIN_QT4)" "Y" + ifeq "$(HAVE_QT5)" "Y" + EXTRA_FILES += $(GAMEDIR)/Qt5Core.dll + EXTRA_FILES += $(GAMEDIR)/Qt5Gui.dll + EXTRA_FILES += $(GAMEDIR)/Qt5Widgets.dll + else + # TODO: define QT 4 DLLs here + EXTRA_FILES += $(GAMEDIR)/QtCore4.dll + EXTRA_FILES += $(GAMEDIR)/QtGui4.dll + endif + EXTRA_FILES += $(GAMEDIR)/rip.xpm +endif + +#========================================== +# Util builds +#========================================== + +CFLAGSU = $(CFLAGSBASE) $(WINPFLAG) $(DLBFLG) +LFLAGSU = $(LFLAGSBASEC) + +#========================================== +# - Game build +#========================================== + +CFLAGS = $(CFLAGSBASE) $(WINPFLAG) $(DLBFLG) +lflags = $(LFLAGSBASEC) $(linkdebuf) + +CXXFLAGS = $(CFLAGS) + +ifeq "$(USE_DLB)" "Y" +DLB = nhdat else -INCLDIR= /I../include /I../sys/winnt /I$(CURSESINCL) +DLB = endif #========================================== @@ -552,9 +563,6 @@ $(OBJ)/%.o : $(SSYS)/%.cpp $(OBJ)/%.o : $(MSWSYS)/%.c $(cc) $(CFLAGS) -o$@ $< -$(INCL)/%.h : $(MSWSYS)/%.h - @copy $< $@ - #========================================== # Rules for files in util #========================================== @@ -682,12 +690,12 @@ default : install all : install -install: graphicschk $(O)obj.tag $(GAMEDIR)/NetHack.exe $(GAMEDIR)/NetHackW.exe $(O)install.tag $(EXTRA_FILES) +install: initialchk $(GAMEDIR)/NetHack.exe $(GAMEDIR)/NetHackW.exe install.tag $(EXTRA_FILES) @echo NetHack is up to date. @echo Done. -$(O)install.tag: $(DAT)/data $(DAT)/rumors $(DAT)/dungeon \ +install.tag: $(DAT)/data $(DAT)/rumors $(DAT)/dungeon \ $(DAT)/oracles $(DAT)/quest.dat $(O)sp_lev.tag $(DLB) ifeq "$(USE_DLB)" "Y" $(subst /,\,copy nhdat $(GAMEDIR)) @@ -717,7 +725,7 @@ recover: $(U)recover.exe $(subst /,\,if exist $(U)recover.exe copy $(U)recover.exe $(GAMEDIR)) $(subst /,\,if exist $(DOC)/recover.txt copy $(DOC)/recover.txt $(GAMEDIR)/recover.txt) -$(O)sp_lev.tag: $(O)utility.tag $(DAT)/bigroom.des $(DAT)/castle.des \ +sp_lev.tag: utility.tag $(DAT)/bigroom.des $(DAT)/castle.des \ $(DAT)/endgame.des $(DAT)/gehennom.des $(DAT)/knox.des \ $(DAT)/medusa.des $(DAT)/oracle.des $(DAT)/tower.des \ $(DAT)/yendor.des $(DAT)/arch.des $(DAT)/barb.des \ @@ -751,9 +759,9 @@ $(O)sp_lev.tag: $(O)utility.tag $(DAT)/bigroom.des $(DAT)/castle.des \ $(subst /,\,$(U)levcomp $(DAT)/wizard.des) $(subst /,\,copy *.lev $(DAT)) $(subst /,\,del *.lev) - $(subst /,\,echo sp_levs done > $(O)sp_lev.tag) + $(subst /,\,echo sp_levs done > sp_lev.tag) -$(O)utility.tag: $(INCL)/date.h $(INCL)/onames.h $(INCL)/pm.h \ +utility.tag: $(INCL)/date.h $(INCL)/onames.h $(INCL)/pm.h \ $(SRC)/vis_tab.c $(U)levcomp.exe $(INCL)/vis_tab.h \ $(U)dgncomp.exe $(TILEUTIL16) $(subst /,\,@echo utilities made >$@) @@ -774,17 +782,18 @@ $(O)conres.o: $(MSWSYS)/console.rc $(MSWSYS)/NetHack.ico #========================================== # The game targets. #========================================== -$(O)gamedir.tag: - $(subst /,\,@if not exist $(GAMEDIR)/*.* echo creating directory $(GAMEDIR)) - $(subst /,\,@if not exist $(GAMEDIR)/*.* mkdir $(GAMEDIR)) - $(subst /,\,@echo directory created > $@) -$(GAMEDIR)/NetHack.exe : $(O)gamedir.tag $(PDCLIB) $(O)tile.o $(O)nttty.o $(O)guistub.o \ +gamedir.tag: + test -d $(GAMEDIR) || echo creating directory $(GAMEDIR) + test -d $(GAMEDIR) || mkdir $(GAMEDIR) + test -d $(GAMEDIR) && echo directory created > $@ + +$(GAMEDIR)/NetHack.exe : gamedir.tag $(PDCLIB) $(O)tile.o $(O)nttty.o $(O)guistub.o \ $(ALLOBJ) $(TTYOBJ) $(GUIOBJ) $(O)conres.o $(KEYDLLS) @echo Linking $@... $(link) $(lflags) -o$@ $(ALLOBJ) $(TTYOBJ) $(O)nttty.o $(O)tile.o \ $(O)guistub.o $(O)conres.o $(PDCLIB) $(conlibs) -static -lstdc++ - $(subst /,\,@if exist $(O)install.tag del $(O)install.tag) + $(subst /,\,@if exist install.tag del install.tag) # NetHackW # full tty linkage libs: @@ -794,17 +803,17 @@ $(GAMEDIR)/NetHack.exe : $(O)gamedir.tag $(PDCLIB) $(O)tile.o $(O)nttty.o $(O)gu # libs: $(LIBS) $(guilibs) $(COMCTRL) # objs: $(GAMEOBJ) $(GUIOBJ) $(O)tile.o $(O)ttystub.o -$(GAMEDIR)/NetHackW.exe : $(O)gamedir.tag $(O)tile.o $(O)ttystub.o \ +$(GAMEDIR)/NetHackW.exe : gamedir.tag $(O)tile.o $(O)ttystub.o \ $(ALLOBJ) $(TTYOBJ) $(GUIOBJ) $(O)winres.o $(KEYDLLS) @echo Linking $@... $(link) $(lflags) -mwindows -o$@ $(ALLOBJ) $(GUIOBJ) $(O)tile.o $(O)ttystub.o \ $(O)winres.o $(PDCLIB) $(guilibs) -static -lstdc++ - $(subst /,\,@if exist $(O)install.tag del $(O)install.tag) + $(subst /,\,@if exist install.tag del install.tag) $(O)nhdefkey.o: $(cc) $(CFLAGS) -DBUILD_DLL -o$@ $(MSWSYS)/nhdefkey.c -$(GAMEDIR)/nhdefkey.dll : $(O)nhdefkey.o $(O)gamedir.tag +$(GAMEDIR)/nhdefkey.dll : $(O)nhdefkey.o gamedir.tag @echo Linking $@ $(cc) -shared -Wl,--export-all-symbols \ -Wl,--add-stdcall-alias -o $@ $< @@ -812,7 +821,7 @@ $(GAMEDIR)/nhdefkey.dll : $(O)nhdefkey.o $(O)gamedir.tag $(O)nh340key.o: $(cc) $(CFLAGS) -DBUILD_DLL -o$@ $(MSWSYS)/nh340key.c -$(GAMEDIR)/nh340key.dll : $(O)nh340key.o $(O)gamedir.tag +$(GAMEDIR)/nh340key.dll : $(O)nh340key.o gamedir.tag @echo Linking $@ $(cc) -shared -Wl,--export-all-symbols \ -Wl,--add-stdcall-alias -o $@ $< @@ -820,7 +829,7 @@ $(GAMEDIR)/nh340key.dll : $(O)nh340key.o $(O)gamedir.tag $(O)nhraykey.o: $(cc) $(CFLAGS) -DBUILD_DLL -o$@ $(MSWSYS)/nhraykey.c -$(GAMEDIR)/nhraykey.dll : $(O)nhraykey.o $(O)gamedir.tag +$(GAMEDIR)/nhraykey.dll : $(O)nhraykey.o gamedir.tag @echo Linking $@ $(cc) -shared -Wl,--export-all-symbols \ -Wl,--add-stdcall-alias -o $@ $< @@ -832,12 +841,15 @@ $(GAME)_.ico : $(MSWSYS)/$(GAME).ico # Create directory for holding object files #========================================== -graphicschk: +initialchk: objdir.tag @echo ---- @echo NOTE: This build will include tile support. @echo ---- - $(subst /,\,@echo graphicschk > graphicschk) +objdir.tag: + test -d $(OBJ) || echo creating directory $(OBJ) + test -d $(OBJ) || mkdir $(OBJ) + test -d $(OBJ) && echo directory created > $@ #========================================== #=========== SECONDARY TARGETS ============ @@ -852,7 +864,7 @@ $(U)makedefs.exe: $(MAKEOBJS) $(O)makedefs.o: $(CONFIG_H) $(INCL)/monattk.h $(INCL)/monflag.h \ $(INCL)/objclass.h $(INCL)/monsym.h $(INCL)/qtext.h \ - $(INCL)/patchlevel.h $(U)makedefs.c $(O)obj.tag + $(INCL)/patchlevel.h $(U)makedefs.c $(cc) $(CFLAGSU) -o$@ $(U)makedefs.c # @@ -875,6 +887,18 @@ $(INCL)/vis_tab.h: $(U)makedefs.exe $(SRC)/vis_tab.c: $(U)makedefs.exe $(subst /,\,$(U)makedefs -z) +$(DAT)/data: utility.tag $(DATABASE) + $(subst /,\,$(U)makedefs -d) + +$(DAT)/rumors: utility.tag $(DAT)/rumors.tru $(DAT)/rumors.fal + $(subst /,\,$(U)makedefs -r) + +$(DAT)/quest.dat: utility.tag $(DAT)/quest.txt + $(subst /,\,$(U)makedefs -q) + +$(DAT)/oracles: utility.tag $(DAT)/oracles.txt + $(subst /,\,$(U)makedefs -h) + $(DAT)/engrave: $(DAT)/engrave.txt $(U)makedefs.exe $(subst /,\,$(U)makedefs -s) @@ -884,7 +908,9 @@ $(DAT)/epitaph: $(DAT)/epitaph.txt $(U)makedefs.exe $(DAT)/bogusmon: $(DAT)/bogusmon.txt $(U)makedefs.exe $(subst /,\,$(U)makedefs -s) - +$(DAT)/dungeon: utility.tag $(DAT)/dungeon.def + $(subst /,\,$(U)makedefs -e) + $(subst /,\,$(U)dgncomp $(DAT)/dungeon.pdf) #========================================== # uudecode utility and uuencoded targets @@ -959,7 +985,6 @@ $(O)lev_$(LEX).o: $(HACK_H) $(INCL)/lev_comp.h $(SP_LEV_H) \ $(O)lev_main.o: $(U)lev_main.c $(HACK_H) $(SP_LEV_H) $(cc) $(LEVCFLAGS) -o$@ $(U)lev_main.c - $(U)lev_yacc.c $(INCL)/lev_comp.h : $(U)lev_comp.y ifeq "$(DO_YACC)" "YACC_ACT" $(subst /,\,$(YACC) -d $(U)lev_comp.y) @@ -967,7 +992,6 @@ ifeq "$(DO_YACC)" "YACC_ACT" $(subst /,\,copy $(YTABH) $(INCL)/lev_comp.h) $(subst /,\,@del $(YTABC)) $(subst /,\,@del $(YTABH)) - else @echo $(U)lev_comp.y has changed. @echo To update $(U)lev_yacc.c and $(INCL)/lev_comp.h run $(YACC). @@ -1068,10 +1092,6 @@ $(O)nhsizes2.o: $(CONFIG_H) nhsizes2.c # Create directory for holding object files #========================================== -$(O)obj.tag: - $(subst /,\,@if not exist $(OBJ)/*.* echo creating directory $(OBJ)) - $(subst /,\,@if not exist $(OBJ)/*.* mkdir $(OBJ)) - $(subst /,\,@echo directory created > $@) #========================================== # DLB utility and nhdat file creation @@ -1093,7 +1113,7 @@ $(DAT)/porthelp: $(MSWSYS)/porthelp nhdat: $(U)dlb_main.exe $(DAT)/data $(DAT)/oracles $(OPTIONS_FILE) \ $(DAT)/quest.dat $(DAT)/rumors $(DAT)/help $(DAT)/hh $(DAT)/cmdhelp $(DAT)/keyhelp \ $(DAT)/history $(DAT)/opthelp $(DAT)/wizhelp $(DAT)/dungeon \ - $(DAT)/porthelp $(DAT)/license $(DAT)/engrave $(DAT)/epitaph $(DAT)/bogusmon $(DAT)/tribute $(O)sp_lev.tag + $(DAT)/porthelp $(DAT)/license $(DAT)/engrave $(DAT)/epitaph $(DAT)/bogusmon $(DAT)/tribute sp_lev.tag $(subst /,\,echo data >$(DAT)/dlb.lst) $(subst /,\,echo oracles >>$(DAT)/dlb.lst) $(subst /,\,if exist $(DAT)/options echo options >>$(DAT)/dlb.lst) @@ -1125,7 +1145,7 @@ nhdat: $(U)dlb_main.exe $(DAT)/data $(DAT)/oracles $(OPTIONS_FILE) \ $(U)recover.exe: $(RECOVOBJS) $(link) $(LFLAGSU) -o$@ $(RECOVOBJS) -$(O)recover.o: $(CONFIG_H) $(U)recover.c $(INCL)/win32api.h +$(O)recover.o: $(CONFIG_H) $(U)recover.c $(MSWSYS)/win32api.h $(cc) $(CFLAGSU) -o$@ $(U)recover.c #========================================== @@ -1197,10 +1217,10 @@ $(U)til2bm32.exe: $(O)til2bm32.o $(TEXT_IO32) @echo Linking $@... @$(link) $(LFLAGSU) -o$@ $(O)til2bm32.o $(TEXT_IO32) -$(O)tile2bmp.o: $(WSHR)/tile2bmp.c $(HACK_H) $(TILE_H) $(INCL)/win32api.h +$(O)tile2bmp.o: $(WSHR)/tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)/win32api.h $(cc) $(CFLAGS) -mno-ms-bitfields -I$(WSHR) -o$@ $(WSHR)/tile2bmp.c -$(O)til2bm32.o: $(WSHR)/til2bm32.c $(HACK_H) $(TILE_H) $(INCL)/win32api.h +$(O)til2bm32.o: $(WSHR)/til2bm32.c $(HACK_H) $(TILE_H) $(MSWSYS)/win32api.h $(cc) $(CFLAGS) -I$(WSHR) -DTILE_X=32 -DTILE_Y=32 -o$@ $(WSHR)/til2bm32.c #========================================== @@ -1209,13 +1229,13 @@ $(O)til2bm32.o: $(WSHR)/til2bm32.c $(HACK_H) $(TILE_H) $(INCL)/win32api.h $(O)pdcurses.a : $(PDCLIBOBJS) $(PDCOBJS) ar rcs $@ $(PDCLIBOBJS) $(PDCOBJS) - + #========================================== # Housekeeping #========================================== spotless: clean - $(subst /,\,if exist graphicschk del graphicschk) + $(subst /,\,if exist initialchk del initialchk) $(subst /,\,if exist $(INCL)/date.h del $(INCL)/date.h) $(subst /,\,if exist $(INCL)/onames.h del $(INCL)/onames.h) $(subst /,\,if exist $(INCL)/pm.h del $(INCL)/pm.h) @@ -1260,7 +1280,7 @@ spotless: clean $(subst /,\,if exist $(DAT)/valley.lev del $(DAT)/valley.lev) $(subst /,\,if exist $(DAT)/water.lev del $(DAT)/water.lev) $(subst /,\,if exist $(DAT)/wizard?.lev del $(DAT)/wizard?.lev) - $(subst /,\,if exist $(O)sp_lev.tag del $(O)sp_lev.tag) + $(subst /,\,if exist sp_lev.tag del sp_lev.tag) $(subst /,\,if exist $(SRC)/vis_tab.c del $(SRC)/vis_tab.c) $(subst /,\,if exist $(U)recover.exe del $(U)recover.exe) $(subst /,\,if exist $(DAT)/dlb.lst del $(DAT)/dlb.lst) @@ -1272,7 +1292,6 @@ spotless: clean $(subst /,\,if exist $(DAT)/porthelp del $(DAT)/porthelp) $(subst /,\,if exist $(INCL)/dgn_comp.h del $(INCL)/dgn_comp.h) $(subst /,\,if exist $(INCL)/lev_comp.h del $(INCL)/lev_comp.h) - $(subst /,\,if exist $(INCL)/win32api.h del $(INCL)/win32api.h) $(subst /,\,if exist $(MSWSYS)/NetHack.ico del $(MSWSYS)/NetHack.ico) $(subst /,\,if exist $(U)dgn_flex.c del $(U)dgn_flex.c) $(subst /,\,if exist $(U)dgn_yacc.c del $(U)dgn_yacc.c) @@ -1291,64 +1310,32 @@ spotless: clean $(subst /,\,if exist $(MSWIN)/rip.bmp del $(MSWIN)/rip.bmp) $(subst /,\,if exist $(MSWIN)/splash.bmp del $(MSWIN)/splash.bmp) ifneq "$(OBJ)" "" - $(subst /,\,if exist $(OBJ) rmdir $(OBJ)) /s /Q + test -d $(OBJ) && rmdir $(OBJ) /S /Q endif -ifeq "$(ADD_CURSES)" == "Y" +ifeq "$(ADD_CURSES)" "Y" if exist $(O)pdcurses.lib del $(O)pdcurses.lib endif clean: - $(subst /,\,if exist $(O)*.o del $(O)*.o) - $(subst /,\,if exist $(O)utility.tag del $(O)utility.tag) - $(subst /,\,if exist $(U)makedefs.exe del $(U)makedefs.exe) - $(subst /,\,if exist $(U)levcomp.exe del $(U)levcomp.exe) - $(subst /,\,if exist $(U)dgncomp.exe del $(U)dgncomp.exe) - $(subst /,\,if exist $(SRC)/*.lnk del $(SRC)/*.lnk) - $(subst /,\,if exist $(SRC)/*.map del $(SRC)/*.map) - $(subst /,\,if exist $(O)install.tag del $(O)install.tag) - $(subst /,\,if exist $(O)gamedir.tag del $(O)gamedir.tag) - $(subst /,\,if exist $(O)obj.tag del $(O)obj.tag) - $(subst /,\,if exist $(TILEBMP16) del $(TILEBMP16)) - $(subst /,\,if exist $(TILEBMP32) del $(TILEBMP32)) - + -test -f install.tag && rm install.tag + -test -f utility.tag && rm utility.tag + -test -f $(U)makedefs.exe && rm $(U)makedefs.exe + -test -f $(U)levcomp.exe && rm $(U)levcomp.exe + -test -f $(U)dgncomp.exe && rm $(U)dgncomp.exe + -rm $(SRC)/*.lnk + -rm $(SRC)/*.map + -test -f $(TILEBMP16) && rm $(TILEBMP16) + -test -f $(TILEBMP32) && rm $(TILEBMP32) + #=================================================================== # OTHER DEPENDENCIES #=================================================================== -# -# dat dependencies -# - -$(DAT)/data: $(O)utility.tag $(DATABASE) - $(subst /,\,$(U)makedefs -d) - -$(DAT)/rumors: $(O)utility.tag $(DAT)/rumors.tru $(DAT)/rumors.fal - $(subst /,\,$(U)makedefs -r) - -$(DAT)/quest.dat: $(O)utility.tag $(DAT)/quest.txt - $(subst /,\,$(U)makedefs -q) - -$(DAT)/oracles: $(O)utility.tag $(DAT)/oracles.txt - $(subst /,\,$(U)makedefs -h) - -$(DAT)/engrave: $(DAT)/engrave.txt $(U)makedefs.exe - $(U)makedefs -s - -$(DAT)/epitaph: $(DAT)/epitaph.txt $(U)makedefs.exe - $(U)makedefs -s - -$(DAT)/bogusmon: $(DAT)/bogusmon.txt $(U)makedefs.exe - $(U)makedefs -s - -$(DAT)/dungeon: $(O)utility.tag $(DAT)/dungeon.def - $(subst /,\,$(U)makedefs -e) - $(subst /,\,$(U)dgncomp $(DAT)/dungeon.pdf) - # # NT dependencies # -$(O)nttty.o: $(HACK_H) $(TILE_H) $(INCL)/win32api.h $(MSWSYS)/nttty.c +$(O)nttty.o: $(HACK_H) $(TILE_H) $(MSWSYS)/win32api.h $(MSWSYS)/nttty.c $(cc) $(CFLAGS) -I$(WSHR) -o$@ $(MSWSYS)/nttty.c -$(O)winnt.o: $(HACK_H) $(INCL)/win32api.h $(MSWSYS)/winnt.c +$(O)winnt.o: $(HACK_H) $(MSWSYS)/win32api.h $(MSWSYS)/winnt.c $(cc) $(CFLAGS) -o$@ $(MSWSYS)/winnt.c $(O)ntsound.o: $(HACK_H) $(MSWSYS)/ntsound.c $(cc) $(CFLAGS) -o$@ $(MSWSYS)/ntsound.c @@ -1386,8 +1373,8 @@ $(O)panic.o: $(U)panic.c $(CONFIG_H) # Other dependencies needed by some ports # +ifeq "$(ADD_CURSES)" "Y" # curses window port dependencies - $(O)cursdial.o: $(WCURSES)\cursdial.c $(WCURSES)\cursdial.h $(INCL)\wincurs.h $(O)cursinit.c: $(WCURSES)\cursinit.c $(WCURSES)\cursinit.h $(INCL)\wincurs.h $(O)cursinvt.c: $(WCURSES)\cursinvt.c $(WCURSES)\cursinvt.h $(INCL)\wincurs.h @@ -1396,7 +1383,9 @@ $(O)cursmesg.c: $(WCURSES)\cursmesg.c $(WCURSES)\cursmesg.h $(INCL)\wincurs.h $(O)cursmisc.c: $(WCURSES)\cursmisc.c $(WCURSES)\cursmisc.h $(INCL)\wincurs.h $(O)cursstat.c: $(WCURSES)\cursstat.c $(WCURSES)\cursstat.h $(INCL)\wincurs.h $(O)curswins.c: $(WCURSES)\curswins.c $(WCURSES)\curswins.h $(INCL)\wincurs.h +endif +ifeq "$(WANT_WIN_QT4)" "Y" # Qt dependencies $(GAMEDIR)/Qt5Core.dll : $(QT4_DIRECTORY)/bin/Qt5Core.dll @@ -1419,8 +1408,6 @@ $(GAMEDIR)/nhtiles.bmp : $(SRC)/tiles.bmp $(GAMEDIR)/rip.xpm : ../win/X11/rip.xpm $(subst /,\,@copy $< $@ >nul) - - # Dependencies on .moc files (for Qt 4 or 5) $(OBJ)/qt4main.o : $(QT4)/qt4main.cpp $(QT4)/qt4main.moc $(QT4)/qt4kde0.moc $(OBJ)/qt4map.o : $(QT4)/qt4map.cpp $(QT4)/qt4map.moc @@ -1431,6 +1418,7 @@ $(OBJ)/qt4set.o : $(QT4)/qt4set.cpp $(QT4)/qt4set.moc $(OBJ)/qt4stat.o : $(QT4)/qt4stat.cpp $(QT4)/qt4stat.moc $(OBJ)/qt4xcmd.o : $(QT4)/qt4xcmd.cpp $(QT4)/qt4xcmd.moc $(OBJ)/qt4yndlg.o : $(QT4)/qt4yndlg.cpp $(QT4)/qt4yndlg.moc +endif # # The rest are stolen from sys/unix/Makefile.src, @@ -1447,7 +1435,7 @@ $(OBJ)/qt4yndlg.o : $(QT4)/qt4yndlg.cpp $(QT4)/qt4yndlg.moc $(O)tos.o: ../sys/atari/tos.c $(HACK_H) $(INCL)/tcap.h $(cc) $(CFLAGS) -o$@ ../sys/atari/tos.c $(O)pcmain.o: ../sys/share/pcmain.c $(HACK_H) $(INCL)/dlb.h \ - $(INCL)/win32api.h + $(MSWSYS)/win32api.h $(cc) $(CFLAGS) -o$@ ../sys/share/pcmain.c $(O)pcsys.o: ../sys/share/pcsys.c $(HACK_H) $(cc) $(CFLAGS) -o$@ ../sys/share/pcsys.c diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index f42c431cd..8f8eec6f3 100644 --- a/sys/winnt/Makefile.msc +++ b/sys/winnt/Makefile.msc @@ -115,10 +115,6 @@ WSHR = ..\win\share # Tile support files OBJ = o -cc=cl -link=link -rc=Rc - # # # Optional high-quality BSD random number generation routines @@ -151,94 +147,6 @@ DLBFLG = #ZLIB = zlib.lib -#========================================== -#========================================== -# Setting up the compiler and linker -#========================================== -#========================================== - -# Before we get started, this section is used to determine the version of -# Visual Studio we are using. We set VSVER to 0000 to flag any version that -# is too old or untested. -# -#NMAKE version 1414264330 is distributed with VS 15.7.5 - -#!MESSAGE $(MAKEFLAGS) -#!MESSAGE $(MAKEDIR) -#!MESSAGE $(MAKE) - -MAKEVERSION=$(_NMAKE_VER:.= ) -MAKEVERSION=$(MAKEVERSION: =) -#!MESSAGE $(_NMAKE_VER) -#!MESSAGE $(MAKEVERSION) - -VSNEWEST=2017 -!IF ($(MAKEVERSION) < 1000000000) -VSVER=0000 #untested ancient version -!ELSEIF ($(MAKEVERSION) > 1000000000) && ($(MAKEVERSION) < 1100000000) -VSVER=2010 -!ELSEIF ($(MAKEVERSION) > 1100000000) && ($(MAKEVERSION) < 1200000000) -VSVER=2012 -!ELSEIF ($(MAKEVERSION) > 1200000000) && ($(MAKEVERSION) < 1400000000) -VSVER=2013 -!ELSEIF ($(MAKEVERSION) > 1400000000) && ($(MAKEVERSION) < 1411000000) -VSVER=2015 -!ELSEIF ($(MAKEVERSION) > 1411000000) && ($(MAKEVERSION) < 1414264331) -VSVER=$(VSNEWEST) -!ELSEIF ($(MAKEVERSION) > 1414264330) -VSVER=2999 #untested future version -!ENDIF - -!IF ($(VSVER) >= 2012) -!MESSAGE Autodetected Visual Studio $(VSVER) -!ELSEIF ($(VSVER) == 2999 -!MESSAGE The version of Visual Studio is newer than the most recent at -!MESSAGE the time this Makefile was crafted (Visual Studio $(VSNEWEST)). -!MESSAGE Because it is newer we'll proceed expecting that the -!MESSAGE VS$(VSNEWEST) processing will still work. -!ELSEIF ($(VSVER) == 0000) -!MESSAGE The version of Visual Studio appears to be quite old, older -!MESSAGE than VS2010 which is the oldest supported version by this -!MESSAGE Makefile, so we'll stop now. -!ERROR Untested old Visual Studio version with NMAKE $(_NMAKE_VER). -!ENDIF - -!IF ($(VSVER) == 2010) -# For VS2010 use "setenv /x86" or "setenv /x64" before invoking make process -# DO NOT DELETE THE FOLLOWING LINE -!include -! ENDIF - -#These will be in the environment variables with one of the VS2017 -#developer command prompts. -#VSCMD_ARG_HOST_ARCH=x64 -#VSCMD_ARG_TGT_ARCH=x86 - -!IFDEF VSCMD_ARG_HOST_ARCH -!MESSAGE Host architecture is $(VSCMD_ARG_HOST_ARCH) -!MESSAGE Target architecture is $(VSCMD_ARG_TGT_ARCH) -! IFNDEF TARGET_CPU -! IF "$(VSCMD_ARG_TGT_ARCH)"=="x64" -TARGET_CPU=x64 -! ELSE -TARGET_CPU=x86 -! ENDIF -! ENDIF -!ENDIF - -!IF "$(TARGET_CPU)" == "" -TARGET_CPU=x86 -!ENDIF - -!IF ($(VSVER) == 2010) -CL_RECENT= -!ELSE -! IF ($(VSVER) > 2010) -CL_RECENT=-sdl -! ENDIF -!ENDIF - - #========================================== #================ MACROS ================== #========================================== @@ -437,6 +345,97 @@ TILE_H = ..\win\share\tile.h DATABASE = $(DAT)\data.base +#========================================== +#========================================== +# Setting up the compiler and linker +#========================================== +#========================================== + +cc=cl +link=link +rc=Rc + +# Before we get started, this section is used to determine the version of +# Visual Studio we are using. We set VSVER to 0000 to flag any version that +# is too old or untested. +# +#NMAKE version 1414264330 is distributed with VS 15.7.5 + +#!MESSAGE $(MAKEFLAGS) +#!MESSAGE $(MAKEDIR) +#!MESSAGE $(MAKE) + +MAKEVERSION=$(_NMAKE_VER:.= ) +MAKEVERSION=$(MAKEVERSION: =) +#!MESSAGE $(_NMAKE_VER) +#!MESSAGE $(MAKEVERSION) + +VSNEWEST=2017 +!IF ($(MAKEVERSION) < 1000000000) +VSVER=0000 #untested ancient version +!ELSEIF ($(MAKEVERSION) > 1000000000) && ($(MAKEVERSION) < 1100000000) +VSVER=2010 +!ELSEIF ($(MAKEVERSION) > 1100000000) && ($(MAKEVERSION) < 1200000000) +VSVER=2012 +!ELSEIF ($(MAKEVERSION) > 1200000000) && ($(MAKEVERSION) < 1400000000) +VSVER=2013 +!ELSEIF ($(MAKEVERSION) > 1400000000) && ($(MAKEVERSION) < 1411000000) +VSVER=2015 +!ELSEIF ($(MAKEVERSION) > 1411000000) && ($(MAKEVERSION) < 1414264331) +VSVER=$(VSNEWEST) +!ELSEIF ($(MAKEVERSION) > 1414264330) +VSVER=2999 #untested future version +!ENDIF + +!IF ($(VSVER) >= 2012) +!MESSAGE Autodetected Visual Studio $(VSVER) +!ELSEIF ($(VSVER) == 2999 +!MESSAGE The version of Visual Studio is newer than the most recent at +!MESSAGE the time this Makefile was crafted (Visual Studio $(VSNEWEST)). +!MESSAGE Because it is newer we'll proceed expecting that the +!MESSAGE VS$(VSNEWEST) processing will still work. +!ELSEIF ($(VSVER) == 0000) +!MESSAGE The version of Visual Studio appears to be quite old, older +!MESSAGE than VS2010 which is the oldest supported version by this +!MESSAGE Makefile, so we'll stop now. +!ERROR Untested old Visual Studio version with NMAKE $(_NMAKE_VER). +!ENDIF + +!IF ($(VSVER) == 2010) +# For VS2010 use "setenv /x86" or "setenv /x64" before invoking make process +# DO NOT DELETE THE FOLLOWING LINE +!include +! ENDIF + +#These will be in the environment variables with one of the VS2017 +#developer command prompts. +#VSCMD_ARG_HOST_ARCH=x64 +#VSCMD_ARG_TGT_ARCH=x86 + +!IFDEF VSCMD_ARG_HOST_ARCH +!MESSAGE Host architecture is $(VSCMD_ARG_HOST_ARCH) +!MESSAGE Target architecture is $(VSCMD_ARG_TGT_ARCH) +! IFNDEF TARGET_CPU +! IF "$(VSCMD_ARG_TGT_ARCH)"=="x64" +TARGET_CPU=x64 +! ELSE +TARGET_CPU=x86 +! ENDIF +! ENDIF +!ENDIF + +!IF "$(TARGET_CPU)" == "" +TARGET_CPU=x86 +!ENDIF + +!IF ($(VSVER) == 2010) +CL_RECENT= +!ELSE +! IF ($(VSVER) > 2010) +CL_RECENT=-sdl +! ENDIF +!ENDIF + #========================================== # More compiler setup post-macros #========================================== @@ -664,7 +663,7 @@ default : install all : install -install: $(O)envchk.tag $(O)obj.tag $(O)utility.tag $(GAMEDIR)\NetHack.exe $(GAMEDIR)\NetHackW.exe $(O)install.tag +install: $(O)envchk.tag $(O)utility.tag $(GAMEDIR)\NetHack.exe $(GAMEDIR)\NetHackW.exe $(O)install.tag @echo Done. $(O)install.tag: $(DAT)\data $(DAT)\rumors $(DAT)\dungeon \ @@ -939,6 +938,33 @@ $(INCL)\vis_tab.h: $(U)makedefs.exe $(SRC)\vis_tab.c: $(U)makedefs.exe $(U)makedefs -z +$(DAT)\data: $(O)utility.tag $(DATABASE) + $(U)makedefs -d + +$(DAT)\rumors: $(O)utility.tag $(DAT)\rumors.tru $(DAT)\rumors.fal + $(U)makedefs -r + +$(DAT)\quest.dat: $(O)utility.tag $(DAT)\quest.txt + $(U)makedefs -q + +$(DAT)\oracles: $(O)utility.tag $(DAT)\oracles.txt + $(U)makedefs -h + +$(DAT)\engrave: $(DAT)\engrave.txt $(U)makedefs.exe + $(U)makedefs -s + +$(DAT)\epitaph: $(DAT)\epitaph.txt $(U)makedefs.exe + $(U)makedefs -s + +$(DAT)\bogusmon: $(DAT)\bogusmon.txt $(U)makedefs.exe + $(U)makedefs -s + +$(DAT)\dungeon: $(O)utility.tag $(DAT)\dungeon.def + $(U)makedefs -e + cd $(DAT) + $(U)dgncomp dungeon.pdf + cd $(SRC) + #========================================== # uudecode utility and uuencoded targets #========================================== @@ -1081,11 +1107,6 @@ $(O)nhsizes2.o: $(CONFIG_H) nhsizes2.c # Create directory for holding object files #================================================= -$(O)obj.tag: - @if not exist $(OBJ)\*.* echo creating directory $(OBJ:\=/) - @if not exist $(OBJ)\*.* mkdir $(OBJ) - @echo directory created >$@ - #========================================== # DLB utility and nhdat file creation #========================================== @@ -1276,6 +1297,9 @@ $(O)envchk.tag: $(O)obj.tag # @echo CL=$(CL) ! ENDIF echo envchk >$@ + @if not exist $(OBJ)\*.* echo creating directory $(OBJ:\=/) + @if not exist $(OBJ)\*.* mkdir $(OBJ) + @echo directory created >$@ #========================================== # Housekeeping @@ -1343,7 +1367,6 @@ spotless: clean if exist $(O)sp_lev.tag del $(O)sp_lev.tag if exist $(SRC)\vis_tab.c del $(SRC)\vis_tab.c if exist nhdat. del nhdat. - if exist $(O)obj.tag del $(O)obj.tag if exist $(O)gamedir.tag del $(O)gamedir.tag if exist $(O)nh*key.lib del $(O)nh*key.lib if exist $(O)nh*key.exp del $(O)nh*key.exp @@ -1401,7 +1424,6 @@ clean: if exist $(O)nhraykey.map del $(O)nhraykey.map if exist $(O)nhraykey.PDB del $(O)nhraykey.PDB if exist $(O)envchk.tag del $(O)envchk.tag - if exist $(O)obj.tag del $(O)obj.tag 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 @@ -1420,37 +1442,6 @@ clean: # OTHER DEPENDENCIES #=================================================================== -# -# dat dependencies -# - -$(DAT)\data: $(O)utility.tag $(DATABASE) - $(U)makedefs -d - -$(DAT)\rumors: $(O)utility.tag $(DAT)\rumors.tru $(DAT)\rumors.fal - $(U)makedefs -r - -$(DAT)\quest.dat: $(O)utility.tag $(DAT)\quest.txt - $(U)makedefs -q - -$(DAT)\oracles: $(O)utility.tag $(DAT)\oracles.txt - $(U)makedefs -h - -$(DAT)\engrave: $(DAT)\engrave.txt $(U)makedefs.exe - $(U)makedefs -s - -$(DAT)\epitaph: $(DAT)\epitaph.txt $(U)makedefs.exe - $(U)makedefs -s - -$(DAT)\bogusmon: $(DAT)\bogusmon.txt $(U)makedefs.exe - $(U)makedefs -s - -$(DAT)\dungeon: $(O)utility.tag $(DAT)\dungeon.def - $(U)makedefs -e - cd $(DAT) - $(U)dgncomp dungeon.pdf - cd $(SRC) - # # NT dependencies #