diff --git a/.github/scripts/windows/build_task.bat b/.github/scripts/windows/build_task.bat index e8d84b8c0bfd6..96d233746d2f5 100644 --- a/.github/scripts/windows/build_task.bat +++ b/.github/scripts/windows/build_task.bat @@ -5,9 +5,9 @@ if /i "%GITHUB_ACTIONS%" neq "True" ( exit /b 3 ) -del /f /q C:\Windows\System32\libcrypto-1_1-x64.dll >NUL 2>NUL +del /f /q C:\Windows\System32\libcrypto-1_1-x86.dll >NUL 2>NUL if %errorlevel% neq 0 exit /b 3 -del /f /q C:\Windows\System32\libssl-1_1-x64.dll >NUL 2>NUL +del /f /q C:\Windows\System32\libssl-1_1-x86.dll >NUL 2>NUL if %errorlevel% neq 0 exit /b 3 call %~dp0find-target-branch.bat @@ -40,6 +40,7 @@ if "%PLATFORM%" == "x86" ( cmd /c configure.bat ^ --enable-snapshot-build ^ + --enable-debug-assertions ^ --disable-debug-pack ^ --enable-com-dotnet=shared ^ --without-analyzer ^ diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 086c5cc0347bd..8aee2a79b1816 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -235,7 +235,7 @@ jobs: uses: ./.github/actions/verify-generated-files WINDOWS: if: github.repository == 'php/php-src' || github.event_name == 'pull_request' - name: WINDOWS_X64_ZTS + name: WINDOWS_X86_ZTS runs-on: windows-2022 env: PHP_BUILD_CACHE_BASE_DIR: C:\build-cache @@ -243,7 +243,7 @@ jobs: PHP_BUILD_CACHE_SDK_DIR: C:\build-cache\sdk PHP_BUILD_SDK_BRANCH: php-sdk-2.3.0 PHP_BUILD_CRT: vs17 - PLATFORM: x64 + PLATFORM: x86 THREAD_SAFE: "1" INTRINSICS: AVX2 PARALLEL: -j2 diff --git a/win32/build/config.w32 b/win32/build/config.w32 index c4a617a2e16ec..b5e6c4417e62b 100644 --- a/win32/build/config.w32 +++ b/win32/build/config.w32 @@ -32,6 +32,10 @@ ARG_ENABLE('debug-pack', 'Release binaries with external debug symbols (--enable if (PHP_DEBUG == "yes" && PHP_DEBUG_PACK == "yes") { ERROR("Use of both --enable-debug and --enable-debug-pack not allowed."); } +ARG_ENABLE('debug-assertions', 'Release binaries with debug assertions (--enable-debug must not be specified)', "no"); +if (PHP_DEBUG == "yes" && PHP_DEBUG_ASSERTIONS == "yes") { + ERROR("Use of both --enable-debug and --enable-debug-assertions not allowed."); +} if (PHP_DEBUG == "yes") { ADD_FLAG("CFLAGS"," /Wall "); diff --git a/win32/build/confutils.js b/win32/build/confutils.js index b72950954c0f7..bf0cdd3109362 100644 --- a/win32/build/confutils.js +++ b/win32/build/confutils.js @@ -456,7 +456,7 @@ can be built that way. \ var snapshot_build_exclusions = new Array( 'debug', 'lzf-better-compression', 'php-build', 'snapshot-template', 'zts', 'ipv6', 'fd-setsize', 'pgi', 'pgo', 'all-shared', 'config-profile', 'sanitizer', - 'phpdbg-debug' + 'phpdbg-debug', 'debug-assertions' ); var force; @@ -3473,10 +3473,15 @@ function toolset_setup_build_mode() } ADD_FLAG("CFLAGS", "/LD /MD"); if (PHP_SANITIZER == "yes" && CLANG_TOOLSET) { - ADD_FLAG("CFLAGS", "/Od /D NDebug /D NDEBUG /D ZEND_WIN32_NEVER_INLINE /D ZEND_DEBUG=0"); + ADD_FLAG("CFLAGS", "/Od /D NDebug /D NDEBUG /D ZEND_WIN32_NEVER_INLINE"); } else { // Equivalent to Release_TSInline build -> best optimization - ADD_FLAG("CFLAGS", "/Ox /D NDebug /D NDEBUG /GF /D ZEND_DEBUG=0"); + ADD_FLAG("CFLAGS", "/Ox /D NDebug /D NDEBUG /GF"); + } + if (PHP_DEBUG_ASSERTIONS == "yes") { + ADD_FLAG("CFLAGS", "/D ZEND_DEBUG=1"); + } else { + ADD_FLAG("CFLAGS", "/D ZEND_DEBUG=0"); } // if you have VS.Net /GS hardens the binary against buffer overruns diff --git a/win32/winutil.c b/win32/winutil.c index e09944d131b9b..6e4325dcaecca 100644 --- a/win32/winutil.c +++ b/win32/winutil.c @@ -486,7 +486,7 @@ PHP_WINUTIL_API BOOL php_win32_crt_compatible(char **err) {/*{{{*/ #if PHP_LINKER_MAJOR == 14 /* Extend for other CRT if needed. */ -# if PHP_DEBUG +# if _DEBUG const char *crt_name = "vcruntime140d.dll"; # else const char *crt_name = "vcruntime140.dll";