0

[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}
This commit is contained in:
Michael Achenbach
2024-05-03 07:12:40 +00:00
committed by Chromium LUCI CQ
parent 4cc51eb385
commit 048301eab0

@ -157,7 +157,14 @@ if (host_os == "win") {
_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 @@ template("proto_library") {
sources = protogens_js
deps = [ "//third_party/protobuf:js_proto" ]
deps = [ "$_this_dir:js_proto" ]
extra_deps = [ ":$action_name" ]
}
@ -563,8 +570,8 @@ template("proto_library") {
}
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 @@ template("proto_library") {
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 @@ template("proto_library") {
data = protogens_py
deps = [
":$action_name",
"//third_party/protobuf:py_proto_runtime",
"$_this_dir:py_proto_runtime",
]
}
}