Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 1 | # Copyright 2020 The Pigweed Authors |
| 2 | # |
| 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 |
| 5 | # the License at |
| 6 | # |
| 7 | # https://www.apache.org/licenses/LICENSE-2.0 |
| 8 | # |
| 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 |
| 13 | # the License. |
| 14 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 15 | import("//build_overrides/pigweed.gni") |
| 16 | |
Armando Montanez | ccc3ee1 | 2020-06-11 16:36:11 -0700 | [diff] [blame] | 17 | import("$dir_pw_protobuf_compiler/proto.gni") |
Alexei Frolov | dd6fa5c | 2020-08-11 10:04:01 -0700 | [diff] [blame] | 18 | import("$dir_pw_third_party/nanopb/nanopb.gni") |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 19 | import("$dir_pw_toolchain/host_clang/toolchains.gni") |
| 20 | import("$dir_pw_toolchain/host_gcc/toolchains.gni") |
Wyatt Hepler | d49f8fe | 2020-10-15 10:13:47 -0700 | [diff] [blame] | 21 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 22 | _host_common = { |
| 23 | # Use logging-based test output on host. |
| 24 | pw_unit_test_MAIN = "$dir_pw_unit_test:logging_main" |
| 25 | |
| 26 | # Configure backend for assert facade. |
| 27 | pw_assert_BACKEND = "$dir_pw_assert_basic" |
| 28 | |
| 29 | # Configure backend for logging facade. |
| 30 | pw_log_BACKEND = "$dir_pw_log_basic" |
| 31 | |
Ewout van Bekkum | 5890193 | 2020-11-09 12:46:52 -0800 | [diff] [blame] | 32 | # Configure backends for pw_sync's facades. |
| 33 | pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_stl:spin_lock_backend" |
| 34 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 35 | # Configure backend for pw_sys_io facade. |
| 36 | pw_sys_io_BACKEND = "$dir_pw_sys_io_stdio" |
Armando Montanez | ccc3ee1 | 2020-06-11 16:36:11 -0700 | [diff] [blame] | 37 | |
Robert Oliver | 21dcf27 | 2020-05-12 15:41:52 -0400 | [diff] [blame] | 38 | # Configure backend for trace facade. |
| 39 | pw_trace_BACKEND = "$dir_pw_trace_tokenized" |
| 40 | |
Robert Oliver | 6d05de1 | 2020-07-13 15:10:42 -0400 | [diff] [blame] | 41 | # Tokenizer trace time. |
| 42 | pw_trace_tokenizer_time = "$dir_pw_trace_tokenized:host_trace_time" |
Robert Oliver | 21dcf27 | 2020-05-12 15:41:52 -0400 | [diff] [blame] | 43 | |
Michael Spang | 6a84595 | 2020-08-13 19:04:19 -0400 | [diff] [blame] | 44 | # Specify builtin GN variables. |
| 45 | current_os = host_os |
| 46 | current_cpu = host_cpu |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 47 | } |
| 48 | |
| 49 | # Linux-specific target configuration. |
| 50 | _linux_config = { |
| 51 | pw_bloat_BLOATY_CONFIG = get_path_info("linux.bloaty", "abspath") |
| 52 | pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test", "abspath") |
| 53 | } |
| 54 | |
| 55 | # macOS-specific target configuration. |
| 56 | _mac_config = { |
| 57 | pw_bloat_BLOATY_CONFIG = get_path_info("macos.bloaty", "abspath") |
| 58 | pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test", "abspath") |
| 59 | } |
| 60 | |
| 61 | # Windows-specific target configuration. |
| 62 | _win_config = { |
| 63 | # This is here as bloaty_config_file cannot be an empty string or GN fails. |
| 64 | # TODO(frolv): Add this file and enable size reports on Windows. |
| 65 | pw_bloat_BLOATY_CONFIG = get_path_info("windows.bloaty", "abspath") |
| 66 | pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test.bat", "abspath") |
| 67 | } |
| 68 | |
| 69 | _os_specific_config = { |
| 70 | if (host_os == "linux") { |
| 71 | forward_variables_from(_linux_config, "*") |
| 72 | } else if (host_os == "mac") { |
| 73 | forward_variables_from(_mac_config, "*") |
| 74 | } else if (host_os == "win") { |
| 75 | forward_variables_from(_win_config, "*") |
| 76 | } |
| 77 | } |
| 78 | |
Ewout van Bekkum | fa1fc66 | 2020-10-16 16:11:13 -0700 | [diff] [blame] | 79 | _target_default_configs = [ "$dir_pw_build:extra_strict_warnings" ] |
| 80 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 81 | pw_target_toolchain_host = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 82 | _excluded_members = [ |
| 83 | "defaults", |
| 84 | "name", |
| 85 | ] |
| 86 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 87 | clang_debug = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 88 | name = "host_clang_debug" |
| 89 | _toolchain_base = pw_toolchain_host_clang.debug |
| 90 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 91 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 92 | forward_variables_from(_toolchain_base.defaults, "*") |
| 93 | forward_variables_from(_host_common, "*") |
| 94 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | fa1fc66 | 2020-10-16 16:11:13 -0700 | [diff] [blame] | 95 | default_configs += _target_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 96 | } |
| 97 | } |
| 98 | |
| 99 | clang_speed_optimized = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 100 | name = "host_clang_speed_optimized" |
| 101 | _toolchain_base = pw_toolchain_host_clang.speed_optimized |
| 102 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 103 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 104 | forward_variables_from(_toolchain_base.defaults, "*") |
| 105 | forward_variables_from(_host_common, "*") |
| 106 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | fa1fc66 | 2020-10-16 16:11:13 -0700 | [diff] [blame] | 107 | default_configs += _target_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 108 | } |
| 109 | } |
| 110 | |
| 111 | clang_size_optimized = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 112 | name = "host_clang_size_optimized" |
| 113 | _toolchain_base = pw_toolchain_host_clang.size_optimized |
| 114 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 115 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 116 | forward_variables_from(_toolchain_base.defaults, "*") |
| 117 | forward_variables_from(_host_common, "*") |
| 118 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | fa1fc66 | 2020-10-16 16:11:13 -0700 | [diff] [blame] | 119 | default_configs += _target_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 120 | } |
| 121 | } |
| 122 | |
| 123 | gcc_debug = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 124 | name = "host_gcc_debug" |
| 125 | _toolchain_base = pw_toolchain_host_gcc.debug |
| 126 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 127 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 128 | forward_variables_from(_toolchain_base.defaults, "*") |
| 129 | forward_variables_from(_host_common, "*") |
| 130 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | fa1fc66 | 2020-10-16 16:11:13 -0700 | [diff] [blame] | 131 | default_configs += _target_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 132 | } |
| 133 | } |
| 134 | |
| 135 | gcc_speed_optimized = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 136 | name = "host_gcc_speed_optimized" |
| 137 | _toolchain_base = pw_toolchain_host_gcc.speed_optimized |
| 138 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 139 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 140 | forward_variables_from(_toolchain_base.defaults, "*") |
| 141 | forward_variables_from(_host_common, "*") |
| 142 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | fa1fc66 | 2020-10-16 16:11:13 -0700 | [diff] [blame] | 143 | default_configs += _target_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 144 | } |
| 145 | } |
| 146 | |
| 147 | gcc_size_optimized = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 148 | name = "host_gcc_size_optimized" |
| 149 | _toolchain_base = pw_toolchain_host_gcc.size_optimized |
| 150 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 151 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 152 | forward_variables_from(_toolchain_base.defaults, "*") |
| 153 | forward_variables_from(_host_common, "*") |
| 154 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | fa1fc66 | 2020-10-16 16:11:13 -0700 | [diff] [blame] | 155 | default_configs += _target_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 156 | } |
| 157 | } |
| 158 | } |
| 159 | |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 160 | # This list just contains the members of the above scope for convenience to make |
| 161 | # it trivial to generate all the toolchains in this file via a |
| 162 | # `generate_toolchains` target. |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 163 | pw_target_toolchain_host_list = [ |
| 164 | pw_target_toolchain_host.clang_debug, |
| 165 | pw_target_toolchain_host.clang_speed_optimized, |
| 166 | pw_target_toolchain_host.clang_size_optimized, |
| 167 | pw_target_toolchain_host.gcc_debug, |
| 168 | pw_target_toolchain_host.gcc_speed_optimized, |
| 169 | pw_target_toolchain_host.gcc_size_optimized, |
| 170 | ] |