pw_build: Dependency fixes
- Handle public_deps as well as deps in pw_mirror_tree.
- Have the Python .install target avoid unnecessary reinstalls, but
have dependents re-run when any files change. This is done by
splitting the installs into a separate target and having .install
depend on it and the target that represents the source files.
Change-Id: Ie41de8cfdb84fff691e183a346465099d98c609f
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/39202
Commit-Queue: Wyatt Hepler <hepler@google.com>
Reviewed-by: Armando Montanez <amontanez@google.com>
diff --git a/pw_build/mirror_tree.gni b/pw_build/mirror_tree.gni
index dc27b66..5e78de8 100644
--- a/pw_build/mirror_tree.gni
+++ b/pw_build/mirror_tree.gni
@@ -57,15 +57,20 @@
_deps += invoker.deps
}
- if (defined(invoker.path_data_keys)) {
- assert(_deps != [],
- "'path_data_keys' requires at least one dependency in 'deps'")
+ _public_deps = []
+ if (defined(invoker.public_deps)) {
+ _public_deps += invoker.public_deps
+ }
+ if (defined(invoker.path_data_keys)) {
generated_file("$target_name._path_list") {
data_keys = invoker.path_data_keys
rebase = root_build_dir
- deps = _deps
outputs = [ "$target_gen_dir/$target_name.txt" ]
+ deps = _deps + _public_deps
+
+ assert(deps != [],
+ "'path_data_keys' requires at least one dependency in 'deps'")
}
_deps += [ ":$target_name._path_list" ]
@@ -93,13 +98,15 @@
}
deps = _deps
+ public_deps = _public_deps
_ignore_args = [
"script",
"args",
"outputs",
- "deps",
"directory",
+ "deps",
+ "public_deps",
]
forward_variables_from(invoker, "*", _ignore_args)
}