Author: Paul Kirth Date: 2024-12-09T09:26:17-08:00 New Revision: 57545dbbdbafc51d63873800a45cfd48a283d981
URL: https://github.com/llvm/llvm-project/commit/57545dbbdbafc51d63873800a45cfd48a283d981 DIFF: https://github.com/llvm/llvm-project/commit/57545dbbdbafc51d63873800a45cfd48a283d981.diff LOG: [Fuchsia][cmake] Allow using FatLTO when building runtimes (#112277) We'd like to build runtimes using FatLTO (see https://llvm.org/docs/FatLTO.html for details). This gives us more control over how libc++ can be consumed by users of our toolchain, like the Fuchsia SDK. Added: Modified: clang/cmake/caches/Fuchsia-stage2.cmake llvm/cmake/modules/HandleLLVMOptions.cmake Removed: ################################################################################ diff --git a/clang/cmake/caches/Fuchsia-stage2.cmake b/clang/cmake/caches/Fuchsia-stage2.cmake index 784a883a3bf916..9eb295548500ee 100644 --- a/clang/cmake/caches/Fuchsia-stage2.cmake +++ b/clang/cmake/caches/Fuchsia-stage2.cmake @@ -190,6 +190,10 @@ foreach(target aarch64-unknown-linux-gnu;armv7-unknown-linux-gnueabihf;i386-unkn set(RUNTIMES_${target}_LLVM_TOOLS_DIR "${CMAKE_BINARY_DIR}/bin" CACHE BOOL "") set(RUNTIMES_${target}_LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "") + # Enable FatLTO for Linux and baremetal runtimes + set(RUNTIMES_${target}_LLVM_ENABLE_LTO ON CACHE BOOL "") + set(RUNTIMES_${target}_LLVM_ENABLE_FATLTO ON CACHE BOOL "") + # Use .build-id link. list(APPEND RUNTIME_BUILD_ID_LINK "${target}") endif() @@ -272,6 +276,10 @@ if(FUCHSIA_SDK) set(RUNTIMES_${target}+asan+noexcept_LIBCXXABI_ENABLE_EXCEPTIONS OFF CACHE BOOL "") set(RUNTIMES_${target}+asan+noexcept_LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "") + # Enable FatLTO for Fuchsia runtimes + set(RUNTIMES_${target}_LLVM_ENABLE_LTO ON CACHE BOOL "") + set(RUNTIMES_${target}_LLVM_ENABLE_FATLTO ON CACHE BOOL "") + # Use .build-id link. list(APPEND RUNTIME_BUILD_ID_LINK "${target}") endforeach() @@ -363,6 +371,10 @@ foreach(target armv6m-none-eabi;armv7m-none-eabi;armv8m.main-none-eabi;armv8.1m. set(RUNTIMES_${target}_LLVM_INCLUDE_TESTS OFF CACHE BOOL "") set(RUNTIMES_${target}_LLVM_ENABLE_ASSERTIONS OFF CACHE BOOL "") set(RUNTIMES_${target}_LLVM_ENABLE_RUNTIMES "libc;libcxx" CACHE STRING "") + + # Enable FatLTO for baremetal runtimes + set(RUNTIMES_${target}_LLVM_ENABLE_LTO ON CACHE BOOL "") + set(RUNTIMES_${target}_LLVM_ENABLE_FATLTO ON CACHE BOOL "") endforeach() foreach(target riscv32-unknown-elf) @@ -414,6 +426,10 @@ foreach(target riscv32-unknown-elf) set(RUNTIMES_${target}_LLVM_INCLUDE_TESTS OFF CACHE BOOL "") set(RUNTIMES_${target}_LLVM_ENABLE_ASSERTIONS OFF CACHE BOOL "") set(RUNTIMES_${target}_LLVM_ENABLE_RUNTIMES "libc;libcxx" CACHE STRING "") + + # Enable FatLTO for baremetal runtimes + set(RUNTIMES_${target}_LLVM_ENABLE_LTO ON CACHE BOOL "") + set(RUNTIMES_${target}_LLVM_ENABLE_FATLTO ON CACHE BOOL "") endforeach() set(LLVM_BUILTIN_TARGETS "${BUILTIN_TARGETS}" CACHE STRING "") diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake index f19125eb6bf273..55a87f5fdbb138 100644 --- a/llvm/cmake/modules/HandleLLVMOptions.cmake +++ b/llvm/cmake/modules/HandleLLVMOptions.cmake @@ -1285,7 +1285,7 @@ elseif(LLVM_ENABLE_LTO) endif() endif() -if(LLVM_ENABLE_FATLTO AND UNIX AND NOT APPLE) +if(LLVM_ENABLE_FATLTO AND ((UNIX AND NOT APPLE) OR FUCHSIA)) append("-ffat-lto-objects" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) if(NOT LINKER_IS_LLD_LINK) append("-ffat-lto-objects" CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits