summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2019-08-28 02:41:14 +0000
committerVitaly Buka <vitalybuka@google.com>2019-08-28 02:41:14 +0000
commitfefe1b3cfde0d03deb474e14f9c560cc0f8588b6 (patch)
tree28eebb0e0cad437d24984e7768b018f2e2d3e9e6
parent7f1edb787225dd42bfce2c1565482db59da305ce (diff)
downloadcompiler-rt-fefe1b3cfde0d03deb474e14f9c560cc0f8588b6.tar.gz
[compiler-rt] Don't use libcxx if it's not enabled by LLVM_ENABLE_PROJECTS
This fixes sanitizer-x86_64-linux-fuzzer which switched to new layout and not it can't link as libcxx is always there. We should support and tests libcxx but still it was unexpected that libfuzzer ignored LLVM_ENABLE_PROJECTS_USED. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@370153 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--CMakeLists.txt42
1 files changed, 24 insertions, 18 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d28fd20d5..50d0eb0ed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -463,24 +463,30 @@ add_subdirectory(include)
option(COMPILER_RT_USE_LIBCXX
"Enable compiler-rt to use libc++ from the source tree" ON)
if(COMPILER_RT_USE_LIBCXX)
- foreach(path IN ITEMS ${LLVM_MAIN_SRC_DIR}/projects/libcxx
- ${LLVM_MAIN_SRC_DIR}/runtimes/libcxx
- ${LLVM_MAIN_SRC_DIR}/../libcxx
- ${LLVM_EXTERNAL_LIBCXX_SOURCE_DIR})
- if(IS_DIRECTORY ${path})
- set(COMPILER_RT_LIBCXX_PATH ${path})
- break()
- endif()
- endforeach()
- foreach(path IN ITEMS ${LLVM_MAIN_SRC_DIR}/projects/libcxxabi
- ${LLVM_MAIN_SRC_DIR}/runtimes/libcxxabi
- ${LLVM_MAIN_SRC_DIR}/../libcxxabi
- ${LLVM_EXTERNAL_LIBCXXABI_SOURCE_DIR})
- if(IS_DIRECTORY ${path})
- set(COMPILER_RT_LIBCXXABI_PATH ${path})
- break()
- endif()
- endforeach()
+ if(LLVM_ENABLE_PROJECTS_USED)
+ # Don't use libcxx if LLVM_ENABLE_PROJECTS does not enable it.
+ set(COMPILER_RT_LIBCXX_PATH ${LLVM_EXTERNAL_LIBCXX_SOURCE_DIR})
+ set(COMPILER_RT_LIBCXXABI_PATH ${LLVM_EXTERNAL_LIBCXXABI_SOURCE_DIR})
+ else()
+ foreach(path IN ITEMS ${LLVM_MAIN_SRC_DIR}/projects/libcxx
+ ${LLVM_MAIN_SRC_DIR}/runtimes/libcxx
+ ${LLVM_MAIN_SRC_DIR}/../libcxx
+ ${LLVM_EXTERNAL_LIBCXX_SOURCE_DIR})
+ if(IS_DIRECTORY ${path})
+ set(COMPILER_RT_LIBCXX_PATH ${path})
+ break()
+ endif()
+ endforeach()
+ foreach(path IN ITEMS ${LLVM_MAIN_SRC_DIR}/projects/libcxxabi
+ ${LLVM_MAIN_SRC_DIR}/runtimes/libcxxabi
+ ${LLVM_MAIN_SRC_DIR}/../libcxxabi
+ ${LLVM_EXTERNAL_LIBCXXABI_SOURCE_DIR})
+ if(IS_DIRECTORY ${path})
+ set(COMPILER_RT_LIBCXXABI_PATH ${path})
+ break()
+ endif()
+ endforeach()
+ endif()
endif()
set(COMPILER_RT_LLD_PATH ${LLVM_MAIN_SRC_DIR}/tools/lld)