Skip to content

Commit 1438c8d

Browse files
authored
[Fuchsia] Support PGO (llvm#120323)
Enable 2-stage builds with PGO.
1 parent f304049 commit 1438c8d

File tree

2 files changed

+76
-23
lines changed

2 files changed

+76
-23
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# This file sets up a CMakeCache for the second stage of a Fuchsia toolchain build.
2+
3+
include(${CMAKE_CURRENT_LIST_DIR}/Fuchsia-stage2.cmake)
4+
5+
if(NOT APPLE)
6+
set(BOOTSTRAP_LLVM_ENABLE_LLD ON CACHE BOOL "")
7+
endif()
8+
9+
set(CLANG_BOOTSTRAP_TARGETS
10+
check-all
11+
check-clang
12+
check-lld
13+
check-llvm
14+
clang
15+
clang-test-depends
16+
toolchain-distribution
17+
install-toolchain-distribution
18+
install-toolchain-distribution-stripped
19+
install-toolchain-distribution-toolchain
20+
lld-test-depends
21+
llvm-config
22+
llvm-test-depends
23+
test-depends
24+
test-suite CACHE STRING "")
25+
26+
get_cmake_property(variableNames VARIABLES)
27+
foreach(variableName ${variableNames})
28+
if(variableName MATCHES "^STAGE2_")
29+
string(REPLACE "STAGE2_" "" new_name ${variableName})
30+
list(APPEND EXTRA_ARGS "-D${new_name}=${${variableName}}")
31+
endif()
32+
endforeach()
33+
34+
set(CLANG_PGO_TRAINING_DEPS
35+
builtins
36+
runtimes
37+
CACHE STRING "")
38+
39+
# Setup the bootstrap build.
40+
set(CLANG_ENABLE_BOOTSTRAP ON CACHE BOOL "")
41+
set(CLANG_BOOTSTRAP_CMAKE_ARGS
42+
${EXTRA_ARGS}
43+
-C ${CMAKE_CURRENT_LIST_DIR}/Fuchsia-stage2.cmake
44+
CACHE STRING "")

clang/cmake/caches/Fuchsia.cmake

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,16 @@ else()
126126
set(LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
127127
set(LIBCXX_HARDENING_MODE "none" CACHE STRING "")
128128
set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
129+
set(COMPILER_RT_BUILD_LIBFUZZER OFF CACHE BOOL "")
130+
set(COMPILER_RT_BUILD_PROFILE ON CACHE BOOL "")
131+
set(COMPILER_RT_BUILD_SANITIZERS OFF CACHE BOOL "")
132+
set(COMPILER_RT_BUILD_XRAY OFF CACHE BOOL "")
133+
set(COMPILER_RT_USE_BUILTINS_LIBRARY ON CACHE BOOL "")
134+
set(COMPILER_RT_DEFAULT_TARGET_ONLY ON CACHE BOOL "")
135+
set(SANITIZER_CXX_ABI "libc++" CACHE STRING "")
136+
set(SANITIZER_CXX_ABI_INTREE ON CACHE BOOL "")
137+
set(SANITIZER_TEST_CXX "libc++" CACHE STRING "")
138+
set(SANITIZER_TEST_CXX_INTREE ON CACHE BOOL "")
129139
set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "")
130140
set(RUNTIMES_CMAKE_ARGS "-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13;-DCMAKE_OSX_ARCHITECTURES=arm64|x86_64" CACHE STRING "")
131141
endif()
@@ -164,34 +174,29 @@ endif()
164174

165175
set(BOOTSTRAP_LLVM_ENABLE_LLD ON CACHE BOOL "")
166176
set(BOOTSTRAP_LLVM_ENABLE_LTO ON CACHE BOOL "")
177+
set(BOOTSTRAP_LLVM_BUILD_INSTRUMENTED ON CACHE BOOL "")
167178

168179
set(_FUCHSIA_BOOTSTRAP_TARGETS
169-
check-all
170-
check-clang
171-
check-lld
172-
check-llvm
173-
check-polly
174-
llvm-config
175-
clang-test-depends
176-
lld-test-depends
177-
llvm-test-depends
178-
test-suite
179-
test-depends
180-
toolchain-distribution
181-
install-toolchain-distribution
182-
install-toolchain-distribution-stripped
183-
install-toolchain-distribution-toolchain
184-
clang)
180+
generate-profdata
181+
stage2
182+
stage2-toolchain-distribution
183+
stage2-install-toolchain-distribution
184+
stage2-install-toolchain-distribution-stripped
185+
stage2-install-toolchain-distribution-toolchain
186+
stage2-check-all
187+
stage2-check-lld
188+
stage2-check-llvm
189+
stage2-check-clang
190+
stage2-test-suite)
185191

186192
if(FUCHSIA_ENABLE_LLDB)
187193
list(APPEND _FUCHSIA_ENABLE_PROJECTS lldb)
188194
list(APPEND _FUCHSIA_BOOTSTRAP_TARGETS
189-
check-lldb
190-
lldb-test-depends
191-
debugger-distribution
192-
install-debugger-distribution
193-
install-debugger-distribution-stripped
194-
install-debugger-distribution-toolchain)
195+
stage2-check-lldb
196+
stage2-debugger-distribution
197+
stage2-install-debugger-distribution
198+
stage2-install-debugger-distribution-stripped
199+
stage2-install-debugger-distribution-toolchain)
195200
endif()
196201

197202
set(LLVM_ENABLE_PROJECTS ${_FUCHSIA_ENABLE_PROJECTS} CACHE STRING "")
@@ -200,6 +205,7 @@ set(CLANG_BOOTSTRAP_TARGETS ${_FUCHSIA_BOOTSTRAP_TARGETS} CACHE STRING "")
200205
get_cmake_property(variableNames VARIABLES)
201206
foreach(variableName ${variableNames})
202207
if(variableName MATCHES "^STAGE2_")
208+
list(APPEND EXTRA_ARGS "-D${variableName}=${${variableName}}")
203209
string(REPLACE "STAGE2_" "" new_name ${variableName})
204210
string(REPLACE ";" "|" value "${${variableName}}")
205211
list(APPEND EXTRA_ARGS "-D${new_name}=${value}")
@@ -209,6 +215,9 @@ endforeach()
209215
# TODO: This is a temporary workaround until we figure out the right solution.
210216
set(BOOTSTRAP_LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "")
211217

218+
set(LLVM_BUILTIN_TARGETS "default" CACHE STRING "")
219+
set(LLVM_RUNTIME_TARGETS "default" CACHE STRING "")
220+
212221
# Setup the bootstrap build.
213222
set(CLANG_ENABLE_BOOTSTRAP ON CACHE BOOL "")
214223
set(CLANG_BOOTSTRAP_EXTRA_DEPS
@@ -217,5 +226,5 @@ set(CLANG_BOOTSTRAP_EXTRA_DEPS
217226
CACHE STRING "")
218227
set(CLANG_BOOTSTRAP_CMAKE_ARGS
219228
${EXTRA_ARGS}
220-
-C ${CMAKE_CURRENT_LIST_DIR}/Fuchsia-stage2.cmake
229+
-C ${CMAKE_CURRENT_LIST_DIR}/Fuchsia-stage2-instrumented.cmake
221230
CACHE STRING "")

0 commit comments

Comments
 (0)