blob: 768d50239a8d8b4ec71fcd6028a103d86d6d7aa9 [file] [log] [blame]
Armando Montanez164624f2020-06-10 15:00:29 -07001# 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 Montanez164624f2020-06-10 15:00:29 -070015import("//build_overrides/pigweed.gni")
16
Wyatt Heplerae93f422020-12-14 11:46:19 -080017import("$dir_pw_chrono/backend.gni")
Armando Montanezccc3ee12020-06-11 16:36:11 -070018import("$dir_pw_protobuf_compiler/proto.gni")
Wyatt Heplerae93f422020-12-14 11:46:19 -080019import("$dir_pw_rpc/system_server/backend.gni")
20import("$dir_pw_sync/backend.gni")
Wyatt Heplercb9a8922020-12-16 10:19:41 -080021import("$dir_pw_sys_io/backend.gni")
Armando Montanez2c042f92021-12-15 14:55:36 -080022import("$dir_pw_system/backend.gni")
Alexei Frolovdd6fa5c2020-08-11 10:04:01 -070023import("$dir_pw_third_party/nanopb/nanopb.gni")
Ewout van Bekkume3b56032020-12-22 12:00:18 -080024import("$dir_pw_thread/backend.gni")
Armando Montanez164624f2020-06-10 15:00:29 -070025import("$dir_pw_toolchain/host_clang/toolchains.gni")
26import("$dir_pw_toolchain/host_gcc/toolchains.gni")
Armando Montanez8104e8f2021-03-06 15:09:52 -080027import("$dir_pw_trace/backend.gni")
28import("$dir_pw_trace_tokenized/config.gni")
Wyatt Heplerd49f8fe2020-10-15 10:13:47 -070029
Armando Montanez164624f2020-06-10 15:00:29 -070030_host_common = {
31 # Use logging-based test output on host.
32 pw_unit_test_MAIN = "$dir_pw_unit_test:logging_main"
33
34 # Configure backend for assert facade.
35 pw_assert_BACKEND = "$dir_pw_assert_basic"
36
37 # Configure backend for logging facade.
38 pw_log_BACKEND = "$dir_pw_log_basic"
39
Ewout van Bekkum58901932020-11-09 12:46:52 -080040 # Configure backends for pw_sync's facades.
Ewout van Bekkumda2a62d2021-03-12 11:34:47 -080041 pw_sync_INTERRUPT_SPIN_LOCK_BACKEND = "$dir_pw_sync_stl:interrupt_spin_lock"
Anthony DiGirolamocce560d2021-04-29 19:02:51 -070042 pw_sync_BINARY_SEMAPHORE_BACKEND = "$dir_pw_sync_stl:binary_semaphore_backend"
43 pw_sync_COUNTING_SEMAPHORE_BACKEND =
44 "$dir_pw_sync_stl:counting_semaphore_backend"
45 pw_sync_MUTEX_BACKEND = "$dir_pw_sync_stl:mutex_backend"
46 pw_sync_TIMED_MUTEX_BACKEND = "$dir_pw_sync_stl:timed_mutex_backend"
Ewout van Bekkumf0106062021-05-06 14:08:33 -070047 pw_sync_THREAD_NOTIFICATION_BACKEND =
48 "$dir_pw_sync:binary_semaphore_thread_notification_backend"
49 pw_sync_TIMED_THREAD_NOTIFICATION_BACKEND =
50 "$dir_pw_sync:binary_semaphore_timed_thread_notification_backend"
Ewout van Bekkum58901932020-11-09 12:46:52 -080051
Armando Montanez164624f2020-06-10 15:00:29 -070052 # Configure backend for pw_sys_io facade.
53 pw_sys_io_BACKEND = "$dir_pw_sys_io_stdio"
Armando Montanezccc3ee12020-06-11 16:36:11 -070054
Jiaming Wang35b4ea32020-10-06 15:23:48 -070055 # Configure backend for pw_rpc_system_server.
Alexei Froloveb94e962020-12-29 16:15:40 -080056 pw_rpc_system_server_BACKEND = "$dir_pigweed/targets/host:system_rpc_server"
Wyatt Heplerfb4453f2021-11-10 08:56:17 -080057 pw_rpc_CONFIG = "$dir_pw_rpc:use_global_mutex"
Jiaming Wang35b4ea32020-10-06 15:23:48 -070058
Robert Oliver21dcf272020-05-12 15:41:52 -040059 # Configure backend for trace facade.
60 pw_trace_BACKEND = "$dir_pw_trace_tokenized"
61
Robert Oliver6d05de12020-07-13 15:10:42 -040062 # Tokenizer trace time.
63 pw_trace_tokenizer_time = "$dir_pw_trace_tokenized:host_trace_time"
Robert Oliver21dcf272020-05-12 15:41:52 -040064
Ewout van Bekkum21404842021-06-08 11:06:17 -070065 # Configure backend for pw_chrono's facades.
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070066 pw_chrono_SYSTEM_CLOCK_BACKEND = "$dir_pw_chrono_stl:system_clock"
Ewout van Bekkum21404842021-06-08 11:06:17 -070067 pw_chrono_SYSTEM_TIMER_BACKEND = "$dir_pw_chrono_stl:system_timer"
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070068
Anthony DiGirolamocce560d2021-04-29 19:02:51 -070069 # Configure backends for pw_thread's facades.
70 pw_thread_ID_BACKEND = "$dir_pw_thread_stl:id"
71 pw_thread_YIELD_BACKEND = "$dir_pw_thread_stl:yield"
Ewout van Bekkum9e29fbb2021-07-13 14:06:07 -070072 pw_thread_SLEEP_BACKEND = "$dir_pw_thread_stl:sleep"
Anthony DiGirolamocce560d2021-04-29 19:02:51 -070073 pw_thread_THREAD_BACKEND = "$dir_pw_thread_stl:thread"
74
Armando Montanez2c042f92021-12-15 14:55:36 -080075 pw_system_BACKEND = "$dir_pw_system:stl_target_hooks"
76
Wyatt Hepler8bd4fb02021-05-03 15:30:58 -070077 pw_build_LINK_DEPS = [] # Explicit list overwrite required by GN
Ewout van Bekkumeac94402021-05-07 16:58:42 -070078 pw_build_LINK_DEPS = [
79 "$dir_pw_assert:impl",
80 "$dir_pw_log:impl",
81 ]
Wyatt Hepler8bd4fb02021-05-03 15:30:58 -070082
Michael Spang6a845952020-08-13 19:04:19 -040083 # Specify builtin GN variables.
84 current_os = host_os
85 current_cpu = host_cpu
Armando Montanez164624f2020-06-10 15:00:29 -070086}
87
88# Linux-specific target configuration.
89_linux_config = {
90 pw_bloat_BLOATY_CONFIG = get_path_info("linux.bloaty", "abspath")
91 pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test", "abspath")
92}
93
94# macOS-specific target configuration.
95_mac_config = {
96 pw_bloat_BLOATY_CONFIG = get_path_info("macos.bloaty", "abspath")
97 pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test", "abspath")
98}
99
100# Windows-specific target configuration.
101_win_config = {
102 # This is here as bloaty_config_file cannot be an empty string or GN fails.
103 # TODO(frolv): Add this file and enable size reports on Windows.
104 pw_bloat_BLOATY_CONFIG = get_path_info("windows.bloaty", "abspath")
105 pw_unit_test_AUTOMATIC_RUNNER = get_path_info("run_test.bat", "abspath")
106}
107
108_os_specific_config = {
109 if (host_os == "linux") {
110 forward_variables_from(_linux_config, "*")
111 } else if (host_os == "mac") {
112 forward_variables_from(_mac_config, "*")
113 } else if (host_os == "win") {
114 forward_variables_from(_win_config, "*")
115 }
116}
117
Ewout van Bekkumcc9ef832021-04-08 08:51:16 -0700118_clang_default_configs = [
119 "$dir_pw_build:extra_strict_warnings",
120 "$dir_pw_build:clang_thread_safety_warnings",
121]
Wyatt Heplera77e5e72021-04-09 17:38:39 -0700122_gcc_default_configs = [
123 "$dir_pw_build:extra_strict_warnings",
124 "$dir_pw_toolchain/host_gcc:threading_support",
125]
Ewout van Bekkumfa1fc662020-10-16 16:11:13 -0700126
Armando Montanez164624f2020-06-10 15:00:29 -0700127pw_target_toolchain_host = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700128 _excluded_members = [
129 "defaults",
130 "name",
131 ]
132
Armando Montanez164624f2020-06-10 15:00:29 -0700133 clang_debug = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700134 name = "host_clang_debug"
135 _toolchain_base = pw_toolchain_host_clang.debug
136 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700137 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700138 forward_variables_from(_toolchain_base.defaults, "*")
139 forward_variables_from(_host_common, "*")
140 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumcc9ef832021-04-08 08:51:16 -0700141 default_configs += _clang_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700142 }
143 }
144
145 clang_speed_optimized = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700146 name = "host_clang_speed_optimized"
147 _toolchain_base = pw_toolchain_host_clang.speed_optimized
148 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700149 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700150 forward_variables_from(_toolchain_base.defaults, "*")
151 forward_variables_from(_host_common, "*")
152 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumcc9ef832021-04-08 08:51:16 -0700153 default_configs += _clang_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700154 }
155 }
156
157 clang_size_optimized = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700158 name = "host_clang_size_optimized"
159 _toolchain_base = pw_toolchain_host_clang.size_optimized
160 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700161 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700162 forward_variables_from(_toolchain_base.defaults, "*")
163 forward_variables_from(_host_common, "*")
164 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumcc9ef832021-04-08 08:51:16 -0700165 default_configs += _clang_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700166 }
167 }
168
Ali Zhang58765582021-01-29 12:04:06 -0800169 clang_fuzz = {
170 name = "host_clang_fuzz"
171 _toolchain_base = pw_toolchain_host_clang.fuzz
172 forward_variables_from(_toolchain_base, "*", _excluded_members)
173 defaults = {
174 forward_variables_from(_toolchain_base.defaults, "*")
175 forward_variables_from(_host_common, "*")
176 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumcc9ef832021-04-08 08:51:16 -0700177 default_configs += _clang_default_configs
Ali Zhang58765582021-01-29 12:04:06 -0800178 }
179 }
180
Dmitry Yatsushkevichf3b9d0d2021-10-20 13:49:36 -0700181 clang_asan = {
182 name = "host_clang_asan"
183 _toolchain_base = pw_toolchain_host_clang.asan
184 forward_variables_from(_toolchain_base, "*", _excluded_members)
185 defaults = {
186 forward_variables_from(_toolchain_base.defaults, "*")
187 forward_variables_from(_host_common, "*")
188 forward_variables_from(_os_specific_config, "*")
189 default_configs += _clang_default_configs
190 }
191 }
192
193 clang_ubsan = {
194 name = "host_clang_ubsan"
195 _toolchain_base = pw_toolchain_host_clang.ubsan
196 forward_variables_from(_toolchain_base, "*", _excluded_members)
197 defaults = {
198 forward_variables_from(_toolchain_base.defaults, "*")
199 forward_variables_from(_host_common, "*")
200 forward_variables_from(_os_specific_config, "*")
201 default_configs += _clang_default_configs
202 }
203 }
204
Ted Pudlik4c8206b2021-11-04 22:26:31 +0000205 clang_ubsan_heuristic = {
206 name = "host_clang_ubsan_heuristic"
207 _toolchain_base = pw_toolchain_host_clang.ubsan_heuristic
208 forward_variables_from(_toolchain_base, "*", _excluded_members)
209 defaults = {
210 forward_variables_from(_toolchain_base.defaults, "*")
211 forward_variables_from(_host_common, "*")
212 forward_variables_from(_os_specific_config, "*")
213 default_configs += _clang_default_configs
214 }
215 }
216
Dmitry Yatsushkevichf3b9d0d2021-10-20 13:49:36 -0700217 clang_msan = {
218 name = "host_clang_msan"
219 _toolchain_base = pw_toolchain_host_clang.msan
220 forward_variables_from(_toolchain_base, "*", _excluded_members)
221 defaults = {
222 forward_variables_from(_toolchain_base.defaults, "*")
223 forward_variables_from(_host_common, "*")
224 forward_variables_from(_os_specific_config, "*")
225 default_configs += _clang_default_configs
226 }
227 }
228
229 clang_tsan = {
230 name = "host_clang_tsan"
231 _toolchain_base = pw_toolchain_host_clang.tsan
232 forward_variables_from(_toolchain_base, "*", _excluded_members)
233 defaults = {
234 forward_variables_from(_toolchain_base.defaults, "*")
235 forward_variables_from(_host_common, "*")
236 forward_variables_from(_os_specific_config, "*")
237 default_configs += _clang_default_configs
238 }
239 }
240
Armando Montanez164624f2020-06-10 15:00:29 -0700241 gcc_debug = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700242 name = "host_gcc_debug"
243 _toolchain_base = pw_toolchain_host_gcc.debug
244 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700245 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700246 forward_variables_from(_toolchain_base.defaults, "*")
247 forward_variables_from(_host_common, "*")
248 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumcc9ef832021-04-08 08:51:16 -0700249 default_configs += _gcc_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700250 }
251 }
252
253 gcc_speed_optimized = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700254 name = "host_gcc_speed_optimized"
255 _toolchain_base = pw_toolchain_host_gcc.speed_optimized
256 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700257 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700258 forward_variables_from(_toolchain_base.defaults, "*")
259 forward_variables_from(_host_common, "*")
260 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumcc9ef832021-04-08 08:51:16 -0700261 default_configs += _gcc_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700262 }
263 }
264
265 gcc_size_optimized = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700266 name = "host_gcc_size_optimized"
267 _toolchain_base = pw_toolchain_host_gcc.size_optimized
268 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700269 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700270 forward_variables_from(_toolchain_base.defaults, "*")
271 forward_variables_from(_host_common, "*")
272 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumcc9ef832021-04-08 08:51:16 -0700273 default_configs += _gcc_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700274 }
275 }
276}
277
Armando Montanezd9a8a342020-06-11 13:42:03 -0700278# This list just contains the members of the above scope for convenience to make
279# it trivial to generate all the toolchains in this file via a
280# `generate_toolchains` target.
Armando Montanez164624f2020-06-10 15:00:29 -0700281pw_target_toolchain_host_list = [
282 pw_target_toolchain_host.clang_debug,
283 pw_target_toolchain_host.clang_speed_optimized,
284 pw_target_toolchain_host.clang_size_optimized,
Ali Zhang58765582021-01-29 12:04:06 -0800285 pw_target_toolchain_host.clang_fuzz,
Dmitry Yatsushkevichf3b9d0d2021-10-20 13:49:36 -0700286 pw_target_toolchain_host.clang_asan,
287 pw_target_toolchain_host.clang_ubsan,
Ted Pudlik4c8206b2021-11-04 22:26:31 +0000288 pw_target_toolchain_host.clang_ubsan_heuristic,
Dmitry Yatsushkevichf3b9d0d2021-10-20 13:49:36 -0700289 pw_target_toolchain_host.clang_msan,
290 pw_target_toolchain_host.clang_tsan,
Armando Montanez164624f2020-06-10 15:00:29 -0700291 pw_target_toolchain_host.gcc_debug,
292 pw_target_toolchain_host.gcc_speed_optimized,
293 pw_target_toolchain_host.gcc_size_optimized,
294]