1 # Copyright 2020 The Pigweed Authors
3 # Licensed under the Apache License, Version 2.0 (the "License"); you may not
4 # use this file except in compliance with the License. You may obtain a copy of
7 # https://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12 # License for the specific language governing permissions and limitations under
15 import("//build_overrides/pigweed.gni")
17 import("$dir_pw_sys_io/backend.gni")
18 import("$dir_pw_toolchain/arm_clang/toolchains.gni")
19 import("$dir_pw_toolchain/arm_gcc/toolchains.gni")
21 _test_runner_script = "py/lm3s6965evb_qemu_utils/unit_test_runner.py"
24 # Use the logging main.
25 pw_unit_test_MAIN = "$dir_pw_unit_test:logging_main"
27 # Configuration options for Pigweed executable targets.
28 pw_build_EXECUTABLE_TARGET_TYPE = "lm3s6965evb_executable"
30 pw_build_EXECUTABLE_TARGET_TYPE_FILE =
31 get_path_info("lm3s6965evb_executable.gni", "abspath")
33 # Path to the bloaty config file for the output binaries.
34 pw_bloat_BLOATY_CONFIG = "$dir_pw_boot_armv7m/bloaty_config.bloaty"
36 pw_unit_test_AUTOMATIC_RUNNER = get_path_info(_test_runner_script, "abspath")
39 pw_assert_BACKEND = dir_pw_assert_basic
40 pw_boot_BACKEND = dir_pw_boot_armv7m
41 pw_log_BACKEND = dir_pw_log_basic
42 pw_sys_io_BACKEND = dir_pw_sys_io_baremetal_lm3s6965evb
43 pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_baremetal:spin_lock_backend"
45 # pw_cpu_exception_armv7m tests do not work as expected in QEMU. It does not
46 # appear the divide-by-zero traps as expected when enabled, which prevents the
47 # module from triggering a recoverable exception. Since pw_cpu_exception is
48 # not fully set up on this target, disable it for now.
49 # pw_cpu_exception_ENTRY_BACKEND =
50 # "$dir_pw_cpu_exception_cortex_m:cpu_exception_armv7m
52 pw_boot_armv7m_LINK_CONFIG_DEFINES = [
53 "PW_BOOT_FLASH_BEGIN=0x00000200",
54 "PW_BOOT_FLASH_SIZE=255K",
55 "PW_BOOT_HEAP_SIZE=0",
56 "PW_BOOT_MIN_STACK_SIZE=1K",
57 "PW_BOOT_RAM_BEGIN=0x20000000",
58 "PW_BOOT_RAM_SIZE=64K",
59 "PW_BOOT_VECTOR_TABLE_BEGIN=0x00000000",
60 "PW_BOOT_VECTOR_TABLE_SIZE=512",
67 _gcc_target_default_configs = [
68 "$dir_pw_build:extra_strict_warnings",
69 "$dir_pw_toolchain/arm_gcc:enable_float_printf",
72 _clang_target_default_configs = [
73 "$dir_pw_build:extra_strict_warnings",
74 "$dir_pw_toolchain/arm_clang:enable_float_printf",
77 pw_target_toolchain_lm3s6965evb_qemu = {
84 name = "lm3s6965evb_qemu_gcc_debug"
85 _toolchain_base = pw_toolchain_arm_gcc.cortex_m3_debug
86 forward_variables_from(_toolchain_base, "*", _excluded_members)
88 forward_variables_from(_toolchain_base.defaults, "*")
89 forward_variables_from(_target_config, "*")
90 default_configs += _gcc_target_default_configs
95 name = "lm3s6965evb_qemu_gcc_speed_optimized"
96 _toolchain_base = pw_toolchain_arm_gcc.cortex_m3_speed_optimized
97 forward_variables_from(_toolchain_base, "*", _excluded_members)
99 forward_variables_from(_toolchain_base.defaults, "*")
100 forward_variables_from(_target_config, "*")
101 default_configs += _gcc_target_default_configs
106 name = "lm3s6965evb_qemu_gcc_size_optimized"
107 _toolchain_base = pw_toolchain_arm_gcc.cortex_m3_size_optimized
108 forward_variables_from(_toolchain_base, "*", _excluded_members)
110 forward_variables_from(_toolchain_base.defaults, "*")
111 forward_variables_from(_target_config, "*")
112 default_configs += _gcc_target_default_configs
117 name = "lm3s6965evb_qemu_clang_debug"
118 _toolchain_base = pw_toolchain_arm_clang.cortex_m3_debug
119 forward_variables_from(_toolchain_base, "*", _excluded_members)
121 forward_variables_from(_toolchain_base.defaults, "*")
122 forward_variables_from(_target_config, "*")
123 default_configs += _clang_target_default_configs
127 speed_optimized_clang = {
128 name = "lm3s6965evb_qemu_clang_speed_optimized"
129 _toolchain_base = pw_toolchain_arm_clang.cortex_m3_speed_optimized
130 forward_variables_from(_toolchain_base, "*", _excluded_members)
132 forward_variables_from(_toolchain_base.defaults, "*")
133 forward_variables_from(_target_config, "*")
134 default_configs += _clang_target_default_configs
138 size_optimized_clang = {
139 name = "lm3s6965evb_qemu_clang_size_optimized"
140 _toolchain_base = pw_toolchain_arm_clang.cortex_m3_size_optimized
141 forward_variables_from(_toolchain_base, "*", _excluded_members)
143 forward_variables_from(_toolchain_base.defaults, "*")
144 forward_variables_from(_target_config, "*")
145 default_configs += _clang_target_default_configs
150 # This list just contains the members of the above scope for convenience to make
151 # it trivial to generate all the toolchains in this file via a
152 # `generate_toolchains` target.
153 pw_target_toolchain_lm3s6965evb_qemu_list = [
154 pw_target_toolchain_lm3s6965evb_qemu.debug,
155 pw_target_toolchain_lm3s6965evb_qemu.speed_optimized,
156 pw_target_toolchain_lm3s6965evb_qemu.size_optimized,
157 pw_target_toolchain_lm3s6965evb_qemu.debug_clang,
158 pw_target_toolchain_lm3s6965evb_qemu.speed_optimized_clang,
159 pw_target_toolchain_lm3s6965evb_qemu.size_optimized_clang,