[CMake][Release] Enable bolt optimization for clang on Linux (#128090) · llvm/llvm-project@a2112e2 (original) (raw)
`@@ -29,14 +29,21 @@ endfunction()
`
29
29
`# cache file to CMake via -C. e.g.
`
30
30
`#
`
31
31
`# cmake -D LLVM_RELEASE_ENABLE_PGO=ON -C Release.cmake
`
``
32
+
``
33
`+
set (DEFAULT_PROJECTS "clang;lld;lldb;clang-tools-extra;polly;mlir;flang")
`
``
34
`+
bolt only supports ELF, so only enable it for Linux.
`
``
35
`+
if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
`
``
36
`+
list(APPEND DEFAULT_PROJECTS "bolt")
`
``
37
`+
endif()
`
``
38
+
32
39
`set (DEFAULT_RUNTIMES "compiler-rt;libcxx")
`
33
40
`if (NOT WIN32)
`
34
41
`list(APPEND DEFAULT_RUNTIMES "libcxxabi" "libunwind")
`
35
42
`endif()
`
36
43
`set(LLVM_RELEASE_ENABLE_LTO THIN CACHE STRING "")
`
37
44
`set(LLVM_RELEASE_ENABLE_PGO ON CACHE BOOL "")
`
38
45
`set(LLVM_RELEASE_ENABLE_RUNTIMES ${DEFAULT_RUNTIMES} CACHE STRING "")
`
39
``
`-
set(LLVM_RELEASE_ENABLE_PROJECTS "clang;lld;lldb;clang-tools-extra;bolt;polly;mlir;flang" CACHE STRING "")
`
``
46
`+
set(LLVM_RELEASE_ENABLE_PROJECTS ${DEFAULT_PROJECTS} CACHE STRING "")
`
40
47
`# Note we don't need to add install here, since it is one of the pre-defined
`
41
48
`# steps.
`
42
49
`set(LLVM_RELEASE_FINAL_STAGE_TARGETS "clang;package;check-all;check-llvm;check-clang" CACHE STRING "")
`
`@@ -118,13 +125,21 @@ if(NOT ${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")
`
118
125
`set(RELEASE_LINKER_FLAGS "${RELEASE_LINKER_FLAGS} -static-libgcc")
`
119
126
`endif()
`
120
127
``
``
128
`+
Set flags for bolt
`
``
129
`+
if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
`
``
130
`+
set(RELEASE_LINKER_FLAGS "${RELEASE_LINKER_FLAGS} -Wl,--emit-relocs,-znow")
`
``
131
`+
endif()
`
``
132
+
121
133
`set_instrument_and_final_stage_var(CMAKE_EXE_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)
`
122
134
`set_instrument_and_final_stage_var(CMAKE_SHARED_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)
`
123
135
`set_instrument_and_final_stage_var(CMAKE_MODULE_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)
`
124
136
``
125
137
`# Final Stage Config (stage2)
`
126
138
`set_final_stage_var(LLVM_ENABLE_RUNTIMES "${LLVM_RELEASE_ENABLE_RUNTIMES}" STRING)
`
127
139
`set_final_stage_var(LLVM_ENABLE_PROJECTS "${LLVM_RELEASE_ENABLE_PROJECTS}" STRING)
`
``
140
`+
if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
`
``
141
`+
set_final_stage_var(CLANG_BOLT "INSTRUMENT" STRING)
`
``
142
`+
endif()
`
128
143
`set_final_stage_var(CPACK_GENERATOR "TXZ" STRING)
`
129
144
`set_final_stage_var(CPACK_ARCHIVE_THREADS "0" STRING)
`
130
145
``