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 | |
Wyatt Hepler | ae93f42 | 2020-12-14 11:46:19 -0800 | [diff] [blame] | 17 | import("$dir_pw_chrono/backend.gni") |
Armando Montanez | ccc3ee1 | 2020-06-11 16:36:11 -0700 | [diff] [blame] | 18 | import("$dir_pw_protobuf_compiler/proto.gni") |
Wyatt Hepler | ae93f42 | 2020-12-14 11:46:19 -0800 | [diff] [blame] | 19 | import("$dir_pw_rpc/system_server/backend.gni") |
| 20 | import("$dir_pw_sync/backend.gni") |
Wyatt Hepler | cb9a892 | 2020-12-16 10:19:41 -0800 | [diff] [blame] | 21 | import("$dir_pw_sys_io/backend.gni") |
Alexei Frolov | dd6fa5c | 2020-08-11 10:04:01 -0700 | [diff] [blame] | 22 | import("$dir_pw_third_party/nanopb/nanopb.gni") |
Ewout van Bekkum | e3b5603 | 2020-12-22 12:00:18 -0800 | [diff] [blame] | 23 | import("$dir_pw_thread/backend.gni") |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 24 | import("$dir_pw_toolchain/host_clang/toolchains.gni") |
| 25 | import("$dir_pw_toolchain/host_gcc/toolchains.gni") |
Armando Montanez | 8104e8f | 2021-03-06 15:09:52 -0800 | [diff] [blame] | 26 | import("$dir_pw_trace/backend.gni") |
| 27 | import("$dir_pw_trace_tokenized/config.gni") |
Wyatt Hepler | d49f8fe | 2020-10-15 10:13:47 -0700 | [diff] [blame] | 28 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 29 | _host_common = { |
| 30 | # Use logging-based test output on host. |
| 31 | pw_unit_test_MAIN = "$dir_pw_unit_test:logging_main" |
| 32 | |
| 33 | # Configure backend for assert facade. |
| 34 | pw_assert_BACKEND = "$dir_pw_assert_basic" |
| 35 | |
| 36 | # Configure backend for logging facade. |
| 37 | pw_log_BACKEND = "$dir_pw_log_basic" |
| 38 | |
Ewout van Bekkum | 5890193 | 2020-11-09 12:46:52 -0800 | [diff] [blame] | 39 | # Configure backends for pw_sync's facades. |
Ewout van Bekkum | da2a62d | 2021-03-12 11:34:47 -0800 | [diff] [blame] | 40 | pw_sync_INTERRUPT_SPIN_LOCK_BACKEND = "$dir_pw_sync_stl:interrupt_spin_lock" |
Anthony DiGirolamo | cce560d | 2021-04-29 19:02:51 -0700 | [diff] [blame] | 41 | pw_sync_BINARY_SEMAPHORE_BACKEND = "$dir_pw_sync_stl:binary_semaphore_backend" |
| 42 | pw_sync_COUNTING_SEMAPHORE_BACKEND = |
| 43 | "$dir_pw_sync_stl:counting_semaphore_backend" |
| 44 | pw_sync_MUTEX_BACKEND = "$dir_pw_sync_stl:mutex_backend" |
| 45 | pw_sync_TIMED_MUTEX_BACKEND = "$dir_pw_sync_stl:timed_mutex_backend" |
Ewout van Bekkum | f010606 | 2021-05-06 14:08:33 -0700 | [diff] [blame] | 46 | pw_sync_THREAD_NOTIFICATION_BACKEND = |
| 47 | "$dir_pw_sync:binary_semaphore_thread_notification_backend" |
| 48 | pw_sync_TIMED_THREAD_NOTIFICATION_BACKEND = |
| 49 | "$dir_pw_sync:binary_semaphore_timed_thread_notification_backend" |
Ewout van Bekkum | 5890193 | 2020-11-09 12:46:52 -0800 | [diff] [blame] | 50 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 51 | # Configure backend for pw_sys_io facade. |
| 52 | pw_sys_io_BACKEND = "$dir_pw_sys_io_stdio" |
Armando Montanez | ccc3ee1 | 2020-06-11 16:36:11 -0700 | [diff] [blame] | 53 | |
Jiaming Wang | 35b4ea3 | 2020-10-06 15:23:48 -0700 | [diff] [blame] | 54 | # Configure backend for pw_rpc_system_server. |
Alexei Frolov | eb94e96 | 2020-12-29 16:15:40 -0800 | [diff] [blame] | 55 | pw_rpc_system_server_BACKEND = "$dir_pigweed/targets/host:system_rpc_server" |
Jiaming Wang | 35b4ea3 | 2020-10-06 15:23:48 -0700 | [diff] [blame] | 56 | |
Robert Oliver | 21dcf27 | 2020-05-12 15:41:52 -0400 | [diff] [blame] | 57 | # Configure backend for trace facade. |
| 58 | pw_trace_BACKEND = "$dir_pw_trace_tokenized" |
| 59 | |
Robert Oliver | 6d05de1 | 2020-07-13 15:10:42 -0400 | [diff] [blame] | 60 | # Tokenizer trace time. |
| 61 | pw_trace_tokenizer_time = "$dir_pw_trace_tokenized:host_trace_time" |
Robert Oliver | 21dcf27 | 2020-05-12 15:41:52 -0400 | [diff] [blame] | 62 | |
Ewout van Bekkum | 2140484 | 2021-06-08 11:06:17 -0700 | [diff] [blame] | 63 | # Configure backend for pw_chrono's facades. |
Ewout van Bekkum | 3c61ae9 | 2020-10-30 15:52:25 -0700 | [diff] [blame] | 64 | pw_chrono_SYSTEM_CLOCK_BACKEND = "$dir_pw_chrono_stl:system_clock" |
Ewout van Bekkum | 2140484 | 2021-06-08 11:06:17 -0700 | [diff] [blame] | 65 | pw_chrono_SYSTEM_TIMER_BACKEND = "$dir_pw_chrono_stl:system_timer" |
Ewout van Bekkum | 3c61ae9 | 2020-10-30 15:52:25 -0700 | [diff] [blame] | 66 | |
Anthony DiGirolamo | cce560d | 2021-04-29 19:02:51 -0700 | [diff] [blame] | 67 | # Configure backends for pw_thread's facades. |
| 68 | pw_thread_ID_BACKEND = "$dir_pw_thread_stl:id" |
| 69 | pw_thread_YIELD_BACKEND = "$dir_pw_thread_stl:yield" |
| 70 | pw_thread_THREAD_BACKEND = "$dir_pw_thread_stl:thread" |
| 71 | |
Wyatt Hepler | 8bd4fb0 | 2021-05-03 15:30:58 -0700 | [diff] [blame] | 72 | pw_build_LINK_DEPS = [] # Explicit list overwrite required by GN |
Ewout van Bekkum | eac9440 | 2021-05-07 16:58:42 -0700 | [diff] [blame] | 73 | pw_build_LINK_DEPS = [ |
| 74 | "$dir_pw_assert:impl", |
| 75 | "$dir_pw_log:impl", |
| 76 | ] |
Wyatt Hepler | 8bd4fb0 | 2021-05-03 15:30:58 -0700 | [diff] [blame] | 77 | |
Michael Spang | 6a84595 | 2020-08-13 19:04:19 -0400 | [diff] [blame] | 78 | # Specify builtin GN variables. |
| 79 | current_os = host_os |
| 80 | current_cpu = host_cpu |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 81 | } |
| 82 | |
| 83 | # Linux-specific target configuration. |
| 84 | _linux_config = { |
| 85 | pw_bloat_BLOATY_CONFIG = get_path_info("linux.bloaty", "abspath") |
| 86 | pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test", "abspath") |
| 87 | } |
| 88 | |
| 89 | # macOS-specific target configuration. |
| 90 | _mac_config = { |
| 91 | pw_bloat_BLOATY_CONFIG = get_path_info("macos.bloaty", "abspath") |
| 92 | pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test", "abspath") |
| 93 | } |
| 94 | |
| 95 | # Windows-specific target configuration. |
| 96 | _win_config = { |
| 97 | # This is here as bloaty_config_file cannot be an empty string or GN fails. |
| 98 | # TODO(frolv): Add this file and enable size reports on Windows. |
| 99 | pw_bloat_BLOATY_CONFIG = get_path_info("windows.bloaty", "abspath") |
| 100 | pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test.bat", "abspath") |
| 101 | } |
| 102 | |
Anthony DiGirolamo | cce560d | 2021-04-29 19:02:51 -0700 | [diff] [blame] | 103 | # TODO(ewout): figure out why MingGW's sleep doesn't work correctly or provide |
| 104 | # a wrapper which sleeps until our contract is met. |
Ewout van Bekkum | 9618d8a | 2020-11-09 12:46:52 -0800 | [diff] [blame] | 105 | _win_incompatible_config = { |
Ewout van Bekkum | e3b5603 | 2020-12-22 12:00:18 -0800 | [diff] [blame] | 106 | pw_thread_SLEEP_BACKEND = "$dir_pw_thread_stl:sleep" |
Ewout van Bekkum | 9618d8a | 2020-11-09 12:46:52 -0800 | [diff] [blame] | 107 | } |
| 108 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 109 | _os_specific_config = { |
| 110 | if (host_os == "linux") { |
| 111 | forward_variables_from(_linux_config, "*") |
Ewout van Bekkum | 9618d8a | 2020-11-09 12:46:52 -0800 | [diff] [blame] | 112 | forward_variables_from(_win_incompatible_config, "*") |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 113 | } else if (host_os == "mac") { |
| 114 | forward_variables_from(_mac_config, "*") |
Ewout van Bekkum | 9618d8a | 2020-11-09 12:46:52 -0800 | [diff] [blame] | 115 | forward_variables_from(_win_incompatible_config, "*") |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 116 | } else if (host_os == "win") { |
| 117 | forward_variables_from(_win_config, "*") |
| 118 | } |
| 119 | } |
| 120 | |
Ewout van Bekkum | cc9ef83 | 2021-04-08 08:51:16 -0700 | [diff] [blame] | 121 | _clang_default_configs = [ |
| 122 | "$dir_pw_build:extra_strict_warnings", |
| 123 | "$dir_pw_build:clang_thread_safety_warnings", |
| 124 | ] |
Wyatt Hepler | a77e5e7 | 2021-04-09 17:38:39 -0700 | [diff] [blame] | 125 | _gcc_default_configs = [ |
| 126 | "$dir_pw_build:extra_strict_warnings", |
| 127 | "$dir_pw_toolchain/host_gcc:threading_support", |
| 128 | ] |
Ewout van Bekkum | fa1fc66 | 2020-10-16 16:11:13 -0700 | [diff] [blame] | 129 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 130 | pw_target_toolchain_host = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 131 | _excluded_members = [ |
| 132 | "defaults", |
| 133 | "name", |
| 134 | ] |
| 135 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 136 | clang_debug = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 137 | name = "host_clang_debug" |
| 138 | _toolchain_base = pw_toolchain_host_clang.debug |
| 139 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 140 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 141 | forward_variables_from(_toolchain_base.defaults, "*") |
| 142 | forward_variables_from(_host_common, "*") |
| 143 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | cc9ef83 | 2021-04-08 08:51:16 -0700 | [diff] [blame] | 144 | default_configs += _clang_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 145 | } |
| 146 | } |
| 147 | |
| 148 | clang_speed_optimized = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 149 | name = "host_clang_speed_optimized" |
| 150 | _toolchain_base = pw_toolchain_host_clang.speed_optimized |
| 151 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 152 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 153 | forward_variables_from(_toolchain_base.defaults, "*") |
| 154 | forward_variables_from(_host_common, "*") |
| 155 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | cc9ef83 | 2021-04-08 08:51:16 -0700 | [diff] [blame] | 156 | default_configs += _clang_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 157 | } |
| 158 | } |
| 159 | |
| 160 | clang_size_optimized = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 161 | name = "host_clang_size_optimized" |
| 162 | _toolchain_base = pw_toolchain_host_clang.size_optimized |
| 163 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 164 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 165 | forward_variables_from(_toolchain_base.defaults, "*") |
| 166 | forward_variables_from(_host_common, "*") |
| 167 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | cc9ef83 | 2021-04-08 08:51:16 -0700 | [diff] [blame] | 168 | default_configs += _clang_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 169 | } |
| 170 | } |
| 171 | |
Ali Zhang | 5876558 | 2021-01-29 12:04:06 -0800 | [diff] [blame] | 172 | clang_fuzz = { |
| 173 | name = "host_clang_fuzz" |
| 174 | _toolchain_base = pw_toolchain_host_clang.fuzz |
| 175 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
| 176 | defaults = { |
| 177 | forward_variables_from(_toolchain_base.defaults, "*") |
| 178 | forward_variables_from(_host_common, "*") |
| 179 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | cc9ef83 | 2021-04-08 08:51:16 -0700 | [diff] [blame] | 180 | default_configs += _clang_default_configs |
Ali Zhang | 5876558 | 2021-01-29 12:04:06 -0800 | [diff] [blame] | 181 | } |
| 182 | } |
| 183 | |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 184 | gcc_debug = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 185 | name = "host_gcc_debug" |
| 186 | _toolchain_base = pw_toolchain_host_gcc.debug |
| 187 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 188 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 189 | forward_variables_from(_toolchain_base.defaults, "*") |
| 190 | forward_variables_from(_host_common, "*") |
| 191 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | cc9ef83 | 2021-04-08 08:51:16 -0700 | [diff] [blame] | 192 | default_configs += _gcc_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 193 | } |
| 194 | } |
| 195 | |
| 196 | gcc_speed_optimized = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 197 | name = "host_gcc_speed_optimized" |
| 198 | _toolchain_base = pw_toolchain_host_gcc.speed_optimized |
| 199 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 200 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 201 | forward_variables_from(_toolchain_base.defaults, "*") |
| 202 | forward_variables_from(_host_common, "*") |
| 203 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | cc9ef83 | 2021-04-08 08:51:16 -0700 | [diff] [blame] | 204 | default_configs += _gcc_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 205 | } |
| 206 | } |
| 207 | |
| 208 | gcc_size_optimized = { |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 209 | name = "host_gcc_size_optimized" |
| 210 | _toolchain_base = pw_toolchain_host_gcc.size_optimized |
| 211 | forward_variables_from(_toolchain_base, "*", _excluded_members) |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 212 | defaults = { |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 213 | forward_variables_from(_toolchain_base.defaults, "*") |
| 214 | forward_variables_from(_host_common, "*") |
| 215 | forward_variables_from(_os_specific_config, "*") |
Ewout van Bekkum | cc9ef83 | 2021-04-08 08:51:16 -0700 | [diff] [blame] | 216 | default_configs += _gcc_default_configs |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 217 | } |
| 218 | } |
| 219 | } |
| 220 | |
Armando Montanez | d9a8a34 | 2020-06-11 13:42:03 -0700 | [diff] [blame] | 221 | # This list just contains the members of the above scope for convenience to make |
| 222 | # it trivial to generate all the toolchains in this file via a |
| 223 | # `generate_toolchains` target. |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 224 | pw_target_toolchain_host_list = [ |
| 225 | pw_target_toolchain_host.clang_debug, |
| 226 | pw_target_toolchain_host.clang_speed_optimized, |
| 227 | pw_target_toolchain_host.clang_size_optimized, |
Ali Zhang | 5876558 | 2021-01-29 12:04:06 -0800 | [diff] [blame] | 228 | pw_target_toolchain_host.clang_fuzz, |
Armando Montanez | 164624f | 2020-06-10 15:00:29 -0700 | [diff] [blame] | 229 | pw_target_toolchain_host.gcc_debug, |
| 230 | pw_target_toolchain_host.gcc_speed_optimized, |
| 231 | pw_target_toolchain_host.gcc_size_optimized, |
| 232 | ] |