Clean up host toolchains
Update the host toolchains to be prefixed with their target name and use
a slightly more compact style to define the toolchain scopes.
Change-Id: Ib0dae237299e74c6c48cd4c35869fd215563a7bf
diff --git a/BUILD.gn b/BUILD.gn
index ae6a832..69ebdc9 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -29,11 +29,11 @@
group("default") {
# Auto select a toolchain based on host.
if (host_os == "linux") {
- _host_target_toolchain = "$dir_pigweed/targets/host:gcc_debug"
+ _host_target_toolchain = "$dir_pigweed/targets/host:host_gcc_debug"
} else if (host_os == "mac") {
- _host_target_toolchain = "$dir_pigweed/targets/host:clang_debug"
+ _host_target_toolchain = "$dir_pigweed/targets/host:host_clang_debug"
} else if (host_os == "win") {
- _host_target_toolchain = "$dir_pigweed/targets/host:gcc_debug"
+ _host_target_toolchain = "$dir_pigweed/targets/host:host_gcc_debug"
} else {
assert(false, "Please define a host config for your system: $host_os")
}
diff --git a/targets/host/target_config.gni b/targets/host/target_config.gni
deleted file mode 100644
index 47a887b..0000000
--- a/targets/host/target_config.gni
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2019 The Pigweed Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may not
-# use this file except in compliance with the License. You may obtain a copy of
-# the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations under
-# the License.
-
-# This is the target config to import when building for host. All this does is
-# import the appropriate target configuration for the current host OS.
-#
-# Due to GN-isms, lowest-precedence target variable definitions must be imported
-# at the deepest point. This causes the following structure:
-#
-# target_system.gni (e.g. Linux)
-# └ host_common.gni
-# └ pw_vars_default.gni
-#
-# This allows host_common to override variables defined in pw_vars_default,
-# and target_system to override defaults in host_common.
-
-# Load target-specific config file for a host desktop system.
-if (host_os == "linux") {
- import("linux.gni")
-} else if (host_os == "mac") {
- import("macos.gni")
-} else if (host_os == "win") {
- import("windows.gni")
-} else {
- assert(false, "Please define a host config for your system: $host_os")
-}
diff --git a/targets/host/target_toolchains.gni b/targets/host/target_toolchains.gni
index 6ea32bb..4a6a233 100644
--- a/targets/host/target_toolchains.gni
+++ b/targets/host/target_toolchains.gni
@@ -62,16 +62,16 @@
}
pw_target_toolchain_host = {
+ _excluded_members = [
+ "defaults",
+ "name",
+ ]
+
clang_debug = {
- name = "clang_debug"
- forward_variables_from(pw_toolchain_host_clang.debug,
- "*",
- [
- "defaults",
- "name",
- ])
+ name = "host_clang_debug"
+ _toolchain_base = pw_toolchain_host_clang.debug
+ forward_variables_from(_toolchain_base, "*", _excluded_members)
defaults = {
- _toolchain_base = pw_toolchain_host_clang.debug
forward_variables_from(_toolchain_base.defaults, "*")
forward_variables_from(_host_common, "*")
forward_variables_from(_os_specific_config, "*")
@@ -79,15 +79,10 @@
}
clang_speed_optimized = {
- name = "clang_speed_optimized"
- forward_variables_from(pw_toolchain_host_clang.speed_optimized,
- "*",
- [
- "defaults",
- "name",
- ])
+ name = "host_clang_speed_optimized"
+ _toolchain_base = pw_toolchain_host_clang.speed_optimized
+ forward_variables_from(_toolchain_base, "*", _excluded_members)
defaults = {
- _toolchain_base = pw_toolchain_host_clang.speed_optimized
forward_variables_from(_toolchain_base.defaults, "*")
forward_variables_from(_host_common, "*")
forward_variables_from(_os_specific_config, "*")
@@ -95,15 +90,10 @@
}
clang_size_optimized = {
- name = "clang_size_optimized"
- forward_variables_from(pw_toolchain_host_clang.size_optimized,
- "*",
- [
- "defaults",
- "name",
- ])
+ name = "host_clang_size_optimized"
+ _toolchain_base = pw_toolchain_host_clang.size_optimized
+ forward_variables_from(_toolchain_base, "*", _excluded_members)
defaults = {
- _toolchain_base = pw_toolchain_host_clang.size_optimized
forward_variables_from(_toolchain_base.defaults, "*")
forward_variables_from(_host_common, "*")
forward_variables_from(_os_specific_config, "*")
@@ -111,15 +101,10 @@
}
gcc_debug = {
- name = "gcc_debug"
- forward_variables_from(pw_toolchain_host_gcc.debug,
- "*",
- [
- "defaults",
- "name",
- ])
+ name = "host_gcc_debug"
+ _toolchain_base = pw_toolchain_host_gcc.debug
+ forward_variables_from(_toolchain_base, "*", _excluded_members)
defaults = {
- _toolchain_base = pw_toolchain_host_gcc.debug
forward_variables_from(_toolchain_base.defaults, "*")
forward_variables_from(_host_common, "*")
forward_variables_from(_os_specific_config, "*")
@@ -127,15 +112,10 @@
}
gcc_speed_optimized = {
- name = "gcc_speed_optimized"
- forward_variables_from(pw_toolchain_host_gcc.speed_optimized,
- "*",
- [
- "defaults",
- "name",
- ])
+ name = "host_gcc_speed_optimized"
+ _toolchain_base = pw_toolchain_host_gcc.speed_optimized
+ forward_variables_from(_toolchain_base, "*", _excluded_members)
defaults = {
- _toolchain_base = pw_toolchain_host_gcc.speed_optimized
forward_variables_from(_toolchain_base.defaults, "*")
forward_variables_from(_host_common, "*")
forward_variables_from(_os_specific_config, "*")
@@ -143,15 +123,10 @@
}
gcc_size_optimized = {
- name = "gcc_size_optimized"
- forward_variables_from(pw_toolchain_host_gcc.size_optimized,
- "*",
- [
- "defaults",
- "name",
- ])
+ name = "host_gcc_size_optimized"
+ _toolchain_base = pw_toolchain_host_gcc.size_optimized
+ forward_variables_from(_toolchain_base, "*", _excluded_members)
defaults = {
- _toolchain_base = pw_toolchain_host_gcc.size_optimized
forward_variables_from(_toolchain_base.defaults, "*")
forward_variables_from(_host_common, "*")
forward_variables_from(_os_specific_config, "*")
@@ -159,6 +134,9 @@
}
}
+# This list just contains the members of the above scope for convenience to make
+# it trivial to generate all the toolchains in this file via a
+# `generate_toolchains` target.
pw_target_toolchain_host_list = [
pw_target_toolchain_host.clang_debug,
pw_target_toolchain_host.clang_speed_optimized,