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