summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorOscar Fuentes <ofv@wanadoo.es>2009-04-04 22:41:07 +0000
committerOscar Fuentes <ofv@wanadoo.es>2009-04-04 22:41:07 +0000
commit9a0107db7237d55e23ac0c2399bab46e8cf94b34 (patch)
tree71560feb3e7eda2b4c25269cd513f0112a8e98b1 /cmake
parent903bcc4a5a8f7438f44ac74ea9e8d63ce8e2c8a1 (diff)
downloadllvm-9a0107db7237d55e23ac0c2399bab46e8cf94b34.tar.gz
llvm-9a0107db7237d55e23ac0c2399bab46e8cf94b34.tar.bz2
llvm-9a0107db7237d55e23ac0c2399bab46e8cf94b34.tar.xz
CMake: defines and uses macro add_llvm_definitions for keeping track
of compiler parameters explicitly added by the build specification. This macro replaces the cmake built-in `add_definitions'. Detects glibc and defines _GNU_SOURCE accordingly. Resolves bug 3882. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68428 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'cmake')
-rwxr-xr-xcmake/config-ix.cmake5
-rw-r--r--cmake/modules/AddLLVMDefinitions.cmake11
2 files changed, 16 insertions, 0 deletions
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake
index 9e5bcd8fe2..5ab3935f6d 100755
--- a/cmake/config-ix.cmake
+++ b/cmake/config-ix.cmake
@@ -52,6 +52,11 @@ check_symbol_exists(mallinfo malloc.h HAVE_MALLINFO)
check_symbol_exists(pthread_mutex_lock pthread.h HAVE_PTHREAD_MUTEX_LOCK)
check_symbol_exists(strtoll stdlib.h HAVE_STRTOLL)
+check_symbol_exists(__GLIBC__ stdio.h LLVM_USING_GLIBC)
+if( LLVM_USING_GLIBC )
+ add_llvm_definitions( -D_GNU_SOURCE )
+endif()
+
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-fPIC" SUPPORTS_FPIC_FLAG)
diff --git a/cmake/modules/AddLLVMDefinitions.cmake b/cmake/modules/AddLLVMDefinitions.cmake
new file mode 100644
index 0000000000..0f6d81f736
--- /dev/null
+++ b/cmake/modules/AddLLVMDefinitions.cmake
@@ -0,0 +1,11 @@
+# There is no clear way of keeping track of compiler command-line
+# options chosen via `add_definitions', so we need our own method for
+# using it on tools/llvm-config/CMakeLists.txt.
+
+# Beware that there is no implementation of remove_llvm_definitions.
+
+macro(add_llvm_definitions)
+ set(LLVM_DEFINITIONS "${LLVM_DEFINITIONS} ${ARGN}")
+ add_definitions( ${ARGN} )
+endmacro(add_llvm_definitions)
+