From: Cristi Vîjdea Date: Fri, 4 Apr 2025 13:32:36 +0000 (+0300) Subject: Pass POSIX_C_SOURCE for std::alligned_alloc try_compile checks X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d32709ff51518c7d1fea0674d26d0ba5ef3ab969;p=thirdparty%2Fzlib-ng.git Pass POSIX_C_SOURCE for std::alligned_alloc try_compile checks On FreeBSD 11, definining POSIX_C_SOURCE to a lower level has the efect of inhibiting the language level (__ISO_C_VISIBLE ) to be lower than C11, even in the presence of -std=c11 Since the check_symbol_exists runs without setting POSIX_C_SOURCE, this means that we will spuriously define HAVE_ALIGNED_ALLOC, while in the actual build it is not going to be defined ref: https://github.com/freebsd/freebsd-src/blob/stable/11/sys/sys/cdefs.h#L738 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 35f71b0f..13a04d5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -436,7 +436,10 @@ if(NOT HAVE_STRERROR) endif() set(CMAKE_REQUIRED_FLAGS) -set(CMAKE_REQUIRED_DEFINITIONS -D_POSIX_C_SOURCE=200112L) +# +# Check for aligned memory allocation support: POSIX +# +set(CMAKE_REQUIRED_DEFINITIONS -D_POSIX_C_SOURCE=200112L -D_ISOC11_SOURCE=1) set(CMAKE_REQUIRED_FLAGS "${ADDITIONAL_CHECK_FLAGS}") check_symbol_exists(posix_memalign stdlib.h HAVE_POSIX_MEMALIGN) if(HAVE_POSIX_MEMALIGN) @@ -445,7 +448,10 @@ endif() set(CMAKE_REQUIRED_FLAGS) set(CMAKE_REQUIRED_DEFINITIONS) -set(CMAKE_REQUIRED_DEFINITIONS -D_ISOC11_SOURCE=1) +# +# Check for aligned memory allocation support: C11 +# +set(CMAKE_REQUIRED_DEFINITIONS -D_POSIX_C_SOURCE=200112L -D_ISOC11_SOURCE=1) set(CMAKE_REQUIRED_FLAGS "${ADDITIONAL_CHECK_FLAGS}") check_symbol_exists(aligned_alloc stdlib.h HAVE_ALIGNED_ALLOC) if(HAVE_ALIGNED_ALLOC) diff --git a/configure b/configure index 8548f8a6..60a4eee9 100755 --- a/configure +++ b/configure @@ -722,6 +722,7 @@ echo >> configure.log cat > $test.c < int main(void) { void *ptr = 0; @@ -741,6 +742,7 @@ fi echo >> configure.log cat > $test.c < int main(void) {