Commit Graph

466 Commits

Author SHA1 Message Date
nhmall
cf7a514596 consoletty.c bit
restrict a debugging line
2026-04-07 13:59:43 -04:00
nhmall
0a3b8a7b72 Makefile.nmake tweaking 2026-04-05 20:28:43 -04:00
nhmall
6234e96b57 Change Windows startup - take 2
remove the safeproc pseudo-windowport routines from
almost a decade ago.

A very early pass is made through the config file,
seeking out just the interface-related OPTIONS=windowport
and OPTIONS=soundlib and ignoring all other options in the
config file during that early pass, so the windowport
can be activated without the NetHack core initialization
in place that some of the other rcfile OPTIONS require.

Bundles the existing rcfile processing code into rcfile().

New functions to control which rcfile options will be
disregarded in the early config file pass, and which will be
processed:

    set_all_options_disregarded();
    set_all_options_heeded();
    disregard_this_option(opt_xx);
    heed_this_option(opt_xx);

Windows calls rcfile_interface_options(), which is
a bundling of a series of function calls to achieve
the desired result.

    void
    rcfile_interface_options(void)
    {
        allopt_array_init();
        set_all_options_disregarded();
        heed_this_option(opt_windowtype);
        heed_this_option(opt_soundlib);
        rcfile();
        set_all_options_heeded();
        disregard_this_option(opt_windowtype);
        disregard_this_option(opt_soundlib);
    }
2026-04-05 13:11:14 -04:00
nhmall
db1f230772 Revert "Change Windows startup"
This reverts commit acb85b18cf.

Some optlist issues arose on some platforms, but not all.
I need to investigate the cause of those.
2026-04-05 12:07:57 -04:00
nhmall
acb85b18cf Change Windows startup
remove the safeproc pseudo-windowport routines from
almost a decade ago.

A very early pass is made through the config file,
seeking out just the interface-related OPTIONS=windowport
and OPTIONS=soundlib and ignoring all other options in the
config file during that early pass, so the windowport
can be activated without the NetHack core initialization
in place that some of the other rcfile OPTIONS require.

Bundles the existing rcfile processing code into rcfile().

New functions to control which rcfile options will be
disregarded in the early config file pass, and which will be
processed:

    set_all_options_disregarded();
    set_all_options_heeded();
    disregard_this_option(opt_xx);
    heed_this_option(opt_xx);

Windows calls rcfile_interface_options(), which is
a bundling of a series of function calls to achieve
the desired result.

    void
    rcfile_interface_options(void)
    {
        allopt_array_init();
        set_all_options_disregarded();
        heed_this_option(opt_windowtype);
        heed_this_option(opt_soundlib);
        rcfile();
        set_all_options_heeded();
        disregard_this_option(opt_windowtype);
        disregard_this_option(opt_soundlib);
    }
2026-04-05 11:37:20 -04:00
nhmall
92340a6827 consolidate some arg processing
Unix and Windows had diverged significantly for command line
options handling.

This:
   1. uses the the Unix processing as a baseline.
   2. consolidates the code in earlyarg.c, where it can
      be a common copy to be shared.
   3. start converting the Windows command line argument
      processing to the Unix code that now resides in earlyarg.c.
2026-04-04 13:44:23 -04:00
nhmall
7120a7190e some more discarded-qualifiers fixes 2026-04-04 07:52:06 -04:00
nhmall
686618f34d move early arg and enum dump processing to own file 2026-04-01 08:32:13 -04:00
nhmall
12663473ab update tested versions of Visual Studio 2026-03-29 2026-03-29 20:20:56 -04:00
Pasi Kallinen
d78af5cec7 Add monster spell header file mcastu.h
Move the monster spell definitions there, and use hackery
(similar to objects.h) to generate enum and data from
the header file.

