blob: 73c61c04aebbeebeccf4792276e46610842753a1 [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
Armando Montanezccc3ee12020-06-11 16:36:11 -070017import("$dir_pw_protobuf_compiler/proto.gni")
Alexei Frolovdd6fa5c2020-08-11 10:04:01 -070018import("$dir_pw_third_party/nanopb/nanopb.gni")
Armando Montanez164624f2020-06-10 15:00:29 -070019import("$dir_pw_toolchain/host_clang/toolchains.gni")
20import("$dir_pw_toolchain/host_gcc/toolchains.gni")
Wyatt Heplerd49f8fe2020-10-15 10:13:47 -070021
Armando Montanez164624f2020-06-10 15:00:29 -070022_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 Bekkum58901932020-11-09 12:46:52 -080032 # Configure backends for pw_sync's facades.
33 pw_sync_SPIN_LOCK_BACKEND = "$dir_pw_sync_stl:spin_lock_backend"
34
Armando Montanez164624f2020-06-10 15:00:29 -070035 # Configure backend for pw_sys_io facade.
36 pw_sys_io_BACKEND = "$dir_pw_sys_io_stdio"
Armando Montanezccc3ee12020-06-11 16:36:11 -070037
Robert Oliver21dcf272020-05-12 15:41:52 -040038 # Configure backend for trace facade.
39 pw_trace_BACKEND = "$dir_pw_trace_tokenized"
40
Robert Oliver6d05de12020-07-13 15:10:42 -040041 # Tokenizer trace time.
42 pw_trace_tokenizer_time = "$dir_pw_trace_tokenized:host_trace_time"
Robert Oliver21dcf272020-05-12 15:41:52 -040043
Michael Spang6a845952020-08-13 19:04:19 -040044 # Specify builtin GN variables.
45 current_os = host_os
46 current_cpu = host_cpu
Armando Montanez164624f2020-06-10 15:00:29 -070047}
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 Bekkumfa1fc662020-10-16 16:11:13 -070079_target_default_configs = [ "$dir_pw_build:extra_strict_warnings" ]
80
Armando Montanez164624f2020-06-10 15:00:29 -070081pw_target_toolchain_host = {
Armando Montanezd9a8a342020-06-11 13:42:03 -070082 _excluded_members = [
83 "defaults",
84 "name",
85 ]
86
Armando Montanez164624f2020-06-10 15:00:29 -070087 clang_debug = {
Armando Montanezd9a8a342020-06-11 13:42:03 -070088 name = "host_clang_debug"
89 _toolchain_base = pw_toolchain_host_clang.debug
90 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -070091 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -070092 forward_variables_from(_toolchain_base.defaults, "*")
93 forward_variables_from(_host_common, "*")
94 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumfa1fc662020-10-16 16:11:13 -070095 default_configs += _target_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -070096 }
97 }
98
99 clang_speed_optimized = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700100 name = "host_clang_speed_optimized"
101 _toolchain_base = pw_toolchain_host_clang.speed_optimized
102 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700103 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700104 forward_variables_from(_toolchain_base.defaults, "*")
105 forward_variables_from(_host_common, "*")
106 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumfa1fc662020-10-16 16:11:13 -0700107 default_configs += _target_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700108 }
109 }
110
111 clang_size_optimized = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700112 name = "host_clang_size_optimized"
113 _toolchain_base = pw_toolchain_host_clang.size_optimized
114 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700115 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700116 forward_variables_from(_toolchain_base.defaults, "*")
117 forward_variables_from(_host_common, "*")
118 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumfa1fc662020-10-16 16:11:13 -0700119 default_configs += _target_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700120 }
121 }
122
123 gcc_debug = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700124 name = "host_gcc_debug"
125 _toolchain_base = pw_toolchain_host_gcc.debug
126 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700127 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700128 forward_variables_from(_toolchain_base.defaults, "*")
129 forward_variables_from(_host_common, "*")
130 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumfa1fc662020-10-16 16:11:13 -0700131 default_configs += _target_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700132 }
133 }
134
135 gcc_speed_optimized = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700136 name = "host_gcc_speed_optimized"
137 _toolchain_base = pw_toolchain_host_gcc.speed_optimized
138 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700139 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700140 forward_variables_from(_toolchain_base.defaults, "*")
141 forward_variables_from(_host_common, "*")
142 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumfa1fc662020-10-16 16:11:13 -0700143 default_configs += _target_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700144 }
145 }
146
147 gcc_size_optimized = {
Armando Montanezd9a8a342020-06-11 13:42:03 -0700148 name = "host_gcc_size_optimized"
149 _toolchain_base = pw_toolchain_host_gcc.size_optimized
150 forward_variables_from(_toolchain_base, "*", _excluded_members)
Armando Montanez164624f2020-06-10 15:00:29 -0700151 defaults = {
Armando Montanez164624f2020-06-10 15:00:29 -0700152 forward_variables_from(_toolchain_base.defaults, "*")
153 forward_variables_from(_host_common, "*")
154 forward_variables_from(_os_specific_config, "*")
Ewout van Bekkumfa1fc662020-10-16 16:11:13 -0700155 default_configs += _target_default_configs
Armando Montanez164624f2020-06-10 15:00:29 -0700156 }
157 }
158}
159
Armando Montanezd9a8a342020-06-11 13:42:03 -0700160# 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 Montanez164624f2020-06-10 15:00:29 -0700163pw_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]