diff --git a/CMakeLists.txt b/CMakeLists.txt index 71434bcb3e7..c3647ed88bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -819,6 +819,13 @@ if(APPLE AND DARWIN_LTO_LIBRARY) "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-lto_library -Wl,${DARWIN_LTO_LIBRARY}") endif() +# Build with _XOPEN_SOURCE on AIX, as stray macros in _ALL_SOURCE mode tend to +# break things. In this case we need to enable the large-file API as well. +if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX") + add_definitions("-D_XOPEN_SOURCE=700") + add_definitions("-D_LARGE_FILE_API") +endif() + # Work around a broken bfd ld behavior. When linking a binary with a # foo.so library, it will try to find any library that foo.so uses and # check its symbols. This is wasteful (the check was done when foo.so diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index e1e5cd3198b..0218d42eb89 100644 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -23,6 +23,13 @@ if( CMAKE_SYSTEM MATCHES "FreeBSD-9.2-RELEASE" AND list(APPEND CMAKE_REQUIRED_LIBRARIES "cxxrt") endif() +# Do checks with _XOPEN_SOURCE and large-file API on AIX, because we will build +# with those too. +if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX") + list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_XOPEN_SOURCE=700") + list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_LARGE_FILE_API") +endif() + # include checks check_include_file(dlfcn.h HAVE_DLFCN_H) check_include_file(errno.h HAVE_ERRNO_H) diff --git a/utils/unittest/CMakeLists.txt b/utils/unittest/CMakeLists.txt index 5b5cbf5d745..0850d49e3a3 100644 --- a/utils/unittest/CMakeLists.txt +++ b/utils/unittest/CMakeLists.txt @@ -28,6 +28,12 @@ if(WIN32) add_definitions(-DGTEST_OS_WINDOWS=1) endif() +# Google Test requires headers which need _ALL_SOURCE to build on AIX +if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX") + remove_definitions("-D_XOPEN_SOURCE=700") + add_definitions("-D_ALL_SOURCE") +endif() + if(SUPPORTS_VARIADIC_MACROS_FLAG) add_definitions("-Wno-variadic-macros") endif()