[protobuf] Make proto_library gn configs path independent
For V8 to switch to Chrome's protobuf also in V8's stand-alone
checkout, we need to store protobof under a different path than in
Chrome (because of crbug.com/338008085).
To make the gn configs work also under another location, this change
removes hard-coded references to the location of protobuf within
protobuf and instead computes them dynamically when the gn script
is included.
Bug: 337736622
Change-Id: Id466b71977f22f060375839ee25b140c3670f576
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5508496
Reviewed-by: Tommy Nyquist <nyquist@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Peter Boström <pbos@chromium.org>
Reviewed-by: Leonard Grey <lgrey@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1295963}
diff --git a/third_party/protobuf/proto_library.gni b/third_party/protobuf/proto_library.gni
index 9136904..f43ac07 100644
--- a/third_party/protobuf/proto_library.gni
+++ b/third_party/protobuf/proto_library.gni
@@ -157,7 +157,14 @@
_host_executable_suffix = ""
}
-_protoc_label = "//third_party/protobuf:protoc($host_toolchain)"
+# TODO(https://crbug.com/337736622): V8 shares this dependency and stores
+# it in a different location. Hence, all references to this folder should
+# use this variable instead of hard-coding //third_party/protobuf.
+# This can be switched back to //third_party/protobuf in M129, or earlier in
+# case crbug.com/338008085 is resolved.
+_this_dir = get_path_info(".", "abspath")
+
+_protoc_label = "$_this_dir:protoc($host_toolchain)"
_protoc_path = get_label_info(_protoc_label, "root_out_dir") + "/protoc" +
_host_executable_suffix
_protoc_gen_js_label =
@@ -529,7 +536,7 @@
sources = protogens_js
- deps = [ "//third_party/protobuf:js_proto" ]
+ deps = [ "$_this_dir:js_proto" ]
extra_deps = [ ":$action_name" ]
}
@@ -563,8 +570,8 @@
}
public_configs = [
- "//third_party/protobuf:using_proto",
- "//third_party/protobuf:allow_deprecated_proto_fields",
+ "$_this_dir:using_proto",
+ "$_this_dir:allow_deprecated_proto_fields",
]
public_deps = []
@@ -592,9 +599,9 @@
if (generate_cc) {
if (defined(invoker.use_protobuf_full) &&
invoker.use_protobuf_full == true) {
- public_deps += [ "//third_party/protobuf:protobuf_full" ]
+ public_deps += [ "$_this_dir:protobuf_full" ]
} else {
- public_deps += [ "//third_party/protobuf:protobuf_lite" ]
+ public_deps += [ "$_this_dir:protobuf_lite" ]
}
if (is_win) {
@@ -627,7 +634,7 @@
data = protogens_py
deps = [
":$action_name",
- "//third_party/protobuf:py_proto_runtime",
+ "$_this_dir:py_proto_runtime",
]
}
}