diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake index 86f2bac7d23e8..64878d28d9e1e 100644 --- a/llvm/cmake/config-ix.cmake +++ b/llvm/cmake/config-ix.cmake @@ -40,6 +40,23 @@ if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "SunOS") list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_FILE_OFFSET_BITS=64") endif() +# Newer POSIX functions aren't available without the appropriate defines. +# Usually those are set by the use of -std=gnuXX, but one can also use the +# newer functions with -std=c(++)XX, i.e. without the GNU language extensions. +# Keep this at the top to make sure we don't add _GNU_SOURCE dependent checks +# before adding it. +check_symbol_exists(__GLIBC__ stdio.h LLVM_USING_GLIBC) +if(LLVM_USING_GLIBC) + add_compile_definitions(_GNU_SOURCE) + list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE") + + # enable 64bit off_t on 32bit systems using glibc + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + add_compile_definitions(_FILE_OFFSET_BITS=64) + list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_FILE_OFFSET_BITS=64") + endif() +endif() + # include checks check_include_file(dlfcn.h HAVE_DLFCN_H) check_include_file(errno.h HAVE_ERRNO_H) @@ -336,17 +353,6 @@ else() "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC) endif() -check_symbol_exists(__GLIBC__ stdio.h LLVM_USING_GLIBC) -if( LLVM_USING_GLIBC ) - add_compile_definitions(_GNU_SOURCE) - list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE") -# enable 64bit off_t on 32bit systems using glibc - if (CMAKE_SIZEOF_VOID_P EQUAL 4) - add_compile_definitions(_FILE_OFFSET_BITS=64) - list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_FILE_OFFSET_BITS=64") - endif() -endif() - # This check requires _GNU_SOURCE. if (NOT PURE_WINDOWS) if (LLVM_PTHREAD_LIB)