From c00ee8bff7cd6473021cb6f40199d25898d09250 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sun, 1 Nov 2015 20:37:19 +0100 Subject: [PATCH] Fix support of posix_memalign for Linux posix_memalign is only declared conditionally in stdlib.h, so add one of the possible definitions to get the declaration. Signed-off-by: Stefan Weil --- CMakeLists.txt | 4 +++- src/lib/openjp2/opj_config_private.h.cmake.in | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b014a00f..3326b54e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -231,8 +231,10 @@ check_include_files(malloc.h OPJ_HAVE_MALLOC_H) include(CheckSymbolExists) # _aligned_alloc https://msdn.microsoft.com/en-us/library/8z34s9c6.aspx check_symbol_exists(_aligned_malloc malloc.h OPJ_HAVE__ALIGNED_MALLOC) -# posix_memalign +# posix_memalign (needs _POSIX_C_SOURCE >= 200112L on Linux) +set(CMAKE_REQUIRED_DEFINITIONS -D_POSIX_C_SOURCE=200112L) check_symbol_exists(posix_memalign stdlib.h OPJ_HAVE_POSIX_MEMALIGN) +unset(CMAKE_REQUIRED_DEFINITIONS) # memalign (obsolete) check_symbol_exists(memalign malloc.h OPJ_HAVE_MEMALIGN) #----------------------------------------------------------------------------- diff --git a/src/lib/openjp2/opj_config_private.h.cmake.in b/src/lib/openjp2/opj_config_private.h.cmake.in index b05822c3..c41f9066 100644 --- a/src/lib/openjp2/opj_config_private.h.cmake.in +++ b/src/lib/openjp2/opj_config_private.h.cmake.in @@ -28,6 +28,13 @@ /* check if function `posix_memalign` exists */ #cmakedefine OPJ_HAVE_POSIX_MEMALIGN +#if !defined(_POSIX_C_SOURCE) +#if defined(OPJ_HAVE_FSEEKO) || defined(OPJ_HAVE_POSIX_MEMALIGN) +/* Get declarations of fseeko, ftello, posix_memalign. */ +#define _POSIX_C_SOURCE 200112L +#endif +#endif + /* Byte order. */ /* All compilers that support Mac OS X define either __BIG_ENDIAN__ or __LITTLE_ENDIAN__ to match the endianness of the architecture being