I have not tested Windows, VMS, or Amiga builds.
2026-03-24 17:26:24 +02:00
nhmall
044a229467 whitespace cleanup: tabs to spaces in sys 2026-03-19 20:33:03 -04:00
nhmall
8d33cafb3e update tested versions of Visual Studio 2026-03-17 2026-03-17 14:25:24 -04:00
nhmall
7cff1696b7 update tested versions of Visual Studio 2026-03-12 2026-03-12 09:28:37 -04:00
nhmall
7261c848c7 update tested versions of Visual Studio 2026-03-01 2026-03-01 09:25:55 -05:00
nhmall
cccb0303ed update tested versions of Visual Studio 2026-02-12 2026-02-12 07:01:52 -05:00
nhmall
e1a3180535 update tested versions of Visual Studio 2026-01-25 2026-01-25 09:51:22 -05:00
nhmall
239286e1fb update tested versions of Visual Studio 2026-01-14 2026-01-14 14:27:15 -05:00
Pasi Kallinen
d0b9846367 Move item actions into separate src file
Haven't tested compilation on Windows and VMS ...
2026-01-11 14:46:25 +02:00
Pasi Kallinen
99b893c786 Add a new bigroom variant "pillars"
Some variants have a bigroom variant called "Mines of Moria";
this one is very much that, but has several different arrangements
of the pillars.
2026-01-09 19:39:45 +02:00
nhmall
642cf9a93e bump Lua references from 5.4.6 to 5.4.8 2026-01-04 11:12:50 -05:00
nhmall
4d33d00ad2 update tested versions of Visual Studio 2025-12-26 2025-12-26 12:37:28 -05:00
nhmall
99c888f393 update tested versions of Visual Studio 2025-12-10 2025-12-10 07:21:47 -05:00
nhmall
727608411a a follow-up bit
package up debug symbols for sfctool if SFCTOOL=1
2025-12-02 09:48:10 -05:00
nhmall
44f6a779a7 follow-up for Makefile.nmake
Fix package error

Closes #1468
2025-12-02 08:39:17 -05:00
nhmall
089424fef2 update Makefile.nmake
don't include sfctool unless explicitly sought via SFCTOOL=1 on the make
command line.

add [optional]
    nmake fetch-ctags
    nmake build-ctags
2025-12-01 09:01:33 -05:00
nhmall
53247ec474 Makefile.nmake update 2025-11-24 19:27:59 -05:00
nhmall
ae516ddc67 follow-up: reverse one warning-related change 2025-11-23 09:49:49 -05:00
nhmall
0faa3a70cc clear up some warnings in sys/windows/consoletty.c 2025-11-23 09:28:38 -05:00
nhmall
f78e0d0caf MSYS CLANGARM64 bit 2025-11-22 10:39:37 -05:00
nhmall
113607823d Windows warning bit in windsys.c
windows/windsys.c:263:15: warning: format string is not a string literal
      (potentially insecure) [-Wformat-security]
  263 |         msmsg(buf);
      |               ^~~
../sys/windows/windsys.c:263:15: note: treat the string as an argument to avoid this
  263 |         msmsg(buf);
      |               ^
      |               "%s",
../sys/windows/windsys.c:267:20: warning: format string is not a string literal
      (potentially insecure) [-Wformat-security]
  267 |         raw_printf(buf);
      |                    ^~~
2025-11-22 10:34:45 -05:00
nhmall
69886bd3d1 typo fix 2025-11-20 14:32:23 -05:00
nhmall
57ccb6208e another documentation update build-vs.txt 2025-11-20 14:28:59 -05:00
nhmall
edc04fbf77 documentation update build-vs.txt 2025-11-20 14:15:00 -05:00
nhmall
7e7f393aef update tested versions of Visual Studio 2025-11-20 2025-11-20 10:45:35 -05:00
nhmall
e3a00c2ce3 roll back changes to 2 files; issue in CI 2025-11-18 20:36:15 -05:00
nhmall
be10b30914 more Visual Studio vcxproj tweaking 2025-11-18 20:03:05 -05:00
nhmall
ec04123a71 lualib.vcxproj bit 2025-11-18 19:10:28 -05:00
nhmall
2b0c083894 nmake trailing slash fix 2025-11-18 19:04:07 -05:00
nhmall
df54c155b2 yet another Visual Studio follow-up
yet another path correction
2025-11-18 18:56:35 -05:00
nhmall
9221247e24 another Visual Studio follow-up
path fix
2025-11-18 18:54:14 -05:00
nhmall
6de1f39c38 follow-up Visual Studio package fix 2025-11-18 18:27:45 -05:00
nhmall
a9d11db853 visual studio project tweaks 2025-11-18 13:44:55 -05:00
nhmall
b1cffe11f9 Cross-compiling on Windows 11 with Visual Studio
Cross-compiling NetHack with Visual Studio from an x64 platform to an ARM64
target presents some new build challenges.

In the current nethack.sln solution, the build attempts to execute the
several just-built tools during the build of various subprojects.

