diff options
author | Petr Hosek <phosek@chromium.org> | 2017-04-13 21:29:03 +0000 |
---|---|---|
committer | Petr Hosek <phosek@chromium.org> | 2017-04-13 21:29:03 +0000 |
commit | f571409a02c847ca8cecb0d44afaf2b79f2ca002 (patch) | |
tree | f3cf2287c79c784b93d5d56ea1adeefddcc34db4 | |
parent | 1505ba826cf4f1065ae0edb1712cc6b4240aa31e (diff) | |
download | bcm5719-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.txt | 20 |
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) |