From c9d487fe7b99c1651e1ab038caaee9826f7e2f27 Mon Sep 17 00:00:00 2001 From: Roland McGrath <mcgrathr@google.com> Date: Sun, 12 May 2019 00:06:29 +0000 Subject: [PATCH] [build] Allow //zircon/public/lib/foo vs //zircon/public/tool/foo name reuse Subdirectories in different parts of the Zircon tree reusing the same name is not a problem, and neither is //zircon/public/*/NAME reuse. Fix the metadata-based target generation magic to distinguish the category (i.e. subdirectory under //zircon/public/) so that names can be reused across categories. Bug: BLD-472 #done Test: local build with //zircon/public/lib/blobfs export enabled Change-Id: I592e52f524471a006bec2ff5942215ec277705dd --- build/zircon/template.gn | 3 ++- zircon/public/gn/BUILDCONFIG.gn | 3 +++ zircon/public/gn/banjo.gni | 2 ++ zircon/public/gn/fidl.gni | 2 ++ zircon/system/ulib/zircon/BUILD.gn | 2 ++ 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/build/zircon/template.gn b/build/zircon/template.gn index ff4016f4afb..a36cc836c04 100644 --- a/build/zircon/template.gn +++ b/build/zircon/template.gn @@ -9,10 +9,11 @@ import("//build/config/fuchsia/zircon.gni") dir = get_label_info(".", "name") +zircon_public = get_label_info("..", "name") dir_target = false foreach(target, zircon_legacy_targets) { - if (target.target_name == dir) { + if (target.target_name == dir && target._zircon_public == zircon_public) { assert(dir_target == false, "$dir appears twice in Zircon legacy_targets metadata:" + " $dir_target vs $target") diff --git a/zircon/public/gn/BUILDCONFIG.gn b/zircon/public/gn/BUILDCONFIG.gn index a287ce86a8b..710bbdd8e99 100644 --- a/zircon/public/gn/BUILDCONFIG.gn +++ b/zircon/public/gn/BUILDCONFIG.gn @@ -413,6 +413,7 @@ template("library") { legacy_targets = [ { _label = get_label_info(":$_library_name", "label_with_toolchain") + _zircon_public = "lib" forward_variables_from(invoker, [ "testonly" ]) import = "//build/zircon/zircon_library.gni" target_type = "zircon_library" @@ -1458,6 +1459,8 @@ template("host_tool") { legacy_dirs = [ "tool/$target_name" ] legacy_targets = [ { + _label = get_label_info(":$target_name", "label_with_toolchain") + _zircon_public = "tool" import = "//build/zircon/zircon_host_tool.gni" target_type = "zircon_host_tool" target_name = target_name diff --git a/zircon/public/gn/banjo.gni b/zircon/public/gn/banjo.gni index ef0a97d979e..7644cfedd1c 100644 --- a/zircon/public/gn/banjo.gni +++ b/zircon/public/gn/banjo.gni @@ -142,6 +142,8 @@ template("banjo_library") { legacy_dirs = [ "banjo/$banjo_target" ] legacy_targets = [ { + _label = get_label_info(":$target_name", "label_with_toolchain") + _zircon_public = "banjo" import = "//build/banjo/banjo.gni" target_name = banjo_target target_type = target_type diff --git a/zircon/public/gn/fidl.gni b/zircon/public/gn/fidl.gni index e0b26745b44..4dc434489a8 100644 --- a/zircon/public/gn/fidl.gni +++ b/zircon/public/gn/fidl.gni @@ -248,6 +248,8 @@ template("fidl_library") { legacy_dirs = [ "fidl/$fidl_target" ] legacy_targets = [ { + _label = get_label_info(":$target_name", "label_with_toolchain") + _zircon_public = "fidl" import = "//build/fidl/fidl.gni" target_type = "fidl" target_name = fidl_target diff --git a/zircon/system/ulib/zircon/BUILD.gn b/zircon/system/ulib/zircon/BUILD.gn index 79a0cf8c71f..66f7bc58411 100644 --- a/zircon/system/ulib/zircon/BUILD.gn +++ b/zircon/system/ulib/zircon/BUILD.gn @@ -173,6 +173,8 @@ if (toolchain.environment != "user") { legacy_barrier = [] legacy_targets = [ { + _label = get_label_info(":$target_name", "label_with_toolchain") + _zircon_public = "lib" target_name = "zircon" libs = [] libs = [ rebase_path(link_file, root_build_dir) ] -- GitLab