Index: compiler-rt/CMakeLists.txt =================================================================== --- compiler-rt/CMakeLists.txt +++ compiler-rt/CMakeLists.txt @@ -33,40 +33,6 @@ include(CompilerRTUtils) include(CMakeDependentOption) -option(COMPILER_RT_BUILD_BUILTINS "Build builtins" ON) -mark_as_advanced(COMPILER_RT_BUILD_BUILTINS) -option(COMPILER_RT_BUILD_CRT "Build crtbegin.o/crtend.o" ON) -mark_as_advanced(COMPILER_RT_BUILD_CRT) -option(COMPILER_RT_CRT_USE_EH_FRAME_REGISTRY "Use eh_frame in crtbegin.o/crtend.o" ON) -mark_as_advanced(COMPILER_RT_CRT_USE_EH_FRAME_REGISTRY) -option(COMPILER_RT_BUILD_SANITIZERS "Build sanitizers" ON) -mark_as_advanced(COMPILER_RT_BUILD_SANITIZERS) -option(COMPILER_RT_BUILD_XRAY "Build xray" ON) -mark_as_advanced(COMPILER_RT_BUILD_XRAY) -option(COMPILER_RT_BUILD_LIBFUZZER "Build libFuzzer" ON) -mark_as_advanced(COMPILER_RT_BUILD_LIBFUZZER) -option(COMPILER_RT_BUILD_PROFILE "Build profile runtime" ON) -mark_as_advanced(COMPILER_RT_BUILD_PROFILE) -option(COMPILER_RT_BUILD_MEMPROF "Build memory profiling runtime" ON) -mark_as_advanced(COMPILER_RT_BUILD_MEMPROF) -option(COMPILER_RT_BUILD_XRAY_NO_PREINIT "Build xray with no preinit patching" OFF) -mark_as_advanced(COMPILER_RT_BUILD_XRAY_NO_PREINIT) -option(COMPILER_RT_BUILD_ORC "Build ORC runtime" ON) -mark_as_advanced(COMPILER_RT_BUILD_ORC) -option(COMPILER_RT_BUILD_GWP_ASAN "Build GWP-ASan, and link it into SCUDO" ON) -mark_as_advanced(COMPILER_RT_BUILD_GWP_ASAN) -option(COMPILER_RT_ENABLE_CET "Build Compiler RT with CET enabled" OFF) - -if(FUCHSIA) - set(COMPILER_RT_HWASAN_WITH_INTERCEPTORS_DEFAULT OFF) -else() - set(COMPILER_RT_HWASAN_WITH_INTERCEPTORS_DEFAULT ON) -endif() -set(COMPILER_RT_HWASAN_WITH_INTERCEPTORS ${COMPILER_RT_HWASAN_WITH_INTERCEPTORS_DEFAULT} CACHE BOOL "Enable libc interceptors in HWASan (testing mode)") - -set(COMPILER_RT_BAREMETAL_BUILD OFF CACHE BOOL - "Build for a bare-metal target.") - if (COMPILER_RT_STANDALONE_BUILD) load_llvm_config() if (TARGET intrinsics_gen) @@ -118,6 +84,61 @@ endif() pythonize_bool(ANDROID) +option(COMPILER_RT_BUILD_BUILTINS "Build builtins" ON) +mark_as_advanced(COMPILER_RT_BUILD_BUILTINS) +option(COMPILER_RT_BUILD_CRT "Build crtbegin.o/crtend.o" ON) +mark_as_advanced(COMPILER_RT_BUILD_CRT) +option(COMPILER_RT_CRT_USE_EH_FRAME_REGISTRY "Use eh_frame in crtbegin.o/crtend.o" ON) +mark_as_advanced(COMPILER_RT_CRT_USE_EH_FRAME_REGISTRY) + +option(COMPILER_RT_BOOTSTRAP "Build just builtins and crt" OFF) +mark_as_advanced(COMPILER_RT_BOOTSTRAP) + +if(COMPILER_RT_BOOTSTRAP) + include(AddCompilerRT) + + set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) + + if(COMPILER_RT_BUILD_BUILTINS) + set(COMPILER_RT_BUILTINS_STANDALONE_BUILD TRUE) + add_subdirectory(lib/builtins) + endif() + if(COMPILER_RT_BUILD_CRT) + set(COMPILER_RT_CRT_STANDALONE_BUILD TRUE) + add_subdirectory(lib/crt) + endif() + + return() +endif() + +option(COMPILER_RT_BUILD_SANITIZERS "Build sanitizers" ON) +mark_as_advanced(COMPILER_RT_BUILD_SANITIZERS) +option(COMPILER_RT_BUILD_XRAY "Build xray" ON) +mark_as_advanced(COMPILER_RT_BUILD_XRAY) +option(COMPILER_RT_BUILD_LIBFUZZER "Build libFuzzer" ON) +mark_as_advanced(COMPILER_RT_BUILD_LIBFUZZER) +option(COMPILER_RT_BUILD_PROFILE "Build profile runtime" ON) +mark_as_advanced(COMPILER_RT_BUILD_PROFILE) +option(COMPILER_RT_BUILD_MEMPROF "Build memory profiling runtime" ON) +mark_as_advanced(COMPILER_RT_BUILD_MEMPROF) +option(COMPILER_RT_BUILD_XRAY_NO_PREINIT "Build xray with no preinit patching" OFF) +mark_as_advanced(COMPILER_RT_BUILD_XRAY_NO_PREINIT) +option(COMPILER_RT_BUILD_ORC "Build ORC runtime" ON) +mark_as_advanced(COMPILER_RT_BUILD_ORC) +option(COMPILER_RT_BUILD_GWP_ASAN "Build GWP-ASan, and link it into SCUDO" ON) +mark_as_advanced(COMPILER_RT_BUILD_GWP_ASAN) +option(COMPILER_RT_ENABLE_CET "Build Compiler RT with CET enabled" OFF) + +if(FUCHSIA) + set(COMPILER_RT_HWASAN_WITH_INTERCEPTORS_DEFAULT OFF) +else() + set(COMPILER_RT_HWASAN_WITH_INTERCEPTORS_DEFAULT ON) +endif() +set(COMPILER_RT_HWASAN_WITH_INTERCEPTORS ${COMPILER_RT_HWASAN_WITH_INTERCEPTORS_DEFAULT} CACHE BOOL "Enable libc interceptors in HWASan (testing mode)") + +set(COMPILER_RT_BAREMETAL_BUILD OFF CACHE BOOL + "Build for a bare-metal target.") + set(COMPILER_RT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(COMPILER_RT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) Index: llvm/runtimes/CMakeLists.txt =================================================================== --- llvm/runtimes/CMakeLists.txt +++ llvm/runtimes/CMakeLists.txt @@ -80,14 +80,16 @@ endif() llvm_ExternalProject_Add(builtins - ${compiler_rt_path}/lib/builtins + ${compiler_rt_path} DEPENDS ${ARG_DEPENDS} CMAKE_ARGS -DLLVM_LIBRARY_OUTPUT_INTDIR=${LLVM_LIBRARY_DIR} -DLLVM_RUNTIME_OUTPUT_INTDIR=${LLVM_TOOLS_BINARY_DIR} -DLLVM_DEFAULT_TARGET_TRIPLE=${LLVM_TARGET_TRIPLE} -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=${LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default} -DCMAKE_C_COMPILER_WORKS=ON + -DCMAKE_CXX_COMPILER_WORKS=ON -DCMAKE_ASM_COMPILER_WORKS=ON + -DCOMPILER_RT_BOOTSTRAP=ON ${COMMON_CMAKE_ARGS} ${BUILTINS_CMAKE_ARGS} PASSTHROUGH_PREFIXES COMPILER_RT @@ -114,15 +116,17 @@ endforeach() llvm_ExternalProject_Add(builtins-${target} - ${compiler_rt_path}/lib/builtins + ${compiler_rt_path} DEPENDS ${ARG_DEPENDS} CMAKE_ARGS -DLLVM_LIBRARY_OUTPUT_INTDIR=${LLVM_LIBRARY_DIR} -DLLVM_RUNTIME_OUTPUT_INTDIR=${LLVM_TOOLS_BINARY_DIR} -DLLVM_DEFAULT_TARGET_TRIPLE=${target} -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON -DCMAKE_C_COMPILER_WORKS=ON + -DCMAKE_CXX_COMPILER_WORKS=ON -DCMAKE_ASM_COMPILER_WORKS=ON -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON + -DCOMPILER_RT_BOOTSTRAP=ON ${COMMON_CMAKE_ARGS} ${${target}_extra_args} USE_TOOLCHAIN @@ -239,7 +243,8 @@ ${CMAKE_CURRENT_SOURCE_DIR}/../../runtimes DEPENDS ${ARG_DEPENDS} # Builtins were built separately above - CMAKE_ARGS -DCOMPILER_RT_BUILD_BUILTINS=Off + CMAKE_ARGS -DCOMPILER_RT_BUILD_BUILTINS=OFF + -DCOMPILER_RT_BUILD_CRT=OFF -DLLVM_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS} -DLLVM_DEFAULT_TARGET_TRIPLE=${LLVM_TARGET_TRIPLE} -DLLVM_ENABLE_PROJECTS_USED=${LLVM_ENABLE_PROJECTS_USED} @@ -354,7 +359,8 @@ ${CMAKE_CURRENT_SOURCE_DIR}/../../runtimes DEPENDS ${${name}_deps} # Builtins were built separately above - CMAKE_ARGS -DCOMPILER_RT_BUILD_BUILTINS=Off + CMAKE_ARGS -DCOMPILER_RT_BUILD_BUILTINS=OFF + -DCOMPILER_RT_BUILD_CRT=OFF -DLLVM_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS} -DLLVM_DEFAULT_TARGET_TRIPLE=${target} -DLLVM_ENABLE_PROJECTS_USED=${LLVM_ENABLE_PROJECTS_USED}