[compiler-rt] b3ac90d - Revert "[runtimes] Use standalone build only for compiler-rt"

Petr Hosek via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 2 17:00:14 PST 2021


Author: Petr Hosek
Date: 2021-03-02T16:59:32-08:00
New Revision: b3ac90da1df490fb8ca5280f9dfb40d26f5a9c40

URL: https://github.com/llvm/llvm-project/commit/b3ac90da1df490fb8ca5280f9dfb40d26f5a9c40
DIFF: https://github.com/llvm/llvm-project/commit/b3ac90da1df490fb8ca5280f9dfb40d26f5a9c40.diff

LOG: Revert "[runtimes] Use standalone build only for compiler-rt"

This reverts commit 4e421b2323b38e94e82ac71e5a4dfd78f6744e87 as this
seemed to have broke Python 3 executable detection on some builders.

Added: 
    

Modified: 
    compiler-rt/cmake/Modules/CustomLibcxx/CMakeLists.txt
    runtimes/CMakeLists.txt

Removed: 
    


################################################################################
diff  --git a/compiler-rt/cmake/Modules/CustomLibcxx/CMakeLists.txt b/compiler-rt/cmake/Modules/CustomLibcxx/CMakeLists.txt
index 7249e772c2ac..26d17ce6f14a 100644
--- a/compiler-rt/cmake/Modules/CustomLibcxx/CMakeLists.txt
+++ b/compiler-rt/cmake/Modules/CustomLibcxx/CMakeLists.txt
@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.13.4)
 project(custom-libcxx C CXX)
 
 # Build static libcxxabi.
+set(LIBCXXABI_STANDALONE_BUILD 1)
 set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
 set(LIBCXXABI_ENABLE_EXCEPTIONS ON CACHE BOOL "")
 set(LIBCXXABI_HERMETIC_STATIC_LIBRARY ON CACHE STRING "")
@@ -10,6 +11,7 @@ set(LIBCXXABI_INCLUDE_TESTS OFF CACHE BOOL "")
 add_subdirectory(${COMPILER_RT_LIBCXXABI_PATH} ${CMAKE_CURRENT_BINARY_DIR}/cxxabi)
 
 # Build static libcxx without exceptions.
+set(LIBCXX_STANDALONE_BUILD 1)
 set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "")
 set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
 set(LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")

diff  --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt
index 6c031d1656fe..a1017d91f36a 100644
--- a/runtimes/CMakeLists.txt
+++ b/runtimes/CMakeLists.txt
@@ -82,6 +82,10 @@ include(CheckCCompilerFlag)
 # these flags.
 if (NOT MSVC)
   set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -nostdinc++ -nostdlib++")
+
+  if (LLVM_EXTERNAL_LIBCXX_SOURCE_DIR AND "libcxx" IN_LIST LLVM_ENABLE_RUNTIMES)
+    set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -isystem ${LLVM_EXTERNAL_LIBCXX_SOURCE_DIR}/include")
+  endif()
 endif()
 
 # Avoid checking whether the compiler is working.
@@ -92,6 +96,9 @@ include(AddLLVM)
 include(HandleLLVMOptions)
 include(FindPythonInterp)
 
+# Remove the -nostdlib++ option we've added earlier.
+string(REPLACE "-nostdlib++" "" CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
+
 # Use libtool instead of ar if you are both on an Apple host, and targeting Apple.
 if(CMAKE_HOST_APPLE AND APPLE)
   include(UseLibtool)
@@ -107,11 +114,12 @@ foreach(entry ${runtimes})
   string(REPLACE "-" "_" canon_name ${projName})
   string(TOUPPER ${canon_name} canon_name)
 
-  # TODO: compiler-rt has to use standalone build for now. We tried to remove
-  # this in D57992 but this broke the build because compiler-rt assumes that
-  # LLVM and Clang are configured in the same build to set up dependencies. We
-  # should clean up the compiler-rt build and remove this eventually.
-  if ("${canon_name}" STREQUAL "COMPILER_RT")
+  # The subdirectories need to treat this as standalone builds. D57992 tried
+  # to get rid of this, but the runtimes treat *_STANDALONE_BUILD=OFF as if
+  # llvm & clang are configured in the same CMake, and setup dependencies
+  # against their targets. OpenMP has fixed the issue so we don't set the
+  # variable.
+  if (NOT ${canon_name} STREQUAL "OPENMP")
     set(${canon_name}_STANDALONE_BUILD ON)
   endif()
 


        


More information about the llvm-commits mailing list