From: nhmall Date: Thu, 27 Jan 2022 23:30:43 +0000 (-0500) Subject: utilize the submodules for Windows build X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5f0b52cf8393bf3c9124f0ab3326fbf0a0064fdf;p=nethack utilize the submodules for Windows build --- diff --git a/sys/windows/Makefile.msc b/sys/windows/Makefile.msc index 5a0783a60..dd501ea51 100644 --- a/sys/windows/Makefile.msc +++ b/sys/windows/Makefile.msc @@ -1,5 +1,5 @@ # NetHack 3.7 Makefile.msc -# Copyright (c) NetHack PC Development Team 1993-2021 +# Copyright (c) NetHack PC Development Team 1993-2022 # #============================================================================== # Build Tools Environment @@ -21,37 +21,11 @@ # A Win32 native port built on the Windows API, Graphical NetHack or # NetHackW.exe # -# BEFORE YOU START, in addition to your C compiler and linker, -# -# o You will need a complete Lua source tree parallel to your -# NetHack source tree. Lua is not an optional requirement, -# it is required in order to process the level and dungeon -# description files during the game. You can obtain the -# Lua source from here: -# https://www.lua.org/download.html -# -# o If you want to include the curses Window port in the non-GUI -# NetHack.exe build, you will need a complete PDCurses source -# tree parallel to your NetHack source tree. You can obtain the -# PDCurses source from here: -# https://sourceforge.net/projects/pdcurses/files/pdcurses/ -# or via git from here: -# git clone https://github.com/wmcbrine/PDCurses.git ../pdcurses -# -# o If you want your build of NetHack to include support for -# compressing your save files, or to be able to exchange and use -# compressed save files that originated on another platform such -# as Linux or a handheld phone or tablet, then you will need -# a copy of the zlib source tree parallel to your NetHack source -# tree. You can obtain the zlib source from here: -# https://www.zlib.net/zlib1211.zip -# -# If you want to find out more information about Lua, PDCurses, or zlib, +# If you want to find out more information about Lua or PDCurses # here are the home page links for each at the time of this writing: # # Lua: https://www.lua.org/ # PDCurses: https://pdcurses.org/ -# zlib: https://www.zlib.net/ # # If you have any questions about building NetHack for the Windows platform # please read sys/windows/Install.windows file included in the distribution. @@ -68,20 +42,10 @@ # 1. Do you have git commands in your path and NetHack in a # git repository? # 2. Where do you want your build results to end up? -# 3. Do you want to include the optional curses port? -# 4. Do you want to include compressed savefile support to -# transfer compressed savefiles between platforms? -# 5. Do you want debug information in the executable? -# 6. Do you want to explicitly override auto-detection of +# 3. Do you want debug information in the executable? +# 4. Do you want to explicitly override auto-detection of # a 32-bit or 64-bit target? # -# Mandatory Lua source Location (not optional) -# -# Lua source code or is required to build NetHack-3.7. -# LUATOP below must point to the correct location of the LUA sources. -# By default it is assumed to be parallel to your NetHack source tree in -# the same parent directory/folder. -# #------------------------------------------------------------------------------ #============================================================================== @@ -99,35 +63,12 @@ GIT_AVAILABLE = 1 GAMEDIR = ..\binary # Default game build directory # #------------------------------------------------------------------------------ -# OPTIONAL - Curses window port support -# -# 3. Uncomment these and set them appropriately if you want to -# include curses port support alongside TTY support in your -# NetHack.exe binary. -# -# You'll have to set PDCURSES_H to the correct location of the -# PDCurses header (.h) files and PDCURSES_C to the location -# of your PDCurses C files. -# -#ADD_CURSES=Y -#PDCURSES_TOP=..\lib\pdcurses -# -#------------------------------------------------------------------------------ -# OPTIONAL - zlib support (to allow compressed savefile exchange across platforms -# -# 4. Location of zlib sources -# -# -#ADD_ZLIB=Y -#ZLIBTOP=..\lib\zlib -# -#------------------------------------------------------------------------------ -# 5. Do you want debug information available to the executable? +# 3. Do you want debug information available to the executable? # DEBUGINFO = Y # #------------------------------------------------------------------------------ -# 6. This Makefile will attempt to auto-detect your selected target architecture +# 4. This Makefile will attempt to auto-detect your selected target architecture # based on Visual Studio command prompt configuration settins etc. # However, if you want to manually override generation of a # 32-bit or 64-bit build target, you can uncomment the apppropriate @@ -141,27 +82,6 @@ DEBUGINFO = Y #============================================================================== # This marks the end of the BUILD DECISIONS section. #============================================================================== -!IFNDEF LUA_VERSION -LUAVER=5.4.4 -!ELSE -LUAVER=$(LUA_VERSION) -!ENDIF -#============================================================================== -# -# Location of LUA -# -# Original source needs to be obtained from: -# http://www.lua.org/ftp/lua-5.4.4.tar.gz -# -# This build assumes that the LUA sources are located -# at the specified location. If they are actually elsewhere -# you'll need to specify the correct spot below in order to -# successfully build NetHack-3.7. You cannot build a functional -# version of NetHack-3.7 Work-in-progress without including Lua. -# -LUATOP=..\lib\lua-$(LUAVER) -# -# #============================================================================== # #TEST_CROSSCOMPILE=Y @@ -270,6 +190,100 @@ CROSSCOMPILE_TARGET= CROSSCOMPILE= !ENDIF +#===============-================================================= +# LUA library +# Official source for Lua is http://www.lua.org/ftp/lua-5.4.4.tar.gz +# +# Source for the NetHack repository submodule in ../submodules/lua +# is https://github.com/lua/lua.git +#================================================================= +!IFNDEF LUA_VERSION +LUAVER=5.4.4 +!ELSE +LUAVER=$(LUA_VERSION) +!ENDIF +#============================================================================== +# +# Location of LUA +# +# Original source needs to be obtained from: +# http://www.lua.org/ftp/lua-5.4.4.tar.gz +# +# This build assumes that the LUA sources are located +# at the specified location. If they are actually elsewhere +# you'll need to specify the correct spot below in order to +# successfully build NetHack-3.7. You cannot build a functional +# version of NetHack-3.7 Work-in-progress without including Lua. +# +LUATOP=..\submodules\lua + +!IFNDEF LUAVER +LUAVER=5.4.4 +!ENDIF + +LUASRC = $(LUATOP) +LUALIB = $(O)lua$(LUAVER)-static.lib +LUADLL = $(O)lua$(LUAVER).dll +LUAINCL = /I$(LUASRC) +LUATARGETS = lua.exe luac.exe $(LUADLL) $(LUALIB) + +LUASRCFILES = lapi.c lauxlib.c lbaselib.c lcode.c \ + lcorolib.c lctype.c ldblib.c ldebug.c ldo.c \ + ldump.c lfunc.c lgc.c linit.c liolib.c llex.c \ + lmathlib.c lmem.c loadlib.c lobject.c lopcodes.c \ + loslib.c lparser.c lstate.c lstring.c lstrlib.c \ + ltable.c ltablib.c ltm.c lundump.c lutf8lib.c \ + lvm.c lzio.c + +LUAOBJFILES = $(O)lapi.o $(O)lauxlib.o $(O)lbaselib.o \ + $(O)lcode.o $(O)lcorolib.o $(O)lctype.o $(O)ldblib.o \ + $(O)ldebug.o $(O)ldo.o $(O)ldump.o $(O)lfunc.o \ + $(O)lgc.o $(O)linit.o $(O)liolib.o $(O)llex.o \ + $(O)lmathlib.o $(O)lmem.o $(O)loadlib.o $(O)lobject.o \ + $(O)lopcodes.o $(O)loslib.o $(O)lparser.o $(O)lstate.o \ + $(O)lstring.o $(O)lstrlib.o $(O)ltable.o $(O)ltablib.o \ + $(O)ltm.o $(O)lundump.o $(O)lutf8lib.o $(O)lvm.o $(O)lzio.o + +!IF "$(LUAVER)" == "5.3.5" +LUASRCFILES = $(LUASRCFILES) lbitlib.c +LUAOBJFILES = $(LUAOBJFILES) $(O)lbitlib.o +!ELSE +# 5.4.0 added header files ljumptab.h and lopnames.h +# and removes lbitlib.c +!ENDIF +#===============-================================================= +# PDCurses build macros +# Source for the NetHack repository submodule in ../submodules/PDCurses +# is https://github.com/wmcbrine/PDCurses.git +#================================================================= +ADD_CURSES=Y +!IF "$(ADD_CURSES)" == "Y" +PDCURSES_TOP = ..\submodules\pdcurses +PDCURSES_CURSES_H = $(PDCURSES_TOP)\curses.h +PDCURSES_CURSPRIV_H = $(PDCURSES_TOP)\curspriv.h +PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H) +PDCSRC = $(PDCURSES_TOP)\pdcurses +PDCWINCON = $(PDCURSES_TOP)\wincon + +PDCLIBOBJS = $(O)addch.o $(O)addchstr.o $(O)addstr.o $(O)attr.o $(O)beep.o \ + $(O)bkgd.o $(O)border.o $(O)clear.o $(O)color.o $(O)delch.o $(O)deleteln.o \ + $(O)getch.o $(O)getstr.o $(O)getyx.o $(O)inch.o $(O)inchstr.o \ + $(O)initscr.o $(O)inopts.o $(O)insch.o $(O)insstr.o $(O)instr.o $(O)kernel.o \ + $(O)keyname.o $(O)mouse.o $(O)move.o $(O)outopts.o $(O)overlay.o $(O)pad.o \ + $(O)panel.o $(O)printw.o $(O)refresh.o $(O)scanw.o $(O)scr_dump.o $(O)scroll.o \ + $(O)slk.o $(O)termattr.o $(O)touch.o $(O)util.o $(O)window.o $(O)debug.o + +PDCOBJS = $(O)pdcclip.o $(O)pdcdisp.o $(O)pdcgetsc.o $(O)pdckbd.o $(O)pdcscrn.o \ + $(O)pdcsetsc.o $(O)pdcutil.o + +PDCLIB = $(O)pdcurses.lib + +PDCINCL = /I$(PDCURSES_TOP) /I$(PDCSRC) /I$(PDCWINCON) + +!ELSE +PDCLIB = +!ENDIF + HACKINCL = $(INCL)\align.h $(INCL)\artifact.h $(INCL)\artilist.h \ $(INCL)\attrib.h $(INCL)\botl.h $(INCL)\color.h $(INCL)\config.h \ $(INCL)\config1.h $(INCL)\context.h $(INCL)\coord.h $(INCL)\decl.h \ @@ -393,12 +407,8 @@ GITHASH = -DNETHACK_GIT_SHA=\"$(GIT_HASH)\" GITBRANCH = -DNETHACK_GIT_BRANCH=\"$(GIT_BRANCH)\" !ENDIF -!IFNDEF ADD_CURSES -CURSESOBJ= -!ELSE 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 SOBJ = $(O)windmain.o $(O)windsys.o $(O)win10.o \ $(O)safeproc.o $(O)nhlan.o $(SOUND) @@ -435,104 +445,6 @@ ALLOBJ = $(SOBJ) $(DLBOBJ) $(WOBJ) $(OBJS) $(VVOBJ) $(LUAOBJ) OPTIONS_FILE = $(DAT)\options -#===============-================================================= -# LUA library -# Source from http://www.lua.org/ftp/lua-5.4.4.tar.gz -#================================================================= - -!IFNDEF LUAVER -!IFDEF LUATOP -LUATMP = $(LUATOP:..\lib\lua-=) #strip leading "..\lib\lua-" -LUATMP = $(LUATMP:-beta=) #strip suffix if exists "-beta" -!IF "$(LUATMP)" == "5.4.0" -LUAVER = 5.4.0 -!ENDIF -!IF "$(LUATMP)" == "5.4.1" -LUAVER = 5.4.1 -!ENDIF -!IF "$(LUATMP)" == "5.4.2" -LUAVER = 5.4.2 -!ENDIF -!IF "$(LUATMP)" == "5.4.4" -LUAVER = 5.4.4 -!ENDIF -!ELSE -!ERROR NetHack 3.7 requires LUA so LUATOP must be defined -!ENDIF - -!IFNDEF LUAVER -LUATMP = $(LUATOP:..\lib\LUA-=) #strip leading "..\lib\LUA-" -LUATMP = $(LUATMP:-BETA=) #strip suffix if exists "-BETA" -!IF "$(LUATMP)" == "5.3.5" -LUAVER = 5.3.5 -!ELSE -LUAVER = 5.4.4 -!ENDIF -!ENDIF -!ENDIF - -LUASRC = $(LUATOP)\src -LUALIB = $(O)lua$(LUAVER)-static.lib -LUADLL = $(O)lua$(LUAVER).dll -LUAINCL = /I$(LUASRC) -LUATARGETS = lua.exe luac.exe $(LUADLL) $(LUALIB) - -LUASRCFILES = lapi.c lauxlib.c lbaselib.c lcode.c \ - lcorolib.c lctype.c ldblib.c ldebug.c ldo.c \ - ldump.c lfunc.c lgc.c linit.c liolib.c llex.c \ - lmathlib.c lmem.c loadlib.c lobject.c lopcodes.c \ - loslib.c lparser.c lstate.c lstring.c lstrlib.c \ - ltable.c ltablib.c ltm.c lundump.c lutf8lib.c \ - lvm.c lzio.c - -LUAOBJFILES = $(O)lapi.o $(O)lauxlib.o $(O)lbaselib.o \ - $(O)lcode.o $(O)lcorolib.o $(O)lctype.o $(O)ldblib.o \ - $(O)ldebug.o $(O)ldo.o $(O)ldump.o $(O)lfunc.o \ - $(O)lgc.o $(O)linit.o $(O)liolib.o $(O)llex.o \ - $(O)lmathlib.o $(O)lmem.o $(O)loadlib.o $(O)lobject.o \ - $(O)lopcodes.o $(O)loslib.o $(O)lparser.o $(O)lstate.o \ - $(O)lstring.o $(O)lstrlib.o $(O)ltable.o $(O)ltablib.o \ - $(O)ltm.o $(O)lundump.o $(O)lutf8lib.o $(O)lvm.o $(O)lzio.o - -!IF "$(LUAVER)" == "5.3.5" -LUASRCFILES = $(LUASRCFILES) lbitlib.c -LUAOBJFILES = $(LUAOBJFILES) $(O)lbitlib.o -!ELSE -# 5.4.0 added header files ljumptab.h and lopnames.h -# and removes lbitlib.c -!ENDIF - -!IF "$(ADD_CURSES)" == "Y" -#===============-================================================= -# PDCurses build macros -# Latest PDCurses from https://github.com/wmcbrine/PDCurses.git -#================================================================= - -PDCURSES_CURSES_H = $(PDCURSES_TOP)\curses.h -PDCURSES_CURSPRIV_H = $(PDCURSES_TOP)\curspriv.h -PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H) -PDCSRC = $(PDCURSES_TOP)\pdcurses -PDCWINCON = $(PDCURSES_TOP)\wincon - -PDCLIBOBJS = $(O)addch.o $(O)addchstr.o $(O)addstr.o $(O)attr.o $(O)beep.o \ - $(O)bkgd.o $(O)border.o $(O)clear.o $(O)color.o $(O)delch.o $(O)deleteln.o \ - $(O)getch.o $(O)getstr.o $(O)getyx.o $(O)inch.o $(O)inchstr.o \ - $(O)initscr.o $(O)inopts.o $(O)insch.o $(O)insstr.o $(O)instr.o $(O)kernel.o \ - $(O)keyname.o $(O)mouse.o $(O)move.o $(O)outopts.o $(O)overlay.o $(O)pad.o \ - $(O)panel.o $(O)printw.o $(O)refresh.o $(O)scanw.o $(O)scr_dump.o $(O)scroll.o \ - $(O)slk.o $(O)termattr.o $(O)touch.o $(O)util.o $(O)window.o $(O)debug.o - -PDCOBJS = $(O)pdcclip.o $(O)pdcdisp.o $(O)pdcgetsc.o $(O)pdckbd.o $(O)pdcscrn.o \ - $(O)pdcsetsc.o $(O)pdcutil.o - -PDCLIB = $(O)pdcurses.lib - -PDCINCL = /I$(PDCURSES_TOP) /I$(PDCSRC) /I$(PDCWINCON) - -!ELSE -PDCLIB = -!ENDIF - #========================================== # Header file macros #========================================== @@ -578,7 +490,7 @@ DATABASE = $(DAT)\data.base # ctags options # #CTAGSCMD=ctags-orig.exe -!IF "$(TRAVIS_BUILD_DIR)" != "" +!IF "$(TRAVIS_BUILD_DIR)" != "" CTAGSCMD=..\lib\ctags\ctags.exe !ELSE CTAGSCMD=..\..\..\ctags\ctags.exe @@ -925,12 +837,16 @@ default : install all : install -install: $(INCL)\nhlua.h $(O)envchk.tag $(O)obj.tag $(O)utility.tag \ +install: $(LUATOP)\lua.h $(INCL)\nhlua.h $(O)envchk.tag $(O)obj.tag $(O)utility.tag \ $(DAT)\data $(DAT)\rumors $(DAT)\oracles $(DAT)\engrave \ $(DAT)\epitaph $(DAT)\bogusmon $(GAMEDIR)\NetHack.exe \ $(GAMEDIR)\NetHackW.exe $(O)install.tag @echo Done. +$(LUATOP)\lua.h: + git submodule init + git submodule update --remote + #========================================== # Main game targets. #========================================== @@ -1078,11 +994,11 @@ $(O)utility.tag: $(INCL)\nhlua.h $(U)tile2bmp.exe $(U)makedefs.exe @echo utilities made. $(INCL)\nhlua.h: - @echo /* nhlua.h - generated by Makefile */ > $@ - @echo #include "../lib/lua-$(LUAVER)/src/lua.h" >> $@ + @echo /* nhlua.h - generated by Makefile from Makefile.msc */ > $@ + @echo #include "../submodules/lua/lua.h" >> $@ @echo LUA_API int (lua_error) (lua_State *L) NORETURN; >> $@ - @echo #include "../lib/lua-$(LUAVER)/src/lualib.h" >> $@ - @echo #include "../lib/lua-$(LUAVER)/src/lauxlib.h" >> $@ + @echo #include "../submodules/lua/lualib.h" >> $@ + @echo #include "../submodules/lua/lauxlib.h" >> $@ @echo /*nhlua.h*/ >> $@ tileutil: $(U)gif2txt.exe $(U)gif2tx32.exe $(U)txt2ppm.exe @@ -1307,7 +1223,7 @@ $(O)dlb$(HOST).o: $(O)dlb_main$(HOST).o $(O)alloc$(HOST).o $(O)panic$(HOST).o $( $(O)dlb.o: $(O)dlb_main.o $(O)alloc.o $(O)panic.o $(INCL)\dlb.h @$(cc) $(cflagsBuild) /Fo$@ $(SRC)\dlb.c - + !IFDEF TEST_CROSSCOMPILE $(O)dlb_main$(HOST).o: $(UTIL)\dlb_main.c $(INCL)\config.h $(INCL)\dlb.h @$(cc) $(cflagsBuild) $(CROSSCOMPILE) /Fo$@ $(UTIL)\dlb_main.c @@ -1494,8 +1410,8 @@ $(O)pdcscrn.o : $(PDCURSES_HEADERS) $(PDCWINCON)\pdcscrn.c $(MSWSYS)\stub-pdcscr lua.exe: $(O)lua.o $(LUALIB) link /OUT:$@ $(O)lua.o $(LUALIB) -luac.exe: $(O)luac.o $(LUALIB) - link /OUT:$@ $(O)luac.o $(LUALIB) +#luac.exe: $(O)luac.o $(LUALIB) +# link /OUT:$@ $(O)luac.o $(LUALIB) $(O)lua$(LUAVER).dll: $(LUAOBJFILES) link /DLL /IMPLIB:lua$(LUAVER).lib /OUT:$@ $(LUAOBJFILES) @@ -1504,7 +1420,7 @@ $(O)lua$(LUAVER)-static.lib: $(LUAOBJFILES) lib /OUT:$@ $(LUAOBJFILES) $(O)lua.o: $(LUASRC)\lua.c -$(O)luac.o: $(LUASRC)\luac.c +#$(O)luac.o: $(LUASRC)\luac.c $(O)lapi.o: $(LUASRC)\lapi.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -wd4244 -wd4701 -wd4702 -Fo$@ $(LUASRC)\lapi.c @@ -1722,7 +1638,7 @@ spotless: clean if exist $(U)tilemap.exe del $(U)tilemap.exe if exist $(U)uudecode.exe del $(U)uudecode.exe if exist $(U)dlb.exe del $(U)dlb.exe -!IF "$(ADD_CURSES)" == "Y" +!IF "$(ADD_CURSES)" == "Y" if exist $(O)pdcurses.lib del $(O)pdcurses.lib !ENDIF if exist $(DAT)\oracles del $(DAT)\oracles