[compiler-rt] 824ddeb - Revert "[compiler-rt] Use the runtimes build for custom libc++"
Petr Hosek via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 8 09:14:35 PST 2021
Author: Petr Hosek
Date: 2021-12-08T09:14:26-08:00
New Revision: 824ddeb994ab562ed0ad88863917e5d886c8ee73
URL: https://github.com/llvm/llvm-project/commit/824ddeb994ab562ed0ad88863917e5d886c8ee73
DIFF: https://github.com/llvm/llvm-project/commit/824ddeb994ab562ed0ad88863917e5d886c8ee73.diff
LOG: Revert "[compiler-rt] Use the runtimes build for custom libc++"
This reverts commit bda3f2dd763b06427dd2713aa062e356c9d7bdc6 since
it broke MSan tests.
Added:
compiler-rt/cmake/Modules/CustomLibcxx/CMakeLists.txt
Modified:
compiler-rt/cmake/Modules/AddCompilerRT.cmake
Removed:
################################################################################
diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake
index 1244f354b8fc9..db65791af3ea2 100644
--- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake
+++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake
@@ -565,9 +565,13 @@ macro(add_custom_libcxx name prefix)
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
endif()
+ set(STAMP_DIR ${prefix}-stamps/)
+ set(BINARY_DIR ${prefix}-bins/)
+
add_custom_target(${name}-clear
- COMMAND ${CMAKE_COMMAND} -E remove_directory ${prefix}
- COMMENT "Clobbering ${name} build directories"
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${BINARY_DIR}
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${STAMP_DIR}
+ COMMENT "Clobbering ${name} build and stamp directories"
USES_TERMINAL
)
set_target_properties(${name}-clear PROPERTIES FOLDER "Compiler-RT Misc")
@@ -575,9 +579,10 @@ macro(add_custom_libcxx name prefix)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}-clobber-stamp
DEPENDS ${LIBCXX_DEPS} ${toolchain_deps}
- COMMAND ${CMAKE_COMMAND} -E touch ${prefix}/CMakeCache.txt
+ COMMAND ${CMAKE_COMMAND} -E touch ${BINARY_DIR}/CMakeCache.txt
+ COMMAND ${CMAKE_COMMAND} -E touch ${STAMP_DIR}/${name}-mkdir
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/${name}-clobber-stamp
- COMMENT "Clobbering bootstrap build directories"
+ COMMENT "Clobbering bootstrap build and stamp directories"
)
add_custom_target(${name}-clobber
@@ -624,9 +629,10 @@ macro(add_custom_libcxx name prefix)
ExternalProject_Add(${name}
DEPENDS ${name}-clobber ${LIBCXX_DEPS}
- PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name}
- SOURCE_DIR ${LLVM_MAIN_SRC_DIR}/../runtimes
- BINARY_DIR ${prefix}
+ PREFIX ${prefix}
+ SOURCE_DIR ${COMPILER_RT_SOURCE_DIR}/cmake/Modules/CustomLibcxx
+ STAMP_DIR ${STAMP_DIR}
+ BINARY_DIR ${BINARY_DIR}
CMAKE_ARGS ${CMAKE_PASSTHROUGH_VARIABLES}
${compiler_args}
-DCMAKE_C_FLAGS=${LIBCXX_C_FLAGS}
@@ -634,17 +640,10 @@ macro(add_custom_libcxx name prefix)
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY
-DLLVM_PATH=${LLVM_MAIN_SRC_DIR}
- -DLLVM_ENABLE_RUNTIMES=libcxx|libcxxabi
- -DLIBCXXABI_ENABLE_SHARED=OFF
- -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF
- -DLIBCXXABI_HERMETIC_STATIC_LIBRARY=ON
- -DLIBCXXABI_INCLUDE_TESTS=OFF
- -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
- -DLIBCXX_ENABLE_SHARED=OFF
- -DLIBCXX_ENABLE_EXCEPTIONS=OFF
- -DLIBCXX_HERMETIC_STATIC_LIBRARY=ON
- -DLIBCXX_INCLUDE_TESTS=OFF
- -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON
+ -DLLVM_BINARY_DIR=${prefix}
+ -DLLVM_LIBRARY_OUTPUT_INTDIR=${prefix}/lib
+ -DCOMPILER_RT_LIBCXX_PATH=${COMPILER_RT_LIBCXX_PATH}
+ -DCOMPILER_RT_LIBCXXABI_PATH=${COMPILER_RT_LIBCXXABI_PATH}
${LIBCXX_CMAKE_ARGS}
INSTALL_COMMAND ""
STEP_TARGETS configure build
@@ -652,15 +651,14 @@ macro(add_custom_libcxx name prefix)
USES_TERMINAL_CONFIGURE 1
USES_TERMINAL_BUILD 1
USES_TERMINAL_INSTALL 1
- LIST_SEPARATOR |
EXCLUDE_FROM_ALL TRUE
BUILD_BYPRODUCTS "${prefix}/lib/libc++.a" "${prefix}/lib/libc++abi.a"
)
if (CMAKE_GENERATOR MATCHES "Make")
- set(run_clean "$(MAKE)" "-C" "${prefix}" "clean")
+ set(run_clean "$(MAKE)" "-C" "${BINARY_DIR}" "clean")
else()
- set(run_clean ${CMAKE_COMMAND} --build ${prefix} --target clean
+ set(run_clean ${CMAKE_COMMAND} --build ${BINARY_DIR} --target clean
--config "$<CONFIG>")
endif()
@@ -669,7 +667,7 @@ macro(add_custom_libcxx name prefix)
COMMENT "Cleaning ${name}..."
DEPENDEES configure
${force_deps}
- WORKING_DIRECTORY ${prefix}
+ WORKING_DIRECTORY ${BINARY_DIR}
EXCLUDE_FROM_MAIN 1
USES_TERMINAL 1
)
diff --git a/compiler-rt/cmake/Modules/CustomLibcxx/CMakeLists.txt b/compiler-rt/cmake/Modules/CustomLibcxx/CMakeLists.txt
new file mode 100644
index 0000000000000..6c6680023c7f4
--- /dev/null
+++ b/compiler-rt/cmake/Modules/CustomLibcxx/CMakeLists.txt
@@ -0,0 +1,29 @@
+# TODO(phosek): We should use the runtimes build instead configured with
+# LLVM_ENABLE_RUNTIMES=libcxxabi;libcxx to avoid duplication of logic.
+
+cmake_minimum_required(VERSION 3.13.4)
+project(custom-libcxx C CXX)
+
+find_package(Python3 REQUIRED COMPONENTS Interpreter)
+
+# Build static libcxxabi.
+set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
+set(LIBCXXABI_ENABLE_EXCEPTIONS ON CACHE BOOL "")
+set(LIBCXXABI_HERMETIC_STATIC_LIBRARY ON CACHE STRING "")
+set(LIBCXXABI_LIBCXX_PATH ${COMPILER_RT_LIBCXX_PATH} CACHE PATH "")
+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_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "")
+set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
+set(LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
+set(LIBCXX_HERMETIC_STATIC_LIBRARY ON CACHE BOOL "")
+
+# Use above libcxxabi.
+set(LIBCXX_CXX_ABI "libcxxabi" CACHE STRING "")
+set(LIBCXX_CXX_ABI_INTREE 1)
+set(LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
+set(LIBCXX_CXX_ABI_INCLUDE_PATHS ${COMPILER_RT_LIBCXXABI_PATH}/include CACHE PATH "")
+
+add_subdirectory(${COMPILER_RT_LIBCXX_PATH} ${CMAKE_CURRENT_BINARY_DIR}/cxx)
More information about the llvm-commits
mailing list