xref: /aosp_15_r20/external/pigweed/targets/host/target_toolchains.gni (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2024 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker#
3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker# the License at
6*61c4878aSAndroid Build Coastguard Worker#
7*61c4878aSAndroid Build Coastguard Worker#     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker#
9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker# the License.
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni")
16*61c4878aSAndroid Build Coastguard Worker
17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pigweed/targets/common/stl.gni")
18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_async/backend.gni")
19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_async2/backend.gni")
20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_perf_test/perf_test.gni")
21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_protobuf_compiler/proto.gni")
22*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_rpc/system_server/backend.gni")
23*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_sys_io/backend.gni")
24*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_system/backend.gni")
25*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_third_party/nanopb/nanopb.gni")
26*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_toolchain/host_clang/toolchains.gni")
27*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_toolchain/host_gcc/toolchains.gni")
28*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_toolchain/traits.gni")
29*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_trace/backend.gni")
30*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_trace_tokenized/config.gni")
31*61c4878aSAndroid Build Coastguard Worker
32*61c4878aSAndroid Build Coastguard Worker_host_common = {
33*61c4878aSAndroid Build Coastguard Worker  forward_variables_from(pw_targets_STL_BACKEND_GROUP, "*")
34*61c4878aSAndroid Build Coastguard Worker
35*61c4878aSAndroid Build Coastguard Worker  # Use logging-based test output on host.
36*61c4878aSAndroid Build Coastguard Worker  pw_unit_test_MAIN = "$dir_pw_unit_test:logging_main"
37*61c4878aSAndroid Build Coastguard Worker
38*61c4878aSAndroid Build Coastguard Worker  # Used to configure logging-based perftest on host
39*61c4878aSAndroid Build Coastguard Worker  pw_perf_test_MAIN_FUNCTION = "$dir_pw_perf_test:logging_main"
40*61c4878aSAndroid Build Coastguard Worker
41*61c4878aSAndroid Build Coastguard Worker  # Configure backend for assert facade.
42*61c4878aSAndroid Build Coastguard Worker  pw_assert_BACKEND = "$dir_pw_assert:print_and_abort_check_backend"
43*61c4878aSAndroid Build Coastguard Worker  pw_assert_LITE_BACKEND = "$dir_pw_assert:print_and_abort_assert_backend"
44*61c4878aSAndroid Build Coastguard Worker
45*61c4878aSAndroid Build Coastguard Worker  # Configure backend for legacy facade.
46*61c4878aSAndroid Build Coastguard Worker  pw_async_TASK_BACKEND = "$dir_pw_async_basic:task"
47*61c4878aSAndroid Build Coastguard Worker  pw_async_FAKE_DISPATCHER_BACKEND = "$dir_pw_async_basic:fake_dispatcher"
48*61c4878aSAndroid Build Coastguard Worker
49*61c4878aSAndroid Build Coastguard Worker  # Configure backend for async facade.
50*61c4878aSAndroid Build Coastguard Worker  pw_async2_DISPATCHER_BACKEND = "$dir_pw_async2_basic:dispatcher_backend"
51*61c4878aSAndroid Build Coastguard Worker
52*61c4878aSAndroid Build Coastguard Worker  # Configure backend for logging facade.
53*61c4878aSAndroid Build Coastguard Worker  pw_log_BACKEND = "$dir_pw_log_basic"
54*61c4878aSAndroid Build Coastguard Worker
55*61c4878aSAndroid Build Coastguard Worker  # Enable decimal expansion when converting floats to string.
56*61c4878aSAndroid Build Coastguard Worker  pw_string_CONFIG = "$dir_pw_string:enable_decimal_float_expansion"
57*61c4878aSAndroid Build Coastguard Worker
58*61c4878aSAndroid Build Coastguard Worker  # Configure backend for pw_sys_io facade.
59*61c4878aSAndroid Build Coastguard Worker  pw_sys_io_BACKEND = "$dir_pw_sys_io_stdio"
60*61c4878aSAndroid Build Coastguard Worker
61*61c4878aSAndroid Build Coastguard Worker  # Configure backend for pw_rpc_system_server.
62*61c4878aSAndroid Build Coastguard Worker  pw_rpc_system_server_BACKEND = "$dir_pigweed/targets/host:system_rpc_server"
63*61c4878aSAndroid Build Coastguard Worker
64*61c4878aSAndroid Build Coastguard Worker  # Configure backend for trace facade.
65*61c4878aSAndroid Build Coastguard Worker  pw_trace_BACKEND = "$dir_pw_trace_tokenized"
66*61c4878aSAndroid Build Coastguard Worker
67*61c4878aSAndroid Build Coastguard Worker  # Tokenizer trace time.
68*61c4878aSAndroid Build Coastguard Worker  pw_trace_tokenizer_time = "$dir_pw_trace_tokenized:host_trace_time"
69*61c4878aSAndroid Build Coastguard Worker
70*61c4878aSAndroid Build Coastguard Worker  # Configure backend for pw_perf_test timing facade.
71*61c4878aSAndroid Build Coastguard Worker  pw_perf_test_TIMER_INTERFACE_BACKEND = "$dir_pw_perf_test:chrono_timer"
72*61c4878aSAndroid Build Coastguard Worker
73*61c4878aSAndroid Build Coastguard Worker  pw_build_LINK_DEPS = []  # Explicit list overwrite required by GN
74*61c4878aSAndroid Build Coastguard Worker  pw_build_LINK_DEPS = [
75*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_assert:impl",
76*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_log:impl",
77*61c4878aSAndroid Build Coastguard Worker  ]
78*61c4878aSAndroid Build Coastguard Worker
79*61c4878aSAndroid Build Coastguard Worker  # Specify builtin GN variables.
80*61c4878aSAndroid Build Coastguard Worker  current_os = host_os
81*61c4878aSAndroid Build Coastguard Worker  current_cpu = host_cpu
82*61c4878aSAndroid Build Coastguard Worker}
83*61c4878aSAndroid Build Coastguard Worker
84*61c4878aSAndroid Build Coastguard Worker# Linux-specific target configuration.
85*61c4878aSAndroid Build Coastguard Worker_linux_config = {
86*61c4878aSAndroid Build Coastguard Worker  pw_bloat_BLOATY_CONFIG = get_path_info("linux.bloaty", "abspath")
87*61c4878aSAndroid Build Coastguard Worker  pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test", "abspath")
88*61c4878aSAndroid Build Coastguard Worker  pw_async2_DISPATCHER_BACKEND = "$dir_pw_async2_epoll:dispatcher_backend"
89*61c4878aSAndroid Build Coastguard Worker}
90*61c4878aSAndroid Build Coastguard Worker
91*61c4878aSAndroid Build Coastguard Worker# macOS-specific target configuration.
92*61c4878aSAndroid Build Coastguard Worker_mac_config = {
93*61c4878aSAndroid Build Coastguard Worker  pw_bloat_BLOATY_CONFIG = get_path_info("macos.bloaty", "abspath")
94*61c4878aSAndroid Build Coastguard Worker  pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test", "abspath")
95*61c4878aSAndroid Build Coastguard Worker}
96*61c4878aSAndroid Build Coastguard Worker
97*61c4878aSAndroid Build Coastguard Worker# Windows-specific target configuration.
98*61c4878aSAndroid Build Coastguard Worker_win_config = {
99*61c4878aSAndroid Build Coastguard Worker  # This is here as bloaty_config_file cannot be an empty string or GN fails.
100*61c4878aSAndroid Build Coastguard Worker  # TODO(frolv): Add this file and enable size reports on Windows.
101*61c4878aSAndroid Build Coastguard Worker  pw_bloat_BLOATY_CONFIG = get_path_info("windows.bloaty", "abspath")
102*61c4878aSAndroid Build Coastguard Worker  pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test.bat", "abspath")
103*61c4878aSAndroid Build Coastguard Worker}
104*61c4878aSAndroid Build Coastguard Worker
105*61c4878aSAndroid Build Coastguard Worker_os_specific_config = {
106*61c4878aSAndroid Build Coastguard Worker  if (host_os == "linux") {
107*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_linux_config, "*")
108*61c4878aSAndroid Build Coastguard Worker  } else if (host_os == "mac") {
109*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_mac_config, "*")
110*61c4878aSAndroid Build Coastguard Worker  } else if (host_os == "win") {
111*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_win_config, "*")
112*61c4878aSAndroid Build Coastguard Worker  }
113*61c4878aSAndroid Build Coastguard Worker}
114*61c4878aSAndroid Build Coastguard Worker
115*61c4878aSAndroid Build Coastguard Worker_clang_default_configs = [
116*61c4878aSAndroid Build Coastguard Worker  "$dir_pw_build:extra_strict_warnings",
117*61c4878aSAndroid Build Coastguard Worker  "$dir_pw_build:clang_thread_safety_warnings",
118*61c4878aSAndroid Build Coastguard Worker]
119*61c4878aSAndroid Build Coastguard Worker_internal_clang_default_configs =
120*61c4878aSAndroid Build Coastguard Worker    _clang_default_configs + [ "$dir_pw_build:internal_strict_warnings" ]
121*61c4878aSAndroid Build Coastguard Worker
122*61c4878aSAndroid Build Coastguard Worker_gcc_default_configs = [
123*61c4878aSAndroid Build Coastguard Worker  "$dir_pw_build:extra_strict_warnings",
124*61c4878aSAndroid Build Coastguard Worker  "$dir_pw_toolchain/host_gcc:threading_support",
125*61c4878aSAndroid Build Coastguard Worker]
126*61c4878aSAndroid Build Coastguard Worker_internal_gcc_default_configs =
127*61c4878aSAndroid Build Coastguard Worker    _gcc_default_configs + [ "$dir_pw_build:internal_strict_warnings" ]
128*61c4878aSAndroid Build Coastguard Worker
129*61c4878aSAndroid Build Coastguard Worker_excluded_members = [
130*61c4878aSAndroid Build Coastguard Worker  "defaults",
131*61c4878aSAndroid Build Coastguard Worker  "name",
132*61c4878aSAndroid Build Coastguard Worker]
133*61c4878aSAndroid Build Coastguard Worker
134*61c4878aSAndroid Build Coastguard Workerpw_target_toolchain_host = {
135*61c4878aSAndroid Build Coastguard Worker  clang_debug = {
136*61c4878aSAndroid Build Coastguard Worker    name = "host_clang_debug"
137*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.debug
138*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
139*61c4878aSAndroid Build Coastguard Worker    defaults = {
140*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
141*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
142*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
143*61c4878aSAndroid Build Coastguard Worker      default_configs += _clang_default_configs
144*61c4878aSAndroid Build Coastguard Worker    }
145*61c4878aSAndroid Build Coastguard Worker  }
146*61c4878aSAndroid Build Coastguard Worker
147*61c4878aSAndroid Build Coastguard Worker  clang_speed_optimized = {
148*61c4878aSAndroid Build Coastguard Worker    name = "host_clang_speed_optimized"
149*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.speed_optimized
150*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
151*61c4878aSAndroid Build Coastguard Worker    defaults = {
152*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
153*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
154*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
155*61c4878aSAndroid Build Coastguard Worker      default_configs += _clang_default_configs
156*61c4878aSAndroid Build Coastguard Worker    }
157*61c4878aSAndroid Build Coastguard Worker  }
158*61c4878aSAndroid Build Coastguard Worker
159*61c4878aSAndroid Build Coastguard Worker  clang_size_optimized = {
160*61c4878aSAndroid Build Coastguard Worker    name = "host_clang_size_optimized"
161*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.size_optimized
162*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
163*61c4878aSAndroid Build Coastguard Worker    defaults = {
164*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
165*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
166*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
167*61c4878aSAndroid Build Coastguard Worker      default_configs += _clang_default_configs
168*61c4878aSAndroid Build Coastguard Worker    }
169*61c4878aSAndroid Build Coastguard Worker  }
170*61c4878aSAndroid Build Coastguard Worker
171*61c4878aSAndroid Build Coastguard Worker  clang_fuzz = {
172*61c4878aSAndroid Build Coastguard Worker    name = "host_clang_fuzz"
173*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.fuzz
174*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
175*61c4878aSAndroid Build Coastguard Worker    defaults = {
176*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
177*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*", [ "pw_unit_test_MAIN" ])
178*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
179*61c4878aSAndroid Build Coastguard Worker      default_configs += _clang_default_configs
180*61c4878aSAndroid Build Coastguard Worker
181*61c4878aSAndroid Build Coastguard Worker      # Always use the FuzzTest wrappers around gtest and gtest_main.
182*61c4878aSAndroid Build Coastguard Worker      pw_unit_test_MAIN = "$dir_pw_fuzzer:fuzztest_main"
183*61c4878aSAndroid Build Coastguard Worker      pw_unit_test_BACKEND = "$dir_pw_fuzzer:gtest"
184*61c4878aSAndroid Build Coastguard Worker    }
185*61c4878aSAndroid Build Coastguard Worker  }
186*61c4878aSAndroid Build Coastguard Worker
187*61c4878aSAndroid Build Coastguard Worker  clang_asan = {
188*61c4878aSAndroid Build Coastguard Worker    name = "host_clang_asan"
189*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.asan
190*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
191*61c4878aSAndroid Build Coastguard Worker    defaults = {
192*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
193*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
194*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
195*61c4878aSAndroid Build Coastguard Worker      default_configs += _clang_default_configs
196*61c4878aSAndroid Build Coastguard Worker    }
197*61c4878aSAndroid Build Coastguard Worker  }
198*61c4878aSAndroid Build Coastguard Worker
199*61c4878aSAndroid Build Coastguard Worker  clang_ubsan = {
200*61c4878aSAndroid Build Coastguard Worker    name = "host_clang_ubsan"
201*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.ubsan
202*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
203*61c4878aSAndroid Build Coastguard Worker    defaults = {
204*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
205*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
206*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
207*61c4878aSAndroid Build Coastguard Worker      default_configs += _clang_default_configs
208*61c4878aSAndroid Build Coastguard Worker    }
209*61c4878aSAndroid Build Coastguard Worker  }
210*61c4878aSAndroid Build Coastguard Worker
211*61c4878aSAndroid Build Coastguard Worker  clang_ubsan_heuristic = {
212*61c4878aSAndroid Build Coastguard Worker    name = "host_clang_ubsan_heuristic"
213*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.ubsan_heuristic
214*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
215*61c4878aSAndroid Build Coastguard Worker    defaults = {
216*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
217*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
218*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
219*61c4878aSAndroid Build Coastguard Worker      default_configs += _clang_default_configs
220*61c4878aSAndroid Build Coastguard Worker    }
221*61c4878aSAndroid Build Coastguard Worker  }
222*61c4878aSAndroid Build Coastguard Worker
223*61c4878aSAndroid Build Coastguard Worker  clang_msan = {
224*61c4878aSAndroid Build Coastguard Worker    name = "host_clang_msan"
225*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.msan
226*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
227*61c4878aSAndroid Build Coastguard Worker    defaults = {
228*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
229*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
230*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
231*61c4878aSAndroid Build Coastguard Worker      default_configs += _clang_default_configs
232*61c4878aSAndroid Build Coastguard Worker    }
233*61c4878aSAndroid Build Coastguard Worker  }
234*61c4878aSAndroid Build Coastguard Worker
235*61c4878aSAndroid Build Coastguard Worker  clang_tsan = {
236*61c4878aSAndroid Build Coastguard Worker    name = "host_clang_tsan"
237*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.tsan
238*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
239*61c4878aSAndroid Build Coastguard Worker    defaults = {
240*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
241*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
242*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
243*61c4878aSAndroid Build Coastguard Worker      default_configs += _clang_default_configs
244*61c4878aSAndroid Build Coastguard Worker    }
245*61c4878aSAndroid Build Coastguard Worker  }
246*61c4878aSAndroid Build Coastguard Worker
247*61c4878aSAndroid Build Coastguard Worker  clang_coverage = {
248*61c4878aSAndroid Build Coastguard Worker    name = "host_clang_coverage"
249*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.coverage
250*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
251*61c4878aSAndroid Build Coastguard Worker    defaults = {
252*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
253*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
254*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
255*61c4878aSAndroid Build Coastguard Worker      default_configs += _clang_default_configs
256*61c4878aSAndroid Build Coastguard Worker    }
257*61c4878aSAndroid Build Coastguard Worker  }
258*61c4878aSAndroid Build Coastguard Worker
259*61c4878aSAndroid Build Coastguard Worker  gcc_debug = {
260*61c4878aSAndroid Build Coastguard Worker    name = "host_gcc_debug"
261*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_gcc.debug
262*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
263*61c4878aSAndroid Build Coastguard Worker    defaults = {
264*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
265*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
266*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
267*61c4878aSAndroid Build Coastguard Worker      default_configs += _gcc_default_configs
268*61c4878aSAndroid Build Coastguard Worker    }
269*61c4878aSAndroid Build Coastguard Worker  }
270*61c4878aSAndroid Build Coastguard Worker
271*61c4878aSAndroid Build Coastguard Worker  gcc_speed_optimized = {
272*61c4878aSAndroid Build Coastguard Worker    name = "host_gcc_speed_optimized"
273*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_gcc.speed_optimized
274*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
275*61c4878aSAndroid Build Coastguard Worker    defaults = {
276*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
277*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
278*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
279*61c4878aSAndroid Build Coastguard Worker      default_configs += _gcc_default_configs
280*61c4878aSAndroid Build Coastguard Worker    }
281*61c4878aSAndroid Build Coastguard Worker  }
282*61c4878aSAndroid Build Coastguard Worker
283*61c4878aSAndroid Build Coastguard Worker  gcc_size_optimized = {
284*61c4878aSAndroid Build Coastguard Worker    name = "host_gcc_size_optimized"
285*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_gcc.size_optimized
286*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
287*61c4878aSAndroid Build Coastguard Worker    defaults = {
288*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
289*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
290*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
291*61c4878aSAndroid Build Coastguard Worker      default_configs += _gcc_default_configs
292*61c4878aSAndroid Build Coastguard Worker    }
293*61c4878aSAndroid Build Coastguard Worker  }
294*61c4878aSAndroid Build Coastguard Worker}
295*61c4878aSAndroid Build Coastguard Worker
296*61c4878aSAndroid Build Coastguard Worker# This list just contains the members of the above scope for convenience to make
297*61c4878aSAndroid Build Coastguard Worker# it trivial to generate all the toolchains in this file via a
298*61c4878aSAndroid Build Coastguard Worker# `generate_toolchains` target.
299*61c4878aSAndroid Build Coastguard Workerpw_target_toolchain_host_list = [
300*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.clang_debug,
301*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.clang_speed_optimized,
302*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.clang_size_optimized,
303*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.clang_fuzz,
304*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.clang_asan,
305*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.clang_ubsan,
306*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.clang_ubsan_heuristic,
307*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.clang_msan,
308*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.clang_tsan,
309*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.clang_coverage,
310*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.gcc_debug,
311*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.gcc_speed_optimized,
312*61c4878aSAndroid Build Coastguard Worker  pw_target_toolchain_host.gcc_size_optimized,
313*61c4878aSAndroid Build Coastguard Worker]
314*61c4878aSAndroid Build Coastguard Worker
315*61c4878aSAndroid Build Coastguard Worker# Additional configuration intended only for upstream Pigweed use.
316*61c4878aSAndroid Build Coastguard Worker_pigweed_internal = {
317*61c4878aSAndroid Build Coastguard Worker  pw_status_CONFIG = "$dir_pw_status:check_if_used"
318*61c4878aSAndroid Build Coastguard Worker
319*61c4878aSAndroid Build Coastguard Worker  # TODO: b/241565082 - Enable NC testing in GN Windows when it is fixed.
320*61c4878aSAndroid Build Coastguard Worker  pw_compilation_testing_NEGATIVE_COMPILATION_ENABLED = host_os != "win"
321*61c4878aSAndroid Build Coastguard Worker}
322*61c4878aSAndroid Build Coastguard Worker
323*61c4878aSAndroid Build Coastguard Worker# Host toolchains exclusively for upstream Pigweed use. To give upstream Pigweed
324*61c4878aSAndroid Build Coastguard Worker# flexibility in how it compiles code, these toolchains may not be used by
325*61c4878aSAndroid Build Coastguard Worker# downstream projects.
326*61c4878aSAndroid Build Coastguard Workerpw_internal_host_toolchains = [
327*61c4878aSAndroid Build Coastguard Worker  {
328*61c4878aSAndroid Build Coastguard Worker    name = "pw_strict_host_clang_debug"
329*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.debug
330*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
331*61c4878aSAndroid Build Coastguard Worker    defaults = {
332*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
333*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
334*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_pigweed_internal, "*")
335*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
336*61c4878aSAndroid Build Coastguard Worker      default_configs += _internal_clang_default_configs
337*61c4878aSAndroid Build Coastguard Worker    }
338*61c4878aSAndroid Build Coastguard Worker  },
339*61c4878aSAndroid Build Coastguard Worker  {
340*61c4878aSAndroid Build Coastguard Worker    name = "pw_strict_host_clang_speed_optimized"
341*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.speed_optimized
342*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
343*61c4878aSAndroid Build Coastguard Worker    defaults = {
344*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
345*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
346*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_pigweed_internal, "*")
347*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
348*61c4878aSAndroid Build Coastguard Worker      default_configs += _internal_clang_default_configs
349*61c4878aSAndroid Build Coastguard Worker    }
350*61c4878aSAndroid Build Coastguard Worker  },
351*61c4878aSAndroid Build Coastguard Worker  {
352*61c4878aSAndroid Build Coastguard Worker    name = "pw_strict_host_clang_size_optimized"
353*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.size_optimized
354*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
355*61c4878aSAndroid Build Coastguard Worker    defaults = {
356*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
357*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
358*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_pigweed_internal, "*")
359*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
360*61c4878aSAndroid Build Coastguard Worker      default_configs += _internal_clang_default_configs
361*61c4878aSAndroid Build Coastguard Worker    }
362*61c4878aSAndroid Build Coastguard Worker  },
363*61c4878aSAndroid Build Coastguard Worker  {
364*61c4878aSAndroid Build Coastguard Worker    name = "pw_strict_host_clang_fuzz"
365*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.fuzz
366*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
367*61c4878aSAndroid Build Coastguard Worker    defaults = {
368*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
369*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*", [ "pw_unit_test_MAIN" ])
370*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_pigweed_internal, "*")
371*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
372*61c4878aSAndroid Build Coastguard Worker      default_configs += _internal_clang_default_configs
373*61c4878aSAndroid Build Coastguard Worker
374*61c4878aSAndroid Build Coastguard Worker      # Always use the FuzzTest wrapper around gtest_main.
375*61c4878aSAndroid Build Coastguard Worker      pw_unit_test_MAIN = "$dir_pw_fuzzer:fuzztest_main"
376*61c4878aSAndroid Build Coastguard Worker      pw_unit_test_BACKEND = "$dir_pw_fuzzer:gtest"
377*61c4878aSAndroid Build Coastguard Worker    }
378*61c4878aSAndroid Build Coastguard Worker  },
379*61c4878aSAndroid Build Coastguard Worker  {
380*61c4878aSAndroid Build Coastguard Worker    name = "pw_strict_host_gcc_debug"
381*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_gcc.debug
382*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
383*61c4878aSAndroid Build Coastguard Worker    defaults = {
384*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
385*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
386*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_pigweed_internal, "*")
387*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
388*61c4878aSAndroid Build Coastguard Worker      default_configs += _internal_gcc_default_configs
389*61c4878aSAndroid Build Coastguard Worker    }
390*61c4878aSAndroid Build Coastguard Worker  },
391*61c4878aSAndroid Build Coastguard Worker  {
392*61c4878aSAndroid Build Coastguard Worker    name = "pw_strict_host_gcc_speed_optimized"
393*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_gcc.speed_optimized
394*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
395*61c4878aSAndroid Build Coastguard Worker    defaults = {
396*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
397*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
398*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_pigweed_internal, "*")
399*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
400*61c4878aSAndroid Build Coastguard Worker      default_configs += _internal_gcc_default_configs
401*61c4878aSAndroid Build Coastguard Worker    }
402*61c4878aSAndroid Build Coastguard Worker  },
403*61c4878aSAndroid Build Coastguard Worker  {
404*61c4878aSAndroid Build Coastguard Worker    name = "pw_strict_host_gcc_size_optimized"
405*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_gcc.size_optimized
406*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
407*61c4878aSAndroid Build Coastguard Worker    defaults = {
408*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
409*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
410*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_pigweed_internal, "*")
411*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
412*61c4878aSAndroid Build Coastguard Worker      default_configs += _internal_gcc_default_configs
413*61c4878aSAndroid Build Coastguard Worker    }
414*61c4878aSAndroid Build Coastguard Worker  },
415*61c4878aSAndroid Build Coastguard Worker  {
416*61c4878aSAndroid Build Coastguard Worker    name = "pw_strict_host_clang_size_optimized_cpp20"
417*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.size_optimized
418*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
419*61c4878aSAndroid Build Coastguard Worker    defaults = {
420*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
421*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
422*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_pigweed_internal, "*")
423*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
424*61c4878aSAndroid Build Coastguard Worker      default_configs += _internal_clang_default_configs
425*61c4878aSAndroid Build Coastguard Worker
426*61c4878aSAndroid Build Coastguard Worker      # Don't enable span asserts since C++20 provides the implementation for
427*61c4878aSAndroid Build Coastguard Worker      # pw::span, and there's no way to ensure asserts are enabled for the C++
428*61c4878aSAndroid Build Coastguard Worker      # standard library's std::span implementation.
429*61c4878aSAndroid Build Coastguard Worker      pw_span_ENABLE_ASSERTS = false
430*61c4878aSAndroid Build Coastguard Worker
431*61c4878aSAndroid Build Coastguard Worker      # Set the C++ standard to C++20 instead of the default.
432*61c4878aSAndroid Build Coastguard Worker      pw_toolchain_CXX_STANDARD = pw_toolchain_STANDARD.CXX20
433*61c4878aSAndroid Build Coastguard Worker    }
434*61c4878aSAndroid Build Coastguard Worker  },
435*61c4878aSAndroid Build Coastguard Worker  {
436*61c4878aSAndroid Build Coastguard Worker    name = "pw_strict_host_clang_size_optimized_minimal_cpp_stdlib"
437*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.size_optimized
438*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
439*61c4878aSAndroid Build Coastguard Worker    defaults = {
440*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
441*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
442*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_pigweed_internal, "*")
443*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
444*61c4878aSAndroid Build Coastguard Worker      default_configs += _internal_clang_default_configs
445*61c4878aSAndroid Build Coastguard Worker      default_public_deps = [ "$dir_pw_minimal_cpp_stdlib" ]
446*61c4878aSAndroid Build Coastguard Worker    }
447*61c4878aSAndroid Build Coastguard Worker  },
448*61c4878aSAndroid Build Coastguard Worker  {
449*61c4878aSAndroid Build Coastguard Worker    name = "pw_strict_host_clang_debug_dynamic_allocation"
450*61c4878aSAndroid Build Coastguard Worker    _toolchain_base = pw_toolchain_host_clang.debug
451*61c4878aSAndroid Build Coastguard Worker    forward_variables_from(_toolchain_base, "*", _excluded_members)
452*61c4878aSAndroid Build Coastguard Worker    defaults = {
453*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_toolchain_base.defaults, "*")
454*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_host_common, "*")
455*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_pigweed_internal, "*")
456*61c4878aSAndroid Build Coastguard Worker      forward_variables_from(_os_specific_config, "*")
457*61c4878aSAndroid Build Coastguard Worker      default_configs += _internal_clang_default_configs
458*61c4878aSAndroid Build Coastguard Worker
459*61c4878aSAndroid Build Coastguard Worker      pw_function_CONFIG = "$dir_pw_function:enable_dynamic_allocation"
460*61c4878aSAndroid Build Coastguard Worker      pw_rpc_CONFIG = "$dir_pw_rpc:use_dynamic_allocation"
461*61c4878aSAndroid Build Coastguard Worker    }
462*61c4878aSAndroid Build Coastguard Worker  },
463*61c4878aSAndroid Build Coastguard Worker]
464