diff options
author | Petr Hosek <phosek@google.com> | 2023-05-26 22:11:24 +0000 |
---|---|---|
committer | Petr Hosek <phosek@google.com> | 2023-06-01 06:01:39 +0000 |
commit | f99a7d3e38095cfdaf7e729289a8894dd31c7efa (patch) | |
tree | cb7813dab90f31a508860192e5b7303bbe5428c0 /bolt/cmake | |
parent | 801dd8870fe3634e81e35e88519477541d1b0119 (diff) | |
download | llvm-f99a7d3e38095cfdaf7e729289a8894dd31c7efa.zip llvm-f99a7d3e38095cfdaf7e729289a8894dd31c7efa.tar.gz llvm-f99a7d3e38095cfdaf7e729289a8894dd31c7efa.tar.bz2 |
[BOLT][CMake] Redo the build and install targets
The existing BOLT install targets are broken on Windows becase they
don't properly handle the output extension. We cannot use the existing
LLVM macros since those make assumptions that don't hold for BOLT. This
change instead implements custom macros following the approach used by
Clang and LLD.
Differential Revision: https://reviews.llvm.org/D151595
Diffstat (limited to 'bolt/cmake')
-rw-r--r-- | bolt/cmake/modules/AddBOLT.cmake | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/bolt/cmake/modules/AddBOLT.cmake b/bolt/cmake/modules/AddBOLT.cmake new file mode 100644 index 0000000..1f69b904 --- /dev/null +++ b/bolt/cmake/modules/AddBOLT.cmake @@ -0,0 +1,36 @@ +include(GNUInstallDirs) +include(LLVMDistributionSupport) + +macro(add_bolt_executable name) + add_llvm_executable(${name} ${ARGN}) + set_target_properties(${name} PROPERTIES FOLDER "BOLT") +endmacro() + +macro(add_bolt_tool name) + if (NOT BOLT_BUILD_TOOLS) + set(EXCLUDE_FROM_ALL ON) + endif() + + add_bolt_executable(${name} ${ARGN}) + + if (BOLT_BUILD_TOOLS) + get_target_export_arg(${name} BOLT export_to_bolttargets) + install(TARGETS ${name} + ${export_to_bolttargets} + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT bolt) + + if(NOT LLVM_ENABLE_IDE) + add_llvm_install_targets(install-${name} + DEPENDS ${name} + COMPONENT bolt) + endif() + set_property(GLOBAL APPEND PROPERTY BOLT_EXPORTS ${name}) + endif() +endmacro() + +macro(add_bolt_tool_symlink name dest) + llvm_add_tool_symlink(BOLT ${name} ${dest} ALWAYS_GENERATE) + # Always generate install targets + llvm_install_symlink(BOLT ${name} ${dest} ALWAYS_GENERATE COMPONENT bolt) +endmacro() |