Build with -D_DEFAULT_SOURCE along with -std=c11

On its own, -std=c11 hides POSIX and other extensions from C headers
such as <stdlib.h> when building against glibc.  This causes the
posix_memalign probe to fail incorrectly with compilers that do not
accept implicit function declarations.  _DEFAULT_SOURCE is ignored by
most non-GNU/Linux systems or not relevant in this context, so there
is no separate check for adding it.
This commit is contained in:
Florian Weimer 2023-11-29 14:14:30 +01:00 committed by Luca Boccassi
parent 2622e618f0
commit 665d1d4657
2 changed files with 2 additions and 2 deletions

View File

@ -122,7 +122,7 @@ if (NOT MSVC)
if(NOT CMAKE_C_FLAGS MATCHES "-std=" AND NOT C_STANDARD AND NOT CMAKE_C_STANDARD) if(NOT CMAKE_C_FLAGS MATCHES "-std=" AND NOT C_STANDARD AND NOT CMAKE_C_STANDARD)
check_c_compiler_flag("-std=c11" COMPILER_SUPPORTS_C11) check_c_compiler_flag("-std=c11" COMPILER_SUPPORTS_C11)
if(COMPILER_SUPPORTS_C11) if(COMPILER_SUPPORTS_C11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_DEFAULT_SOURCE -std=c11")
else() else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
endif() endif()

View File

@ -66,7 +66,7 @@ ZMQ_ORIG_CXXFLAGS="${CXXFLAGS:-none}"
# Checks for programs. # Checks for programs.
AC_PROG_CC AC_PROG_CC
AX_CHECK_COMPILE_FLAG([-std=c11], [CFLAGS+=" -std=c11"], [AC_PROG_CC_C99]) AX_CHECK_COMPILE_FLAG([-std=c11], [CFLAGS+=" -std=c11 -D_DEFAULT_SOURCE"], [AC_PROG_CC_C99])
AC_PROG_CXX AC_PROG_CXX
AX_CODE_COVERAGE AX_CODE_COVERAGE
AM_PROG_CC_C_O AM_PROG_CC_C_O