For example, when cross-compiling on a typical Windows 11 x64 machine
to build a target ARM64 Windows 11 package, the build process tries to
run the following just-built target tools:

(under a Debug build)
    "$(ToolsDir)\Debug\ARM64\uudecode.exe"
    "$(ToolsDir)\Debug\ARM64\makedefs.exe"
    "$(ToolsDir)\Debug\ARM64\tilemap.exe"
    "$(ToolsDir)\Debug\ARM64\tile2bmp.exe"
    "$(ToolsDir)\Debug\ARM64\dlb.exe"

(under a Release build)
    "$(ToolsDir)\Release\ARM64\uudecode.exe"
    "$(ToolsDir)\Release\ARM64\makedefs.exe"
    "$(ToolsDir)\Release\ARM64\tilemap.exe"
    "$(ToolsDir)\Release\ARM64\tile2bmp.exe"
    "$(ToolsDir)\Release\ARM64\dlb.exe"

Those fail to execute successfully on Intel x64 (or x86) since they
are actually ARM64 executables, and the build attempts to execute
them on the host Intel x64 hardware.

The situation is a little different if the cross-compile is carried out
on a Windows 11 ARM64 machine (such as SnapDragon).

On an ARM64 machine, the cross-compile to build a target Intel x64
Windows 11 package, tries to execute the following:

(under a Debug build)
    "$(ToolsDir)\Debug\x64\uudecode.exe"
    "$(ToolsDir)\Debug\x64\makedefs.exe"
    "$(ToolsDir)\Debug\x64\tilemap.exe"
    "$(ToolsDir)\Debug\x64\tile2bmp.exe"
    "$(ToolsDir)\Debug\x64\dlb.exe"

(under a Release build)
    "$(ToolsDir)\Release\x64\uudecode.exe"
    "$(ToolsDir)\Release\x64\makedefs.exe"
    "$(ToolsDir)\Release\x64\tilemap.exe"
    "$(ToolsDir)\Release\x64\tile2bmp.exe"
    "$(ToolsDir)\Release\x64\dlb.exe"

Those actual do succeed in executing on ARM64, because of the
"prism emulation" that is available on Windows 11 ARM64 operating
systems to allow x64 and x86 executables to run.

The following change adds some detection to build environment, leading
to the definition of a "HostTools" macro that leads to the native host
tools for those steps.

There is a catch:

It means that the native build of the interim tools for Windows 11 must
be executed prior to attempting a cross-compile build to a non-native
target. That ensures that the native x64 interim uudecode, makedefs,
tilemap, tile2bmp and dlb tools are available on the disk for use by
a subsequent cross-compile.

This change consistently switches to the use of the host-native
interim tools for uudecode, makedefs, tilemap, tile2bmp and dlb tools.

Technically, this change would not be strictly necessary on an
ARM64-hosted build that was targeting x64 or x86, because of the
available prism-emulation that allows ARM64, x64, and x86 images to
execute, but this maintains consistency of the build process on
either platform. It is also likely that the native host versions execute
more quickly than versions requiring the prism emulation, although
that isn't really a concern for a NetHack build.

The use of native host uudecode, makedefs, tilemap, tile2bmp and
dlb tools is done with the Unix-hosted cross-compiles to other
target platforms as well (on Linux or macOS).
2025-11-18 10:10:32 -05:00
nhmall
a6801b004c use lowercase platform name in zip file name 2025-11-17 21:02:45 -05:00
nhmall
8f97b824d5 visual studio build update
address warning disparity between ARM64 and x64
2025-11-17 20:44:08 -05:00
nhmall
7dbc0ac6b8 visual studio Makefile variable 2025-11-16 15:48:05 -05:00
nhmall
043b867da7 yet-another follow-up for NetHackW.vcxproj 2025-11-16 15:31:41 -05:00
nhmall
f790458587 follow-up bit for NetHackW.vcxproj
Remove a resource compiler architecture conditional, since it does not vary between
the different architectures. This is simpler.
2025-11-16 15:26:49 -05:00
nhmall
4f59f24485 some vcxproj fixes 2025-11-16 15:16:10 -05:00
nhmall
3885638934 update suppressed warnings in NetHack vcxproj
Also be more consistent on preprocessor #define entries between
Visual Studio builds and command line nmake Makefile builds.
2025-11-16 14:12:14 -05:00