summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Hosek <phosek@chromium.org>2017-04-13 21:29:03 +0000
committerPetr Hosek <phosek@chromium.org>2017-04-13 21:29:03 +0000
commitf571409a02c847ca8cecb0d44afaf2b79f2ca002 (patch)
treef3cf2287c79c784b93d5d56ea1adeefddcc34db4
parent1505ba826cf4f1065ae0edb1712cc6b4240aa31e (diff)
downloadbcm5719-llvm-f571409a02c847ca8cecb0d44afaf2b79f2ca002.tar.gz
bcm5719-llvm-f571409a02c847ca8cecb0d44afaf2b79f2ca002.zip
[CMake][runtimes] Use -nodefaultlibs for the runtimes build
We may not have a working C++ standard library at this point so we shouldn't rely on it when running CMake checks. Differential Revision: https://reviews.llvm.org/D31942 llvm-svn: 300260
-rw-r--r--llvm/runtimes/CMakeLists.txt20
1 files changed, 19 insertions, 1 deletions
diff --git a/llvm/runtimes/CMakeLists.txt b/llvm/runtimes/CMakeLists.txt
index 8be1d9e7c52..ef56fa1b936 100644
--- a/llvm/runtimes/CMakeLists.txt
+++ b/llvm/runtimes/CMakeLists.txt
@@ -29,7 +29,7 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
# CMake module path.
list(INSERT CMAKE_MODULE_PATH 0
"${CMAKE_CURRENT_SOURCE_DIR}/../cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules"
"${LLVM_BINARY_DIR}/lib/cmake/llvm"
)
@@ -65,10 +65,28 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
set(LLVM_ENABLE_LIBCXX ON CACHE BOOL "")
endif()
+ set(SAFE_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+ set(SAFE_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+
+ include(CheckLibraryExists)
+ include(CheckCCompilerFlag)
+
+ check_library_exists(c fopen "" LLVM_HAS_C_LIB)
+ check_c_compiler_flag(-nodefaultlibs LLVM_HAS_NODEFAULTLIBS_FLAG)
+ if(LLVM_HAS_NODEFAULTLIBS_FLAG)
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -nodefaultlibs")
+ if(LLVM_HAS_C_LIB)
+ list(APPEND CMAKE_REQUIRED_LIBRARIES c)
+ endif()
+ endif()
+
# Handle common options used by all runtimes.
include(AddLLVM)
include(HandleLLVMOptions)
+ set(CMAKE_REQUIRED_FLAGS ${SAFE_CMAKE_REQUIRED_FLAGS})
+ set(CMAKE_REQUIRED_LIBRARIES ${SAFE_CMAKE_REQUIRED_LIBRARIES})
+
foreach(entry ${runtimes})
get_filename_component(projName ${entry} NAME)
OpenPOWER on IntegriCloud