[llvm] ddc0c5c - [CMake] Do all availability checks with -D_GNU_SOURCE (#116640)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 20 01:08:38 PST 2024
Author: Raul Tambre
Date: 2024-11-20T11:08:35+02:00
New Revision: ddc0c5c7a3bb39067f11c87ab7ca0ed934ad27e7
URL: https://github.com/llvm/llvm-project/commit/ddc0c5c7a3bb39067f11c87ab7ca0ed934ad27e7
DIFF: https://github.com/llvm/llvm-project/commit/ddc0c5c7a3bb39067f11c87ab7ca0ed934ad27e7.diff
LOG: [CMake] Do all availability checks with -D_GNU_SOURCE (#116640)
When compiling LLVM with -std=c++ instead of -std=gnu we'd fail to detect many newer POSIX functions.
We define it for the whole of LLVM anyway so moving the definition to the top fixes detection of a bunch of these on such setups.
Keeping it at the top also avoids accidentally introducing new dependent checks before it being defined.
Added:
Modified:
llvm/cmake/config-ix.cmake
Removed:
################################################################################
diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake
index 86f2bac7d23e84..64878d28d9e1e5 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)
More information about the llvm-commits
mailing list