add_definitions(-DHAVE_POSIX_MEMALIGN)
endif()
set(CMAKE_REQUIRED_DEFINITIONS)
+set(CMAKE_REQUIRED_DEFINITIONS -D_ISOC11_SOURCE=1)
+check_function_exists(aligned_alloc HAVE_ALIGNED_ALLOC)
+if(HAVE_ALIGNED_ALLOC)
+ add_definitions(-DHAVE_ALIGNED_ALLOC)
+endif()
+set(CMAKE_REQUIRED_DEFINITIONS)
if(WITH_SANITIZER STREQUAL "Address")
add_address_sanitizer()
fi
echo >> configure.log
+cat > $test.c <<EOF
+#define _ISOC11_SOURCE 1
+#include <stdlib.h>
+int main(void) {
+ void *ptr = aligned_alloc(64, 10);
+ if (ptr)
+ free(ptr);
+ return 0;
+}
+EOF
+if try $CC $CFLAGS -o $test $test.c $LDSHAREDLIBC; then
+ echo "Checking for aligned_alloc... Yes." | tee -a configure.log
+ CFLAGS="${CFLAGS} -DHAVE_ALIGNED_ALLOC"
+ SFLAGS="${SFLAGS} -DHAVE_ALIGNED_ALLOC"
+else
+ echo "Checking for aligned_alloc... No." | tee -a configure.log
+fi
+echo >> configure.log
+
# check for strerror() for use by gz* functions
cat > $test.c <<EOF
#include <string.h>
#ifndef _ZBUILD_H
#define _ZBUILD_H
+#ifndef _ISOC11_SOURCE
+# define _ISOC11_SOURCE 1 /* aligned_alloc */
+#endif
+
/* This has to be first include that defines any types */
#if defined(_MSC_VER)
# if defined(_WIN64)
# define _POSIX_C_SOURCE 200112L /* For posix_memalign(). */
#endif
-#if defined(__APPLE__) || defined(HAVE_POSIX_MEMALIGN)
+#if defined(__APPLE__) || defined(HAVE_POSIX_MEMALIGN) || defined(HAVE_ALIGNED_ALLOC)
# include <stdlib.h>
#elif defined(__FreeBSD__)
# include <stdlib.h>
return (void *)_aligned_malloc(size, 64);
#elif defined(__APPLE__)
return (void *)malloc(size); /* MacOS always aligns to 16 bytes */
+#elif defined(HAVE_ALIGNED_ALLOC)
+ return (void *)aligned_alloc(64, size);
#else
return (void *)memalign(64, size);
#endif