summaryrefslogtreecommitdiff
path: root/bolt
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2023-04-20 15:22:18 -0400
committerNathan Sidwell <nathan@acm.org>2023-04-21 13:07:04 -0400
commitf84ac48f1e83d52c476d9df496722394c5393d23 (patch)
tree98fc94b08a80d1a849b1fe46afda97a5e3b74c84 /bolt
parenteca7698a979ebc2338c075d63ac52c4c21b19cb1 (diff)
downloadllvm-f84ac48f1e83d52c476d9df496722394c5393d23.tar.gz
[BOLT] Add BOLT_TARGETS_TO_BUILD
Adds BOLT_TARGETS_TO_BUILD, which defaults to the intersection of X86;AArch64 and LLVM_TARGETS_TO_BUILD, but allows configuration to alter that -- for instance omitting one of those two targets even if llvm supports both. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D148847
Diffstat (limited to 'bolt')
-rw-r--r--bolt/CMakeLists.txt26
-rw-r--r--bolt/lib/Rewrite/CMakeLists.txt36
-rw-r--r--bolt/lib/Target/CMakeLists.txt12
-rw-r--r--bolt/test/lit.site.cfg.py.in2
-rw-r--r--bolt/unittests/Core/CMakeLists.txt21
5 files changed, 45 insertions, 52 deletions
diff --git a/bolt/CMakeLists.txt b/bolt/CMakeLists.txt
index 01ed186510c8..875a5cd8703c 100644
--- a/bolt/CMakeLists.txt
+++ b/bolt/CMakeLists.txt
@@ -4,11 +4,35 @@ set(BOLT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(BOLT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(CMAKE_CXX_STANDARD 17)
+# Determine default set of targets to build -- the intersection of
+# those BOLT supports and those LLVM is targeting.
+set(BOLT_TARGETS_TO_BUILD_all "AArch64;X86")
+set(BOLT_TARGETS_TO_BUILD_default)
+foreach (tgt ${BOLT_TARGETS_TO_BUILD_all})
+ if (tgt IN_LIST LLVM_TARGETS_TO_BUILD)
+ list(APPEND BOLT_TARGETS_TO_BUILD_default ${tgt})
+ endif()
+endforeach()
+
+# Allow the user to specify the BOLT targets, and then check that LLVM
+# is indeed targeting those.
+set(BOLT_TARGETS_TO_BUILD "${BOLT_TARGETS_TO_BUILD_default}"
+ CACHE STRING "Targets for BOLT to support.")
+if (NOT BOLT_TARGETS_TO_BUILD)
+ message(FATAL_ERROR "BOLT enabled but BOLT_TARGETS_TO_BUILD is empty")
+endif()
+foreach (tgt ${BOLT_TARGETS_TO_BUILD})
+ if (NOT tgt IN_LIST LLVM_TARGETS_TO_BUILD)
+ message(FATAL_ERROR "BOLT target '${tgt}' is not in LLVM_TARGETS_TO_BUILD")
+ endif()
+ message(STATUS "Targeting ${tgt} in llvm-bolt")
+endforeach()
+
set(BOLT_ENABLE_RUNTIME_default OFF)
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64"
AND (CMAKE_SYSTEM_NAME STREQUAL "Linux"
OR CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- AND "X86" IN_LIST LLVM_TARGETS_TO_BUILD)
+ AND "X86" IN_LIST BOLT_TARGETS_TO_BUILD)
set(BOLT_ENABLE_RUNTIME_default ON)
endif()
option(BOLT_ENABLE_RUNTIME "Enable BOLT runtime" ${BOLT_ENABLE_RUNTIME_default})
diff --git a/bolt/lib/Rewrite/CMakeLists.txt b/bolt/lib/Rewrite/CMakeLists.txt
index cf61bf8ff3f9..06e91775b7c7 100644
--- a/bolt/lib/Rewrite/CMakeLists.txt
+++ b/bolt/lib/Rewrite/CMakeLists.txt
@@ -8,24 +8,6 @@ set(LLVM_LINK_COMPONENTS
TargetParser
)
-set(TARGET_LINK_LIBRARIES
- LLVMBOLTCore
- LLVMBOLTPasses
- LLVMBOLTProfile
- LLVMBOLTRuntimeLibs
- LLVMBOLTUtils
- )
-
-if ("AArch64" IN_LIST LLVM_TARGETS_TO_BUILD)
- list(APPEND TARGET_LINK_LIBRARIES LLVMBOLTTargetAArch64)
- set(BOLT_AArch64 On)
-endif()
-
-if ("X86" IN_LIST LLVM_TARGETS_TO_BUILD)
- list(APPEND TARGET_LINK_LIBRARIES LLVMBOLTTargetX86)
- set(BOLT_X64 On)
-endif()
-
add_llvm_library(LLVMBOLTRewrite
BinaryPassManager.cpp
BoltDiff.cpp
@@ -42,13 +24,15 @@ add_llvm_library(LLVMBOLTRewrite
target_link_libraries(LLVMBOLTRewrite
PRIVATE
- ${TARGET_LINK_LIBRARIES}
+ LLVMBOLTCore
+ LLVMBOLTPasses
+ LLVMBOLTProfile
+ LLVMBOLTRuntimeLibs
+ LLVMBOLTUtils
)
-if (DEFINED BOLT_AArch64)
- target_compile_definitions(LLVMBOLTRewrite PRIVATE AARCH64_AVAILABLE)
-endif()
-
-if (DEFINED BOLT_X64)
- target_compile_definitions(LLVMBOLTRewrite PRIVATE X86_AVAILABLE)
-endif()
+foreach (tgt ${BOLT_TARGETS_TO_BUILD})
+ target_link_libraries(LLVMBOLTRewrite PRIVATE LLVMBOLTTarget${tgt})
+ string(TOUPPER "${tgt}" upper)
+ target_compile_definitions(LLVMBOLTRewrite PRIVATE ${upper}_AVAILABLE)
+endforeach()
diff --git a/bolt/lib/Target/CMakeLists.txt b/bolt/lib/Target/CMakeLists.txt
index 6dc5e5203b05..eae8ebdddbf3 100644
--- a/bolt/lib/Target/CMakeLists.txt
+++ b/bolt/lib/Target/CMakeLists.txt
@@ -1,9 +1,3 @@
-if ("X86" IN_LIST LLVM_TARGETS_TO_BUILD)
- message(STATUS "Targeting X86 in llvm-bolt")
- add_subdirectory(X86)
-endif()
-
-if ("AArch64" IN_LIST LLVM_TARGETS_TO_BUILD)
- message(STATUS "Targeting AArch64 in llvm-bolt")
- add_subdirectory(AArch64)
-endif()
+foreach (tgt ${BOLT_TARGETS_TO_BUILD})
+ add_subdirectory(${tgt})
+endforeach()
diff --git a/bolt/test/lit.site.cfg.py.in b/bolt/test/lit.site.cfg.py.in
index e357c48f548e..46cb326dfbae 100644
--- a/bolt/test/lit.site.cfg.py.in
+++ b/bolt/test/lit.site.cfg.py.in
@@ -17,7 +17,7 @@ config.host_arch = "@HOST_ARCH@"
config.python_executable = "@Python3_EXECUTABLE@"
config.bolt_clang = "@BOLT_CLANG_EXE@"
config.bolt_lld = "@BOLT_LLD_EXE@"
-config.targets_to_build = "@TARGETS_TO_BUILD@"
+config.targets_to_build = "@BOLT_TARGETS_TO_BUILD@"
config.gnu_ld = "@GNU_LD_EXECUTABLE@"
import lit.llvm
diff --git a/bolt/unittests/Core/CMakeLists.txt b/bolt/unittests/Core/CMakeLists.txt
index 15d48f2c422c..bad7108dad0b 100644
--- a/bolt/unittests/Core/CMakeLists.txt
+++ b/bolt/unittests/Core/CMakeLists.txt
@@ -19,20 +19,11 @@ target_link_libraries(CoreTests
LLVMBOLTRewrite
)
-if ("AArch64" IN_LIST LLVM_TARGETS_TO_BUILD)
+foreach (tgt ${BOLT_TARGETS_TO_BUILD})
include_directories(
- ${LLVM_MAIN_SRC_DIR}/lib/Target/AArch64
- ${LLVM_BINARY_DIR}/lib/Target/AArch64
+ ${LLVM_MAIN_SRC_DIR}/lib/Target/${tgt}
+ ${LLVM_BINARY_DIR}/lib/Target/${tgt}
)
-
- target_compile_definitions(CoreTests PRIVATE AARCH64_AVAILABLE)
-endif()
-
-if ("X86" IN_LIST LLVM_TARGETS_TO_BUILD)
- include_directories(
- ${LLVM_MAIN_SRC_DIR}/lib/Target/X86
- ${LLVM_BINARY_DIR}/lib/Target/X86
- )
-
- target_compile_definitions(CoreTests PRIVATE X86_AVAILABLE)
-endif()
+ string(TOUPPER "${tgt}" upper)
+ target_compile_definitions(CoreTests PRIVATE "${upper}_AVAILABLE")
+endforeach()