Revert "[compiler-rt] Use the runtimes build for custom libc++"

This reverts commit bda3f2dd76 since
it broke MSan tests.
This commit is contained in:
Petr Hosek 2021-12-08 09:13:03 -08:00
parent b673bc36ea
commit 824ddeb994
2 changed files with 49 additions and 22 deletions

View File

@ -565,9 +565,13 @@ macro(add_custom_libcxx name prefix)
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}) -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
endif() endif()
set(STAMP_DIR ${prefix}-stamps/)
set(BINARY_DIR ${prefix}-bins/)
add_custom_target(${name}-clear add_custom_target(${name}-clear
COMMAND ${CMAKE_COMMAND} -E remove_directory ${prefix} COMMAND ${CMAKE_COMMAND} -E remove_directory ${BINARY_DIR}
COMMENT "Clobbering ${name} build directories" COMMAND ${CMAKE_COMMAND} -E remove_directory ${STAMP_DIR}
COMMENT "Clobbering ${name} build and stamp directories"
USES_TERMINAL USES_TERMINAL
) )
set_target_properties(${name}-clear PROPERTIES FOLDER "Compiler-RT Misc") set_target_properties(${name}-clear PROPERTIES FOLDER "Compiler-RT Misc")
@ -575,9 +579,10 @@ macro(add_custom_libcxx name prefix)
add_custom_command( add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}-clobber-stamp OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}-clobber-stamp
DEPENDS ${LIBCXX_DEPS} ${toolchain_deps} 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 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 add_custom_target(${name}-clobber
@ -624,9 +629,10 @@ macro(add_custom_libcxx name prefix)
ExternalProject_Add(${name} ExternalProject_Add(${name}
DEPENDS ${name}-clobber ${LIBCXX_DEPS} DEPENDS ${name}-clobber ${LIBCXX_DEPS}
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} PREFIX ${prefix}
SOURCE_DIR ${LLVM_MAIN_SRC_DIR}/../runtimes SOURCE_DIR ${COMPILER_RT_SOURCE_DIR}/cmake/Modules/CustomLibcxx
BINARY_DIR ${prefix} STAMP_DIR ${STAMP_DIR}
BINARY_DIR ${BINARY_DIR}
CMAKE_ARGS ${CMAKE_PASSTHROUGH_VARIABLES} CMAKE_ARGS ${CMAKE_PASSTHROUGH_VARIABLES}
${compiler_args} ${compiler_args}
-DCMAKE_C_FLAGS=${LIBCXX_C_FLAGS} -DCMAKE_C_FLAGS=${LIBCXX_C_FLAGS}
@ -634,17 +640,10 @@ macro(add_custom_libcxx name prefix)
-DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_TYPE=Release
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY
-DLLVM_PATH=${LLVM_MAIN_SRC_DIR} -DLLVM_PATH=${LLVM_MAIN_SRC_DIR}
-DLLVM_ENABLE_RUNTIMES=libcxx|libcxxabi -DLLVM_BINARY_DIR=${prefix}
-DLIBCXXABI_ENABLE_SHARED=OFF -DLLVM_LIBRARY_OUTPUT_INTDIR=${prefix}/lib
-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF -DCOMPILER_RT_LIBCXX_PATH=${COMPILER_RT_LIBCXX_PATH}
-DLIBCXXABI_HERMETIC_STATIC_LIBRARY=ON -DCOMPILER_RT_LIBCXXABI_PATH=${COMPILER_RT_LIBCXXABI_PATH}
-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
${LIBCXX_CMAKE_ARGS} ${LIBCXX_CMAKE_ARGS}
INSTALL_COMMAND "" INSTALL_COMMAND ""
STEP_TARGETS configure build STEP_TARGETS configure build
@ -652,15 +651,14 @@ macro(add_custom_libcxx name prefix)
USES_TERMINAL_CONFIGURE 1 USES_TERMINAL_CONFIGURE 1
USES_TERMINAL_BUILD 1 USES_TERMINAL_BUILD 1
USES_TERMINAL_INSTALL 1 USES_TERMINAL_INSTALL 1
LIST_SEPARATOR |
EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_ALL TRUE
BUILD_BYPRODUCTS "${prefix}/lib/libc++.a" "${prefix}/lib/libc++abi.a" BUILD_BYPRODUCTS "${prefix}/lib/libc++.a" "${prefix}/lib/libc++abi.a"
) )
if (CMAKE_GENERATOR MATCHES "Make") if (CMAKE_GENERATOR MATCHES "Make")
set(run_clean "$(MAKE)" "-C" "${prefix}" "clean") set(run_clean "$(MAKE)" "-C" "${BINARY_DIR}" "clean")
else() else()
set(run_clean ${CMAKE_COMMAND} --build ${prefix} --target clean set(run_clean ${CMAKE_COMMAND} --build ${BINARY_DIR} --target clean
--config "$<CONFIG>") --config "$<CONFIG>")
endif() endif()
@ -669,7 +667,7 @@ macro(add_custom_libcxx name prefix)
COMMENT "Cleaning ${name}..." COMMENT "Cleaning ${name}..."
DEPENDEES configure DEPENDEES configure
${force_deps} ${force_deps}
WORKING_DIRECTORY ${prefix} WORKING_DIRECTORY ${BINARY_DIR}
EXCLUDE_FROM_MAIN 1 EXCLUDE_FROM_MAIN 1
USES_TERMINAL 1 USES_TERMINAL 1
) )

View File

@ -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)