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 06:01:39 +0000
commitf99a7d3e38095cfdaf7e729289a8894dd31c7efa (patch)
treecb7813dab90f31a508860192e5b7303bbe5428c0 /bolt/cmake
parent801dd8870fe3634e81e35e88519477541d1b0119 (diff)
downloadllvm-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.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()