rename sys/windows/Makefile.mingw32 to GNUmakefile

GNU make looks first for a file called GNUmakefile, ahead of
looking for Makefile and then makefile.

Renaming sys/windows/Makefile.mingw32 to sys/windows/GNUmakefile
allows:

o src/GNUmakefile (for use by GNU make) and src/Makefile (for use
  Microsoft nmake) to both reside in the src folder during build.

o src/GNUmakefile will be used by GNU make, without having to
  explicitly specify "-f GNUmakefile" on the GNU make command line.

o src/Makefile will be used by Microsoft nmake, without having to
  explicitly specify "-f Makefile" on the Microsoft nmake command line.

For the gcc build, the movemement of sys/windows/GNUmakefile needs
to be copied to src/GNUmakefile as part of the build process (see
sys/windows/build-msys2.txt).

For the Microsoft Visual Studio command line build with nmake,
sys/windows/Makefile.nmake needs to be copied to src/Makefile as
part of the build process (see sys/windows/build-nmake.txt).

They are both copied to the src folder from their respective
repository source file names when the nhsetup.bat file is used.
This commit is contained in:
nhmall
2024-12-02 19:04:08 -05:00
parent 1301234039
commit fec6320e68
12 changed files with 45 additions and 44 deletions

View File

@@ -164,10 +164,10 @@ steps:
export export
cd ../src cd ../src
pwd pwd
cp ../sys/windows/Makefile.mingw32* . cp ../sys/windows/GNUmakefile* .
mingw32-make -f Makefile.mingw32 CI_COMPILER=1 GIT=1 MSYSTEM=$MSYSTEM LUA_VERSION=$LUA_VERSION clean mingw32-make -f GNUmakefile CI_COMPILER=1 GIT=1 MSYSTEM=$MSYSTEM LUA_VERSION=$LUA_VERSION clean
mingw32-make -f Makefile.mingw32 CI_COMPILER=1 GIT=1 MSYSTEM=$MSYSTEM LUA_VERSION=$LUA_VERSION depend mingw32-make -f GNUmakefile CI_COMPILER=1 GIT=1 MSYSTEM=$MSYSTEM LUA_VERSION=$LUA_VERSION depend
mingw32-make -f Makefile.mingw32 CI_COMPILER=1 GIT=1 MSYSTEM=$MSYSTEM LUA_VERSION=$LUA_VERSION mingw32-make -f GNUmakefile CI_COMPILER=1 GIT=1 MSYSTEM=$MSYSTEM LUA_VERSION=$LUA_VERSION
condition: eq( variables.toolchain, 'mingw' ) condition: eq( variables.toolchain, 'mingw' )
workingDirectory: $(Agent.BuildDirectory)/$(netHackPath)/src workingDirectory: $(Agent.BuildDirectory)/$(netHackPath)/src
displayName: 'MinGW Build' displayName: 'MinGW Build'

View File

