Define Linux clang target as toolchain
This change configures the Linux clang -Og target as a toolchain with
args. To support this, all Pigweed variables from pw_vars_default are
made into build args, defined within their respective modules.
The Linux clang target/toolchain is the only one that currently works.
Pigweed's other targets will be ported in later changes.
Change-Id: I051e29fde7577e41a3184c37031a4e04936404e1
diff --git a/pw_boot_armv7m/BUILD.gn b/pw_boot_armv7m/BUILD.gn
index 01bbc1d..7857557 100644
--- a/pw_boot_armv7m/BUILD.gn
+++ b/pw_boot_armv7m/BUILD.gn
@@ -19,16 +19,25 @@
import("$dir_pw_build/linker_script.gni")
import("$dir_pw_build/target_types.gni")
import("$dir_pw_docgen/docs.gni")
-if (dir_pw_boot_backend == dir_pw_boot_armv7m) {
+declare_args() {
+ # TODO(frolv): Move this into the pw_boot module.
+ pw_boot_BACKEND = ""
+
+ # Module configuration options for pw_boot_armv7m.
+ pw_boot_armv7m_CONFIG = {
+ # C Preprocessor defines used for linker script configuration.
+ defines = []
+ }
+}
+
+if (pw_boot_BACKEND == dir_pw_boot_armv7m) {
config("default_config") {
include_dirs = [ "public" ]
}
pw_linker_script("armv7m_linker_script") {
- # pw_boot_armv7m_config is a scope provided by the target.
- assert(defined(pw_boot_armv7m_config),
- "pw_boot_armv7m depends on pw_boot_armv7m_config being defined!")
- defines = pw_boot_armv7m_config.defines
+ # pw_boot_armv7m_CONFIG is a scope provided by the target.
+ defines = pw_boot_armv7m_CONFIG.defines
linker_script = "basic_armv7m.ld"
}