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
#
# Check for aligned memory allocation support: POSIX
#
-set(CMAKE_REQUIRED_DEFINITIONS -D_POSIX_C_SOURCE=200112L)
+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)
#
# Check for aligned memory allocation support: C11
#
-set(CMAKE_REQUIRED_DEFINITIONS -D_ISOC11_SOURCE=1)
+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)
# check for aligned memory allocation support: POSIX
cat > $test.c <<EOF
#define _POSIX_C_SOURCE 200112L
+#define _ISOC11_SOURCE 1
#include <stdlib.h>
int main(void) {
void *ptr = 0;
# check for aligned memory allocation support: C11
cat > $test.c <<EOF
+#define _POSIX_C_SOURCE 200112L
#define _ISOC11_SOURCE 1
#include <stdlib.h>
int main(void) {