@@ -2863,9 +2863,8 @@ use %lu, not %d, in format string in timer_sanity_check() (pr #617 by argrath)
bad cast making sp_lev chameleon light source (pr #625 by entrez) bad cast making sp_lev chameleon light source (pr #625 by entrez)
add Ray Chason's adaptation of nethack's Qt5 interface to work with Qt6 (issue add Ray Chason's adaptation of nethack's Qt5 interface to work with Qt6 (issue
#525 followup comment by chasonr) #525 followup comment by chasonr)
mingw32 build updates and replacement of sys/windows/Makefile.gcc with new mingw32 build updates to replace contents of sys/windows/GNUmakefile and new
sys/windows/Makefile.mingw32 and sys/windows/Makefile.mingw32.depend sys/windows/GNUmakefile.depend (pr #661 by feiyunw)
(pr #661 by feiyunw)
mark various pointers to const char as const pointers (pr #624 by argrath) mark various pointers to const char as const pointers (pr #624 by argrath)
function fill_special_room() in sp_lev.c was dereferencing a pointer function fill_special_room() in sp_lev.c was dereferencing a pointer
argument prior to a subsequent check for a NULL pointer that argument prior to a subsequent check for a NULL pointer that

View File

@@ -508,8 +508,8 @@ use the following guidelines:
Windows with Visual studio nmake at the command Windows with Visual studio nmake at the command
line. line.
sys/windows/Makefile.mingw32 sys/windows/GNUmakefile
sys/windows/Makefile.mingw32.depend sys/windows/GNUmakefile.depend
Will require updates in order to build on Will require updates in order to build on
Windows with mingw32 or MSYS2 using GNU make at Windows with mingw32 or MSYS2 using GNU make at

View File

@@ -107,11 +107,6 @@ extern char *windows_exepath(void);
#ifdef strcasecmp #ifdef strcasecmp
#undef strcasecmp #undef strcasecmp
/* https://sourceforge.net/p/mingw-w64/wiki2/gnu%20printf/ */ /* https://sourceforge.net/p/mingw-w64/wiki2/gnu%20printf/ */
#ifdef __USE_MINGW_ANSI_STDIO
#undef __USE_MINGW_ANSI_STDIO
#endif
/* with UCRT, we don't define this to 1 */
#define __USE_MINGW_ANSI_STDIO 0
#endif #endif
/* extern int getlock(void); */ /* extern int getlock(void); */
#endif /* __GNUC__ */ #endif /* __GNUC__ */

6
src/.gitattributes vendored
View File

@@ -1,8 +1,8 @@
* NH_filestag=(file%s_for_all_versions) * NH_filestag=(file%s_for_all_versions)
..files NH_filegenerated=Makefile,Makefile.mingw32,qt_kde0.moc,qt_main.moc,qt_map.moc,qt_menu.moc,qt_msg.moc,qt_plsel.moc,qt_set.moc,qt_stat.moc,qt_xcmd.moc,qt_yndlg.moc,tile.c,monstr.c ..files NH_filegenerated=Makefile,GNUmakefile,qt_kde0.moc,qt_main.moc,qt_map.moc,qt_menu.moc,qt_msg.moc,qt_plsel.moc,qt_set.moc,qt_stat.moc,qt_xcmd.moc,qt_yndlg.moc,tile.c,monstr.c
Makefile.mingw32 NH_filesgentag=(file%s_for_win32_that_are_moved_into_src_at_compile_time) GNUmakefile NH_filesgentag=(file%s_for_win32_that_are_moved_into_src_at_compile_time)
Makefile NH_filesgentag=>Makefile.mingw32 Makefile NH_filesgentag=>GNUmakefile
qt_kde0.moc NH_filesgentag=(file%s_generated_by_'moc'_for_Qt_interface_at_compile_time) qt_kde0.moc NH_filesgentag=(file%s_generated_by_'moc'_for_Qt_interface_at_compile_time)
qt_main.moc NH_filesgentag=>qt_kde0.moc qt_main.moc NH_filesgentag=>qt_kde0.moc

4
src/.gitignore vendored
View File

@@ -28,6 +28,6 @@ objutil/*
objlua/* objlua/*
objpdc/* objpdc/*
bundle/* bundle/*
Makefile.mingw32 GNUmakefile
Makefile.mingw32.depend GNUmakefile.depend
.*.c .*.c

View File

@@ -1,11 +1,11 @@
# NetHack 3.7 Makefile.mingw32 # NetHack 3.7 GNUmakefile
# Copyright (c) 2022 by Feiyun Wang # Copyright (c) 2022 by Feiyun Wang
#-Copyright (c) 2022 by Michael Allison #-Copyright (c) 2022 by Michael Allison
# NetHack may be freely redistributed. See license for details. # NetHack may be freely redistributed. See license for details.
# #
#============================================================================== #==============================================================================
# #
# Win32 Compilers Tested with this Makefile.mingw32: # Win32 Compilers Tested with this GNUmakefile:
# mingw-w64 # mingw-w64
# from: # from:
# https://sourceforge.net/p/mingw-w64/wiki2/GeneralUsageInstructions/ # https://sourceforge.net/p/mingw-w64/wiki2/GeneralUsageInstructions/
@@ -430,7 +430,7 @@ CLEAN_FILE += $(LUATARGETS) $(LUAOBJS) $(OLUA)/lua.o $(OLUA)/luac.o
NHLUAH = $(INCL)/nhlua.h NHLUAH = $(INCL)/nhlua.h
$(NHLUAH): $(NHLUAH):
echo "/* nhlua.h - generated by Makefile.mingw32 */" > $@ echo "/* nhlua.h - generated by GNUmakefile */" > $@
@echo "#include \"$(LUASRC)/lua.h\"" >> $@ @echo "#include \"$(LUASRC)/lua.h\"" >> $@
@echo "LUA_API int (lua_error) (lua_State *L) NORETURN;" >>$@ @echo "LUA_API int (lua_error) (lua_State *L) NORETURN;" >>$@
@echo "#include \"$(LUASRC)/lualib.h\"" >> $@ @echo "#include \"$(LUASRC)/lualib.h\"" >> $@
@@ -1296,6 +1296,6 @@ clean:
@$(foreach dir, $(CLEAN_DIR), \ @$(foreach dir, $(CLEAN_DIR), \
if [ -d $(dir) ] ; then rmdir -p --ignore $(dir) ; fi ; ) if [ -d $(dir) ] ; then rmdir -p --ignore $(dir) ; fi ; )
-include Makefile.mingw32.depend -include GNUmakefile.depend
-include .depend -include .depend
# end of file # end of file

View File

@@ -2,12 +2,12 @@
cce = gcc -E -MM -MT "$(@:d=o) $@" cce = gcc -E -MM -MT "$(@:d=o) $@"
# Copy all $(cc) commands w/ their targets from Makefile.mingw32, 3rd party code unnecessary # Copy all $(cc) commands w/ their targets from GNUmakefile, 3rd party code unnecessary
# Replace .o w/ .d, $(cc) w/ $(cce) # Replace .o w/ .d, $(cc) w/ $(cce)
# Check extraordinary "OBJ): " and handle them properly # Check extraordinary "OBJ): " and handle them properly
# Check all CLEAN_FILE lines, add obj files to $(OBJS4DEP) # Check all CLEAN_FILE lines, add obj files to $(OBJS4DEP)
# Run # Run
# mingw32-make depend # make depend
$(HL)/%.d: $(SRC)/%.c | $(HL) $(HL)/%.d: $(SRC)/%.c | $(HL)
$(cce) $(CFLAGSU) $< -o$@ $(cce) $(CFLAGSU) $< -o$@

View File

@@ -92,9 +92,11 @@ I. Dispelling the Myths:
as it looks, however it will behoove you to read this entire section as it looks, however it will behoove you to read this entire section
through before beginning the task. through before beginning the task.
We have provided Makefile.mingw32 in We have provided GNUmakefile in sys/windows/GNUmakefile, which you use
sys/windows/Makefile.mingw32, which you use from the bash Windows command from the bash Windows command shell included with MSYS2. It is called
shell included with MSYS2. GNUmakefile because that is the first name searched for by the GNU
make utility thus preventing conflict with the Makefile used by the
Microsoft nmake utility.
II. To compile your copy of NetHack on a Windows machine using MSYS2: II. To compile your copy of NetHack on a Windows machine using MSYS2:
@@ -106,7 +108,7 @@ Setting Up
2. Execute the following command to place copies of the Makefiles in 2. Execute the following command to place copies of the Makefiles in
the src subfolder. the src subfolder.
cp sys/windows/Makefile.mingw32* src cp sys/windows/GNUmakefile* src
3. Change your current directory to the src subfolder of the nethack 3. Change your current directory to the src subfolder of the nethack
source tree. The following command assumes you are still in the source tree. The following command assumes you are still in the
@@ -120,10 +122,12 @@ Compiling
Your current directory should be the NetHack src directory. Your current directory should be the NetHack src directory.
Issue these following commands: Issue these following commands, which will find and use GNUmakefile
make -f Makefile.mingw32 clean by default:
make -f Makefile.mingw32 depend
make -f Makefile.mingw32 make clean
make depend
make
If all goes well, intermediate NetHack files will be placed in the If all goes well, intermediate NetHack files will be placed in the
binary subfolder of the NetHack tree, and the final NetHack package binary subfolder of the NetHack tree, and the final NetHack package
@@ -132,10 +136,8 @@ Compiling
Notes: Notes:
1. To rebuild NetHack after changing something, change your current directory 1. To rebuild NetHack after changing something, change your current directory
to src and issue the appropriate command for your compiler: to src and issue the following command:
make
For gcc:
make -f Makefile.mingw32
2. An alternative to MSYS2 may be MinGW-w64 - winlibs standalone build. 2. An alternative to MSYS2 may be MinGW-w64 - winlibs standalone build.
That has not been tested by us at time of writing. That has not been tested by us at time of writing.

View File

@@ -47,10 +47,10 @@ echo ..\..\src\Makefile-orig
copy /Y Makefile.nmake ..\..\src\Makefile >nul copy /Y Makefile.nmake ..\..\src\Makefile >nul
echo Microsoft nmake Makefile.nmake copy to ..\..\src\Makefile completed. echo Microsoft nmake Makefile.nmake copy to ..\..\src\Makefile completed.
echo Copying mingw-w64 Makefile.mingw32 to ..\..\src\Makefile.mingw32 echo Copying mingw-w64 GNUmakefile to ..\..\src\GNUmakefile
copy /Y Makefile.mingw32 ..\..\src\Makefile.mingw32 >nul copy /Y GNUmakefile ..\..\src\GNUmakefile >nul
echo Copying mingw-w64 Makefile.mingw32.depend to ..\..\src\Makefile.mingw32.depend echo Copying mingw-w64 GNUmakefile.depend to ..\..\src\GNUmakefile.depend
copy /Y Makefile.mingw32.depend ..\..\src\Makefile.mingw32.depend >nul copy /Y GNUmakefile.depend ..\..\src\GNUmakefile.depend >nul
echo mingw-w64 Makefile copies to ..\..\src completed. echo mingw-w64 Makefile copies to ..\..\src completed.
echo Done copying files. echo Done copying files.

View File

@@ -33,7 +33,7 @@ NetHack 3.7 and above.
Windows build instructions: Windows build instructions:
By default, the Makefile.msc and Makefile.mingw32 are set up to build By default, the Makefile.nmake and GNUmakefile are set up to build
curses from the submodules/pdcurses submodules folder (assumes you curses from the submodules/pdcurses submodules folder (assumes you
obtained your NetHack sources via cloning a git repository), obtained your NetHack sources via cloning a git repository),
If you obtained your NetHack by another means, such as a zip download, If you obtained your NetHack by another means, such as a zip download,

View File

@@ -65,6 +65,11 @@
* *********************************************************** * ***********************************************************
*/ */
void safe_dismiss_nhwindow(winid);
void safe_putstr(winid, int, const char *);
void win_safe_init(int);
void safe_number_pad(int);
struct window_procs safe_procs = { struct window_procs safe_procs = {
WPID(safestartup), WPID(safestartup),
(0 (0
@@ -225,7 +230,7 @@ safe_curs(winid window UNUSED, int x UNUSED, int y UNUSED)
} }
void void
safe_putstr(winid window, int attr, const char *str) safe_putstr(winid window UNUSED, int attr UNUSED, const char *str UNUSED)
{ {
return; return;
} }
@@ -424,7 +429,7 @@ safe_get_ext_cmd(void)
} }
void void
safe_number_pad(int mode) safe_number_pad(int mode UNUSED)
{ {
return; return;
} }