aboutsummaryrefslogtreecommitdiff
path: root/bolt/cmake
diff options
context:
space:
mode:
authorPetr Hosek <phosek@google.com>2023-05-26 22:11:24 +0000
committerPetr Hosek <phosek@google.com>2023-06-01 14:48:01 +0000
commitf3269a94e729b02e9d7c07257c45b098506cca22 (patch)
tree7af087b1499d161a71c6df86d9d4a1cd0343d758 /bolt/cmake
parent92901996a63b14c3a8605652735acdaf2c20eac9 (diff)
downloadllvm-f3269a94e729b02e9d7c07257c45b098506cca22.zip
llvm-f3269a94e729b02e9d7c07257c45b098506cca22.tar.gz
llvm-f3269a94e729b02e9d7c07257c45b098506cca22.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.cmake36
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()