From: bones_was_here <bones_was_here@xonotic.au>
Date: Sun, 18 Aug 2024 20:12:07 +0000 (+1000)
Subject: build: set stack limit on Windows and Emscripten to match other platforms
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=3622be3fbfe3d552dec40ce2a7c54a509910748e;p=xonotic%2Fdarkplaces.git

build: set stack limit on Windows and Emscripten to match other platforms

Linux, FreeBSD, macOS all default to 8MB for the main thread. MSVC
defaulted to 1MB, MinGW GCC to 2MB.

Optimises Emscripten build slightly and replaces its deprecated
TOTAL_STACK setting.

Signed-off-by: bones_was_here <bones_was_here@xonotic.au>
---

diff --git a/darkplaces-sdl2-vs2019.vcxproj b/darkplaces-sdl2-vs2019.vcxproj
index f94592a5..f68f7c97 100644
--- a/darkplaces-sdl2-vs2019.vcxproj
+++ b/darkplaces-sdl2-vs2019.vcxproj
@@ -99,6 +99,7 @@
       <TargetMachine>MachineX86</TargetMachine>
       <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <LargeAddressAware>true</LargeAddressAware>
+      <StackReserveSize>8388608</StackReserveSize>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -126,6 +127,7 @@
       <SubSystem>Windows</SubSystem>
       <TargetMachine>MachineX64</TargetMachine>
       <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <StackReserveSize>8388608</StackReserveSize>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -153,6 +155,7 @@
       <TargetMachine>MachineX86</TargetMachine>
       <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <LargeAddressAware>true</LargeAddressAware>
+      <StackReserveSize>8388608</StackReserveSize>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -182,6 +185,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <TargetMachine>MachineX64</TargetMachine>
       <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <StackReserveSize>8388608</StackReserveSize>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
diff --git a/makefile.inc b/makefile.inc
index c0ec06fe..9cfed413 100644
--- a/makefile.inc
+++ b/makefile.inc
@@ -236,14 +236,14 @@ LDFLAGS_WASMJS=$(LDFLAGS_UNIXCOMMON) -s USE_SDL=2 \
                                    -s USE_LIBJPEG=1 \
                                    -s USE_ZLIB=1 \
                                    -s INITIAL_MEMORY=128mb \
-                                   -s MAXIMUM_MEMORY=1gb \
+                                   -s MAXIMUM_MEMORY=2gb \
                                    -s SINGLE_FILE \
                                    -s FULL_ES3 \
                                    -s MIN_WEBGL_VERSION=2 \
                                    -s MAX_WEBGL_VERSION=2 \
                                    -s ALLOW_MEMORY_GROWTH=1 \
-                                   -s ASSERTIONS=2 \
-                                   -s TOTAL_STACK=32mb \
+                                   -s ASSERTIONS=1 \
+                                   -s STACK_SIZE=8mb \
                                    -DUSE_GLES2 \
                                    -lidbfs.js \
                                    --pre-js ../../../wasm/pre.js \
@@ -254,14 +254,14 @@ LDFLAGS_WASM=$(LDFLAGS_UNIXCOMMON) -s USE_SDL=2 \
                                    -s USE_LIBJPEG=1 \
                                    -s USE_ZLIB=1 \
                                    -s INITIAL_MEMORY=128mb \
-                                   -s MAXIMUM_MEMORY=1gb \
+                                   -s MAXIMUM_MEMORY=2gb \
                                    -s SINGLE_FILE \
                                    -s FULL_ES3 \
                                    -s MIN_WEBGL_VERSION=2 \
                                    -s MAX_WEBGL_VERSION=2 \
                                    -s ALLOW_MEMORY_GROWTH=1 \
-                                   -s ASSERTIONS=2 \
-                                   -s TOTAL_STACK=32mb \
+                                   -s ASSERTIONS=1 \
+                                   -s STACK_SIZE=8mb \
                                    -DUSE_GLES2 \
                                    -lidbfs.js \
                                    --pre-js ../../../wasm/standaloneprejs.js \
@@ -299,8 +299,8 @@ WINDRES ?= windres
 
 # Link
 # see LDFLAGS_WINCOMMON in makefile
-LDFLAGS_WINSV=$(LDFLAGS_WINCOMMON) $(LIB_CRYPTO) $(LIB_CRYPTO_RIJNDAEL) -mconsole -lwinmm -lws2_32 $(LIB_Z) $(LIB_JPEG)
-LDFLAGS_WINSDL=$(LDFLAGS_WINCOMMON) $(LIB_CRYPTO) $(LIB_CRYPTO_RIJNDAEL) $(LDFLAGS_UNIXSDL) -lwinmm -lws2_32 $(LIB_Z) $(LIB_JPEG) $(LIB_SND_XMP)
+LDFLAGS_WINSV=$(LDFLAGS_WINCOMMON) $(LIB_CRYPTO) $(LIB_CRYPTO_RIJNDAEL) -mconsole -lwinmm -lws2_32 -Wl,--stack=0x800000 $(LIB_Z) $(LIB_JPEG)
+LDFLAGS_WINSDL=$(LDFLAGS_WINCOMMON) $(LIB_CRYPTO) $(LIB_CRYPTO_RIJNDAEL) $(LDFLAGS_UNIXSDL) -lwinmm -lws2_32 -Wl,--stack=0x800000 $(LIB_Z) $(LIB_JPEG) $(LIB_SND_XMP)
 EXE_WINSV=darkplaces-dedicated.exe
 EXE_WINSDL=darkplaces-sdl.exe
 EXE_WINSVNEXUIZ=nexuiz-dedicated.exe