1*61c4878aSAndroid Build Coastguard Worker# Copyright 2020 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 Workerimport("//build_overrides/pigweed_environment.gni") 17*61c4878aSAndroid Build Coastguard Worker 18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/defaults.gni") 19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_toolchain/rbe.gni") 20*61c4878aSAndroid Build Coastguard Worker 21*61c4878aSAndroid Build Coastguard Worker_default_compiler_prefix = "" 22*61c4878aSAndroid Build Coastguard Workerif (defined(pw_env_setup_CIPD_ARM)) { 23*61c4878aSAndroid Build Coastguard Worker _default_compiler_prefix = pw_env_setup_CIPD_ARM + "/bin/" 24*61c4878aSAndroid Build Coastguard Worker} 25*61c4878aSAndroid Build Coastguard Worker 26*61c4878aSAndroid Build Coastguard Workerdeclare_args() { 27*61c4878aSAndroid Build Coastguard Worker # This flag allows you to specify a prefix for ARM GCC tools use when 28*61c4878aSAndroid Build Coastguard Worker # compiling with an arm-none-eabi toolchain. This is useful for debugging 29*61c4878aSAndroid Build Coastguard Worker # toolchain-related issues, or for building with an externally-provided 30*61c4878aSAndroid Build Coastguard Worker # toolchain. 31*61c4878aSAndroid Build Coastguard Worker # 32*61c4878aSAndroid Build Coastguard Worker # Pigweed toolchains should NOT override this variable so projects or users 33*61c4878aSAndroid Build Coastguard Worker # can control it via `.gn` or by setting it as a regular gn argument (e.g. 34*61c4878aSAndroid Build Coastguard Worker # `gn gen --args='pw_toolchain_ARM_NONE_EABI_PREFIX=/path/to/my-'`). 35*61c4878aSAndroid Build Coastguard Worker # 36*61c4878aSAndroid Build Coastguard Worker # Examples: 37*61c4878aSAndroid Build Coastguard Worker # pw_toolchain_ARM_NONE_EABI_PREFIX = "" 38*61c4878aSAndroid Build Coastguard Worker # command: "arm-none-eabi-gcc" (from PATH) 39*61c4878aSAndroid Build Coastguard Worker # 40*61c4878aSAndroid Build Coastguard Worker # pw_toolchain_ARM_NONE_EABI_PREFIX = "my-" 41*61c4878aSAndroid Build Coastguard Worker # command: "my-arm-none-eabi-gcc" (from PATH) 42*61c4878aSAndroid Build Coastguard Worker # 43*61c4878aSAndroid Build Coastguard Worker # pw_toolchain_ARM_NONE_EABI_PREFIX = "/bin/my-" 44*61c4878aSAndroid Build Coastguard Worker # command: "/bin/my-arm-none-eabi-gcc" (absolute path) 45*61c4878aSAndroid Build Coastguard Worker # 46*61c4878aSAndroid Build Coastguard Worker # pw_toolchain_ARM_NONE_EABI_PREFIX = "//environment/gcc_next/" 47*61c4878aSAndroid Build Coastguard Worker # command: "../environment/gcc_next/arm-none-eabi-gcc" (relative path) 48*61c4878aSAndroid Build Coastguard Worker # 49*61c4878aSAndroid Build Coastguard Worker # GN templates should use `arm_gcc_toolchain_tools.*` to get the intended 50*61c4878aSAndroid Build Coastguard Worker # command string rather than relying directly on 51*61c4878aSAndroid Build Coastguard Worker # pw_toolchain_ARM_NONE_EABI_PREFIX. 52*61c4878aSAndroid Build Coastguard Worker # 53*61c4878aSAndroid Build Coastguard Worker # If the prefix begins with "//", it will be rebased to be relative to the 54*61c4878aSAndroid Build Coastguard Worker # root build directory. 55*61c4878aSAndroid Build Coastguard Worker pw_toolchain_ARM_NONE_EABI_PREFIX = _default_compiler_prefix 56*61c4878aSAndroid Build Coastguard Worker} 57*61c4878aSAndroid Build Coastguard Worker 58*61c4878aSAndroid Build Coastguard Worker# Specifies the tools used by ARM GCC toolchains. 59*61c4878aSAndroid Build Coastguard Workerarm_gcc_toolchain_tools = { 60*61c4878aSAndroid Build Coastguard Worker _rbe_debug_flag = "" 61*61c4878aSAndroid Build Coastguard Worker _local_tool_name_root = "arm-none-eabi-" 62*61c4878aSAndroid Build Coastguard Worker 63*61c4878aSAndroid Build Coastguard Worker _toolchain_prefix = pw_toolchain_ARM_NONE_EABI_PREFIX 64*61c4878aSAndroid Build Coastguard Worker if (_toolchain_prefix != "") { 65*61c4878aSAndroid Build Coastguard Worker # If the prefix is a GN-absolute path, rebase it so it's relative to the 66*61c4878aSAndroid Build Coastguard Worker # root of the build directory. 67*61c4878aSAndroid Build Coastguard Worker _split_prefix = string_split(_toolchain_prefix, "//") 68*61c4878aSAndroid Build Coastguard Worker if (_split_prefix[0] == "") { 69*61c4878aSAndroid Build Coastguard Worker _toolchain_prefix = rebase_path(_toolchain_prefix, root_build_dir) 70*61c4878aSAndroid Build Coastguard Worker } 71*61c4878aSAndroid Build Coastguard Worker _local_tool_name_root = _toolchain_prefix + _local_tool_name_root 72*61c4878aSAndroid Build Coastguard Worker } 73*61c4878aSAndroid Build Coastguard Worker if (host_os == "win") { 74*61c4878aSAndroid Build Coastguard Worker _local_tool_name_root = string_replace(_local_tool_name_root, "/", "\\") 75*61c4878aSAndroid Build Coastguard Worker } 76*61c4878aSAndroid Build Coastguard Worker 77*61c4878aSAndroid Build Coastguard Worker if (pw_toolchain_USE_RBE) { 78*61c4878aSAndroid Build Coastguard Worker if (pw_toolchain_RBE_DEBUG) { 79*61c4878aSAndroid Build Coastguard Worker _rbe_debug_flag = " -v " 80*61c4878aSAndroid Build Coastguard Worker } 81*61c4878aSAndroid Build Coastguard Worker _exec_root = rebase_path("//") 82*61c4878aSAndroid Build Coastguard Worker _rewrapper_binary = "rewrapper" 83*61c4878aSAndroid Build Coastguard Worker _pw_rbe_config = pw_rbe_arm_gcc_config 84*61c4878aSAndroid Build Coastguard Worker _inputs = rebase_path(pw_env_setup_CIPD_ARM, _exec_root) + "/" 85*61c4878aSAndroid Build Coastguard Worker _rbe_tool_name_root = 86*61c4878aSAndroid Build Coastguard Worker _rewrapper_binary + 87*61c4878aSAndroid Build Coastguard Worker " --labels=type=compile,lang=cpp,compiler=clang --cfg=" + 88*61c4878aSAndroid Build Coastguard Worker _pw_rbe_config + " --exec_root=" + _exec_root + " --inputs=" + _inputs + 89*61c4878aSAndroid Build Coastguard Worker " -- " + rebase_path(pw_env_setup_CIPD_ARM, root_build_dir) + 90*61c4878aSAndroid Build Coastguard Worker "/bin/arm-none-eabi-" 91*61c4878aSAndroid Build Coastguard Worker cc = _rbe_tool_name_root + "gcc" + _rbe_debug_flag 92*61c4878aSAndroid Build Coastguard Worker cxx = _rbe_tool_name_root + "g++" + _rbe_debug_flag 93*61c4878aSAndroid Build Coastguard Worker } else { 94*61c4878aSAndroid Build Coastguard Worker cc = _local_tool_name_root + "gcc" 95*61c4878aSAndroid Build Coastguard Worker cxx = _local_tool_name_root + "g++" 96*61c4878aSAndroid Build Coastguard Worker } 97*61c4878aSAndroid Build Coastguard Worker ar = _local_tool_name_root + "ar" 98*61c4878aSAndroid Build Coastguard Worker ld = _local_tool_name_root + "g++" 99*61c4878aSAndroid Build Coastguard Worker 100*61c4878aSAndroid Build Coastguard Worker link_group = true 101*61c4878aSAndroid Build Coastguard Worker} 102*61c4878aSAndroid Build Coastguard Worker 103*61c4878aSAndroid Build Coastguard Worker# Common configs shared by all ARM GCC toolchains. 104*61c4878aSAndroid Build Coastguard Worker_arm_gcc = [ 105*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:disable_psabi_warning", 106*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:disable_rwx_segment_warning", 107*61c4878aSAndroid Build Coastguard Worker] 108*61c4878aSAndroid Build Coastguard Worker 109*61c4878aSAndroid Build Coastguard Worker_cortex_m0plus = [ 110*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 111*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_m0plus", 112*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_software_fpu", 113*61c4878aSAndroid Build Coastguard Worker] 114*61c4878aSAndroid Build Coastguard Worker 115*61c4878aSAndroid Build Coastguard Worker# Configs specific to different architectures. 116*61c4878aSAndroid Build Coastguard Worker_cortex_m3 = [ 117*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 118*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_m3", 119*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_software_fpu", 120*61c4878aSAndroid Build Coastguard Worker] 121*61c4878aSAndroid Build Coastguard Worker 122*61c4878aSAndroid Build Coastguard Worker_cortex_m4 = [ 123*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 124*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_m4", 125*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_software_fpu", 126*61c4878aSAndroid Build Coastguard Worker] 127*61c4878aSAndroid Build Coastguard Worker 128*61c4878aSAndroid Build Coastguard Worker_cortex_m4f = [ 129*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 130*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_m4", 131*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_hardware_fpu", 132*61c4878aSAndroid Build Coastguard Worker] 133*61c4878aSAndroid Build Coastguard Worker 134*61c4878aSAndroid Build Coastguard Worker_cortex_m7 = [ 135*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 136*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_m7", 137*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_software_fpu", 138*61c4878aSAndroid Build Coastguard Worker] 139*61c4878aSAndroid Build Coastguard Worker 140*61c4878aSAndroid Build Coastguard Worker_cortex_m7f = [ 141*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 142*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_m7", 143*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_hardware_fpu_v5", 144*61c4878aSAndroid Build Coastguard Worker] 145*61c4878aSAndroid Build Coastguard Worker 146*61c4878aSAndroid Build Coastguard Worker_cortex_m33 = [ 147*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 148*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_m33", 149*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_software_fpu", 150*61c4878aSAndroid Build Coastguard Worker] 151*61c4878aSAndroid Build Coastguard Worker 152*61c4878aSAndroid Build Coastguard Worker_cortex_m33f = [ 153*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 154*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_m33", 155*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_hardware_fpu_v5_sp", 156*61c4878aSAndroid Build Coastguard Worker] 157*61c4878aSAndroid Build Coastguard Worker 158*61c4878aSAndroid Build Coastguard Worker_cortex_m55 = [ 159*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 160*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_m55", 161*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_software_fpu", 162*61c4878aSAndroid Build Coastguard Worker] 163*61c4878aSAndroid Build Coastguard Worker 164*61c4878aSAndroid Build Coastguard Worker_cortex_m55f = [ 165*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 166*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_m55", 167*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_hardware_fpu_auto", 168*61c4878aSAndroid Build Coastguard Worker] 169*61c4878aSAndroid Build Coastguard Worker 170*61c4878aSAndroid Build Coastguard Worker_cortex_a32 = [ 171*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_common", 172*61c4878aSAndroid Build Coastguard Worker "$dir_pw_toolchain/arm_gcc:cortex_a32", 173*61c4878aSAndroid Build Coastguard Worker] 174*61c4878aSAndroid Build Coastguard Worker 175*61c4878aSAndroid Build Coastguard Worker# Describes ARM GCC toolchains for specific targets. 176*61c4878aSAndroid Build Coastguard Workerpw_toolchain_arm_gcc = { 177*61c4878aSAndroid Build Coastguard Worker cortex_m0plus_debug = { 178*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m0plus_debug" 179*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 180*61c4878aSAndroid Build Coastguard Worker defaults = { 181*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m0plus + 182*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 183*61c4878aSAndroid Build Coastguard Worker } 184*61c4878aSAndroid Build Coastguard Worker } 185*61c4878aSAndroid Build Coastguard Worker cortex_m0plus_speed_optimized = { 186*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m0plus_speed_optimized" 187*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 188*61c4878aSAndroid Build Coastguard Worker defaults = { 189*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m0plus + 190*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 191*61c4878aSAndroid Build Coastguard Worker } 192*61c4878aSAndroid Build Coastguard Worker } 193*61c4878aSAndroid Build Coastguard Worker cortex_m0plus_size_optimized = { 194*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m0plus_size_optimized" 195*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 196*61c4878aSAndroid Build Coastguard Worker defaults = { 197*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m0plus + 198*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 199*61c4878aSAndroid Build Coastguard Worker } 200*61c4878aSAndroid Build Coastguard Worker } 201*61c4878aSAndroid Build Coastguard Worker cortex_m3_debug = { 202*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m3_debug" 203*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 204*61c4878aSAndroid Build Coastguard Worker defaults = { 205*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m3 + 206*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 207*61c4878aSAndroid Build Coastguard Worker } 208*61c4878aSAndroid Build Coastguard Worker } 209*61c4878aSAndroid Build Coastguard Worker cortex_m3_speed_optimized = { 210*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m3_speed_optimized" 211*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 212*61c4878aSAndroid Build Coastguard Worker defaults = { 213*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m3 + 214*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 215*61c4878aSAndroid Build Coastguard Worker } 216*61c4878aSAndroid Build Coastguard Worker } 217*61c4878aSAndroid Build Coastguard Worker cortex_m3_size_optimized = { 218*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m3_size_optimized" 219*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 220*61c4878aSAndroid Build Coastguard Worker defaults = { 221*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m3 + 222*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 223*61c4878aSAndroid Build Coastguard Worker } 224*61c4878aSAndroid Build Coastguard Worker } 225*61c4878aSAndroid Build Coastguard Worker cortex_m4_debug = { 226*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m4_debug" 227*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 228*61c4878aSAndroid Build Coastguard Worker defaults = { 229*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m4 + 230*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 231*61c4878aSAndroid Build Coastguard Worker } 232*61c4878aSAndroid Build Coastguard Worker } 233*61c4878aSAndroid Build Coastguard Worker cortex_m4_speed_optimized = { 234*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m4_speed_optimized" 235*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 236*61c4878aSAndroid Build Coastguard Worker defaults = { 237*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m4 + 238*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 239*61c4878aSAndroid Build Coastguard Worker } 240*61c4878aSAndroid Build Coastguard Worker } 241*61c4878aSAndroid Build Coastguard Worker cortex_m4_size_optimized = { 242*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m4_size_optimized" 243*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 244*61c4878aSAndroid Build Coastguard Worker defaults = { 245*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m4 + 246*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 247*61c4878aSAndroid Build Coastguard Worker } 248*61c4878aSAndroid Build Coastguard Worker } 249*61c4878aSAndroid Build Coastguard Worker cortex_m4f_debug = { 250*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m4f_debug" 251*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 252*61c4878aSAndroid Build Coastguard Worker defaults = { 253*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m4f + 254*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 255*61c4878aSAndroid Build Coastguard Worker } 256*61c4878aSAndroid Build Coastguard Worker } 257*61c4878aSAndroid Build Coastguard Worker cortex_m4f_speed_optimized = { 258*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m4f_speed_optimized" 259*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 260*61c4878aSAndroid Build Coastguard Worker defaults = { 261*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m4f + 262*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 263*61c4878aSAndroid Build Coastguard Worker } 264*61c4878aSAndroid Build Coastguard Worker } 265*61c4878aSAndroid Build Coastguard Worker cortex_m4f_size_optimized = { 266*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m4f_size_optimized" 267*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 268*61c4878aSAndroid Build Coastguard Worker defaults = { 269*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m4f + 270*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 271*61c4878aSAndroid Build Coastguard Worker } 272*61c4878aSAndroid Build Coastguard Worker } 273*61c4878aSAndroid Build Coastguard Worker cortex_m7_debug = { 274*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m7_debug" 275*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 276*61c4878aSAndroid Build Coastguard Worker defaults = { 277*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m7 + 278*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 279*61c4878aSAndroid Build Coastguard Worker } 280*61c4878aSAndroid Build Coastguard Worker } 281*61c4878aSAndroid Build Coastguard Worker cortex_m7_speed_optimized = { 282*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m7_speed_optimized" 283*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 284*61c4878aSAndroid Build Coastguard Worker defaults = { 285*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m7 + 286*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 287*61c4878aSAndroid Build Coastguard Worker } 288*61c4878aSAndroid Build Coastguard Worker } 289*61c4878aSAndroid Build Coastguard Worker cortex_m7_size_optimized = { 290*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m7_size_optimized" 291*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 292*61c4878aSAndroid Build Coastguard Worker defaults = { 293*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m7 + 294*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 295*61c4878aSAndroid Build Coastguard Worker } 296*61c4878aSAndroid Build Coastguard Worker } 297*61c4878aSAndroid Build Coastguard Worker cortex_m7f_debug = { 298*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m7f_debug" 299*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 300*61c4878aSAndroid Build Coastguard Worker defaults = { 301*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m7f + 302*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 303*61c4878aSAndroid Build Coastguard Worker } 304*61c4878aSAndroid Build Coastguard Worker } 305*61c4878aSAndroid Build Coastguard Worker cortex_m7f_speed_optimized = { 306*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m7f_speed_optimized" 307*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 308*61c4878aSAndroid Build Coastguard Worker defaults = { 309*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m7f + 310*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 311*61c4878aSAndroid Build Coastguard Worker } 312*61c4878aSAndroid Build Coastguard Worker } 313*61c4878aSAndroid Build Coastguard Worker cortex_m7f_size_optimized = { 314*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m7f_size_optimized" 315*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 316*61c4878aSAndroid Build Coastguard Worker defaults = { 317*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m7f + 318*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 319*61c4878aSAndroid Build Coastguard Worker } 320*61c4878aSAndroid Build Coastguard Worker } 321*61c4878aSAndroid Build Coastguard Worker cortex_m33_debug = { 322*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m33_debug" 323*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 324*61c4878aSAndroid Build Coastguard Worker defaults = { 325*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m33 + 326*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 327*61c4878aSAndroid Build Coastguard Worker } 328*61c4878aSAndroid Build Coastguard Worker } 329*61c4878aSAndroid Build Coastguard Worker cortex_m33_speed_optimized = { 330*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m33_speed_optimized" 331*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 332*61c4878aSAndroid Build Coastguard Worker defaults = { 333*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m33 + 334*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 335*61c4878aSAndroid Build Coastguard Worker } 336*61c4878aSAndroid Build Coastguard Worker } 337*61c4878aSAndroid Build Coastguard Worker cortex_m33_size_optimized = { 338*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m33_size_optimized" 339*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 340*61c4878aSAndroid Build Coastguard Worker defaults = { 341*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m33 + 342*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 343*61c4878aSAndroid Build Coastguard Worker } 344*61c4878aSAndroid Build Coastguard Worker } 345*61c4878aSAndroid Build Coastguard Worker cortex_m33f_debug = { 346*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m33f_debug" 347*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 348*61c4878aSAndroid Build Coastguard Worker defaults = { 349*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m33f + 350*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 351*61c4878aSAndroid Build Coastguard Worker } 352*61c4878aSAndroid Build Coastguard Worker } 353*61c4878aSAndroid Build Coastguard Worker cortex_m33f_speed_optimized = { 354*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m33f_speed_optimized" 355*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 356*61c4878aSAndroid Build Coastguard Worker defaults = { 357*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m33f + 358*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 359*61c4878aSAndroid Build Coastguard Worker } 360*61c4878aSAndroid Build Coastguard Worker } 361*61c4878aSAndroid Build Coastguard Worker cortex_m33f_size_optimized = { 362*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m33f_size_optimized" 363*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 364*61c4878aSAndroid Build Coastguard Worker defaults = { 365*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m33f + 366*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 367*61c4878aSAndroid Build Coastguard Worker } 368*61c4878aSAndroid Build Coastguard Worker } 369*61c4878aSAndroid Build Coastguard Worker 370*61c4878aSAndroid Build Coastguard Worker cortex_m55_debug = { 371*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m55_debug" 372*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 373*61c4878aSAndroid Build Coastguard Worker defaults = { 374*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m55 + 375*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 376*61c4878aSAndroid Build Coastguard Worker } 377*61c4878aSAndroid Build Coastguard Worker } 378*61c4878aSAndroid Build Coastguard Worker cortex_m55_speed_optimized = { 379*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m55_speed_optimized" 380*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 381*61c4878aSAndroid Build Coastguard Worker defaults = { 382*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m55 + 383*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 384*61c4878aSAndroid Build Coastguard Worker } 385*61c4878aSAndroid Build Coastguard Worker } 386*61c4878aSAndroid Build Coastguard Worker cortex_m55_size_optimized = { 387*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m55_size_optimized" 388*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 389*61c4878aSAndroid Build Coastguard Worker defaults = { 390*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m55 + 391*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 392*61c4878aSAndroid Build Coastguard Worker } 393*61c4878aSAndroid Build Coastguard Worker } 394*61c4878aSAndroid Build Coastguard Worker cortex_m55f_debug = { 395*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m55f_debug" 396*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 397*61c4878aSAndroid Build Coastguard Worker defaults = { 398*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m55f + 399*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 400*61c4878aSAndroid Build Coastguard Worker } 401*61c4878aSAndroid Build Coastguard Worker } 402*61c4878aSAndroid Build Coastguard Worker cortex_m55f_speed_optimized = { 403*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m55f_speed_optimized" 404*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 405*61c4878aSAndroid Build Coastguard Worker defaults = { 406*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m55f + 407*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 408*61c4878aSAndroid Build Coastguard Worker } 409*61c4878aSAndroid Build Coastguard Worker } 410*61c4878aSAndroid Build Coastguard Worker 411*61c4878aSAndroid Build Coastguard Worker cortex_m55f_size_optimized = { 412*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_m55f_size_optimized" 413*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 414*61c4878aSAndroid Build Coastguard Worker defaults = { 415*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_m55f + 416*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 417*61c4878aSAndroid Build Coastguard Worker } 418*61c4878aSAndroid Build Coastguard Worker } 419*61c4878aSAndroid Build Coastguard Worker 420*61c4878aSAndroid Build Coastguard Worker cortex_a32_debug = { 421*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_a32_debug" 422*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 423*61c4878aSAndroid Build Coastguard Worker defaults = { 424*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_a32 + 425*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_debugging" ] 426*61c4878aSAndroid Build Coastguard Worker } 427*61c4878aSAndroid Build Coastguard Worker } 428*61c4878aSAndroid Build Coastguard Worker cortex_a32_speed_optimized = { 429*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_a32_speed_optimized" 430*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 431*61c4878aSAndroid Build Coastguard Worker defaults = { 432*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_a32 + 433*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_speed" ] 434*61c4878aSAndroid Build Coastguard Worker } 435*61c4878aSAndroid Build Coastguard Worker } 436*61c4878aSAndroid Build Coastguard Worker cortex_a32_size_optimized = { 437*61c4878aSAndroid Build Coastguard Worker name = "arm_gcc_cortex_a32_size_optimized" 438*61c4878aSAndroid Build Coastguard Worker forward_variables_from(arm_gcc_toolchain_tools, "*") 439*61c4878aSAndroid Build Coastguard Worker defaults = { 440*61c4878aSAndroid Build Coastguard Worker default_configs = pigweed_default_configs + _arm_gcc + _cortex_a32 + 441*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_build:optimize_size" ] 442*61c4878aSAndroid Build Coastguard Worker } 443*61c4878aSAndroid Build Coastguard Worker } 444*61c4878aSAndroid Build Coastguard Worker} 445*61c4878aSAndroid Build Coastguard Worker 446*61c4878aSAndroid Build Coastguard Worker# This list just contains the members of the above scope for convenience to make 447*61c4878aSAndroid Build Coastguard Worker# it trivial to generate all the toolchains in this file via a 448*61c4878aSAndroid Build Coastguard Worker# `generate_toolchains` target. 449*61c4878aSAndroid Build Coastguard Workerpw_toolchain_arm_gcc_list = [ 450*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m0plus_debug, 451*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m0plus_speed_optimized, 452*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m0plus_size_optimized, 453*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m3_debug, 454*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m3_speed_optimized, 455*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m3_size_optimized, 456*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m4_debug, 457*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m4_speed_optimized, 458*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m4_size_optimized, 459*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m4f_debug, 460*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m4f_speed_optimized, 461*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m4f_size_optimized, 462*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m7_debug, 463*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m7_speed_optimized, 464*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m7_size_optimized, 465*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m7f_debug, 466*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m7f_speed_optimized, 467*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m7f_size_optimized, 468*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m33_debug, 469*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m33_speed_optimized, 470*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m33_size_optimized, 471*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m33f_debug, 472*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m33f_speed_optimized, 473*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m33f_size_optimized, 474*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m55_debug, 475*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m55_speed_optimized, 476*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m55_size_optimized, 477*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m55f_debug, 478*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m55f_speed_optimized, 479*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_m55f_size_optimized, 480*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_a32_debug, 481*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_a32_speed_optimized, 482*61c4878aSAndroid Build Coastguard Worker pw_toolchain_arm_gcc.cortex_a32_size_optimized, 483*61c4878aSAndroid Build Coastguard Worker] 484*61c4878aSAndroid Build Coastguard Worker 485*61c4878aSAndroid Build Coastguard Worker# Configs that require Arm GCC 12 or newer to use. Downstream projects that use 486*61c4878aSAndroid Build Coastguard Worker# older compilers should remove these from default_configs. 487*61c4878aSAndroid Build Coastguard Workerpw_toolchain_arm_gcc_12_configs = 488*61c4878aSAndroid Build Coastguard Worker [ "$dir_pw_toolchain/arm_gcc:disable_rwx_segment_warning" ] 489