Skip to content

Commit f84ac48

Browse files
committed
[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
1 parent eca7698 commit f84ac48

File tree

5 files changed

+45
-52
lines changed

5 files changed

+45
-52
lines changed

bolt/CMakeLists.txt

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,35 @@ set(BOLT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
44
set(BOLT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
55
set(CMAKE_CXX_STANDARD 17)
66

7+
# Determine default set of targets to build -- the intersection of
8+
# those BOLT supports and those LLVM is targeting.
9+
set(BOLT_TARGETS_TO_BUILD_all "AArch64;X86")
10+
set(BOLT_TARGETS_TO_BUILD_default)
11+
foreach (tgt ${BOLT_TARGETS_TO_BUILD_all})
12+
if (tgt IN_LIST LLVM_TARGETS_TO_BUILD)
13+
list(APPEND BOLT_TARGETS_TO_BUILD_default ${tgt})
14+
endif()
15+
endforeach()
16+
17+
# Allow the user to specify the BOLT targets, and then check that LLVM
18+
# is indeed targeting those.
19+
set(BOLT_TARGETS_TO_BUILD "${BOLT_TARGETS_TO_BUILD_default}"
20+
CACHE STRING "Targets for BOLT to support.")
21+
if (NOT BOLT_TARGETS_TO_BUILD)
22+
message(FATAL_ERROR "BOLT enabled but BOLT_TARGETS_TO_BUILD is empty")
23+
endif()
24+
foreach (tgt ${BOLT_TARGETS_TO_BUILD})
25+
if (NOT tgt IN_LIST LLVM_TARGETS_TO_BUILD)
26+
message(FATAL_ERROR "BOLT target '${tgt}' is not in LLVM_TARGETS_TO_BUILD")
27+
endif()
28+
message(STATUS "Targeting ${tgt} in llvm-bolt")
29+
endforeach()
30+
731
set(BOLT_ENABLE_RUNTIME_default OFF)
832
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64"
933
AND (CMAKE_SYSTEM_NAME STREQUAL "Linux"
1034
OR CMAKE_SYSTEM_NAME STREQUAL "Darwin")
11-
AND "X86" IN_LIST LLVM_TARGETS_TO_BUILD)
35+
AND "X86" IN_LIST BOLT_TARGETS_TO_BUILD)
1236
set(BOLT_ENABLE_RUNTIME_default ON)
1337
endif()
1438
option(BOLT_ENABLE_RUNTIME "Enable BOLT runtime" ${BOLT_ENABLE_RUNTIME_default})

bolt/lib/Rewrite/CMakeLists.txt

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,6 @@ set(LLVM_LINK_COMPONENTS
88
TargetParser
99
)
1010

11-
set(TARGET_LINK_LIBRARIES
12-
LLVMBOLTCore
13-
LLVMBOLTPasses
14-
LLVMBOLTProfile
15-
LLVMBOLTRuntimeLibs
16-
LLVMBOLTUtils
17-
)
18-
19-
if ("AArch64" IN_LIST LLVM_TARGETS_TO_BUILD)
20-
list(APPEND TARGET_LINK_LIBRARIES LLVMBOLTTargetAArch64)
21-
set(BOLT_AArch64 On)
22-
endif()
23-
24-
if ("X86" IN_LIST LLVM_TARGETS_TO_BUILD)
25-
list(APPEND TARGET_LINK_LIBRARIES LLVMBOLTTargetX86)
26-
set(BOLT_X64 On)
27-
endif()
28-
2911
add_llvm_library(LLVMBOLTRewrite
3012
BinaryPassManager.cpp
3113
BoltDiff.cpp
@@ -42,13 +24,15 @@ add_llvm_library(LLVMBOLTRewrite
4224

4325
target_link_libraries(LLVMBOLTRewrite
4426
PRIVATE
45-
${TARGET_LINK_LIBRARIES}
27+
LLVMBOLTCore
28+
LLVMBOLTPasses
29+
LLVMBOLTProfile
30+
LLVMBOLTRuntimeLibs
31+
LLVMBOLTUtils
4632
)
4733

48-
if (DEFINED BOLT_AArch64)
49-
target_compile_definitions(LLVMBOLTRewrite PRIVATE AARCH64_AVAILABLE)
50-
endif()
51-
52-
if (DEFINED BOLT_X64)
53-
target_compile_definitions(LLVMBOLTRewrite PRIVATE X86_AVAILABLE)
54-
endif()
34+
foreach (tgt ${BOLT_TARGETS_TO_BUILD})
35+
target_link_libraries(LLVMBOLTRewrite PRIVATE LLVMBOLTTarget${tgt})
36+
string(TOUPPER "${tgt}" upper)
37+
target_compile_definitions(LLVMBOLTRewrite PRIVATE ${upper}_AVAILABLE)
38+
endforeach()

bolt/lib/Target/CMakeLists.txt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
if ("X86" IN_LIST LLVM_TARGETS_TO_BUILD)
2-
message(STATUS "Targeting X86 in llvm-bolt")
3-
add_subdirectory(X86)
4-
endif()
5-
6-
if ("AArch64" IN_LIST LLVM_TARGETS_TO_BUILD)
7-
message(STATUS "Targeting AArch64 in llvm-bolt")
8-
add_subdirectory(AArch64)
9-
endif()
1+
foreach (tgt ${BOLT_TARGETS_TO_BUILD})
2+
add_subdirectory(${tgt})
3+
endforeach()

bolt/test/lit.site.cfg.py.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ config.host_arch = "@HOST_ARCH@"
1717
config.python_executable = "@Python3_EXECUTABLE@"
1818
config.bolt_clang = "@BOLT_CLANG_EXE@"
1919
config.bolt_lld = "@BOLT_LLD_EXE@"
20-
config.targets_to_build = "@TARGETS_TO_BUILD@"
20+
config.targets_to_build = "@BOLT_TARGETS_TO_BUILD@"
2121
config.gnu_ld = "@GNU_LD_EXECUTABLE@"
2222

2323
import lit.llvm

bolt/unittests/Core/CMakeLists.txt

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,11 @@ target_link_libraries(CoreTests
1919
LLVMBOLTRewrite
2020
)
2121

22-
if ("AArch64" IN_LIST LLVM_TARGETS_TO_BUILD)
22+
foreach (tgt ${BOLT_TARGETS_TO_BUILD})
2323
include_directories(
24-
${LLVM_MAIN_SRC_DIR}/lib/Target/AArch64
25-
${LLVM_BINARY_DIR}/lib/Target/AArch64
24+
${LLVM_MAIN_SRC_DIR}/lib/Target/${tgt}
25+
${LLVM_BINARY_DIR}/lib/Target/${tgt}
2626
)
27-
28-
target_compile_definitions(CoreTests PRIVATE AARCH64_AVAILABLE)
29-
endif()
30-
31-
if ("X86" IN_LIST LLVM_TARGETS_TO_BUILD)
32-
include_directories(
33-
${LLVM_MAIN_SRC_DIR}/lib/Target/X86
34-
${LLVM_BINARY_DIR}/lib/Target/X86
35-
)
36-
37-
target_compile_definitions(CoreTests PRIVATE X86_AVAILABLE)
38-
endif()
27+
string(TOUPPER "${tgt}" upper)
28+
target_compile_definitions(CoreTests PRIVATE "${upper}_AVAILABLE")
29+
endforeach()

0 commit comments

Comments
 (0)