Don't fiddle with NDEBUG in C code (GH-16511)

* Don't fiddle with NDEBUG in C code

It is way to late to do this in php.h, since assert.h has already been
included.  Even pushing that down to zend_portability.h may not have
the desired effect.  Instead we define or undefine NDEBUG as CFLAG, so
that it works in all circumstances.

As a last resort we fail at build time, if `NDEBUG` is defined when
`ZEND_DEBUG` is enabled.

We also remove the useless workaround in zend_test to include assert.h
again, since that usually won't have any effect anyway.

Co-authored-by: Arnaud Le Blanc <arnaud.lb@gmail.com>
This commit is contained in:
Christoph M. Becker 2024-10-27 18:20:59 +01:00 committed by GitHub
parent 361fb400ef
commit 836a162089
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 10 additions and 14 deletions

View file

@ -3429,7 +3429,7 @@ function toolset_setup_common_libs()
function toolset_setup_build_mode()
{
if (PHP_DEBUG == "yes") {
ADD_FLAG("CFLAGS", "/LDd /MDd /Od /D ZEND_DEBUG=1 " +
ADD_FLAG("CFLAGS", "/LDd /MDd /Od /U NDebug /U NDEBUG /D ZEND_DEBUG=1 " +
(TARGET_ARCH == 'x86'?"/ZI":"/Zi"));
ADD_FLAG("LDFLAGS", "/debug");
// Avoid problems when linking to release libraries that use the release