gn2bp: Split genrule for proto to source and header
genrule needs to generate .h files or .c files so that other modules can
specify the genrule from the srcs, headers.
Test: ./update_result.sh
Change-Id: If3bd3301b1ae3d2b02f867ea20a80110c5d44349
diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp
index 92ae832..f4b991c 100644
--- a/tools/gn2bp/Android.bp.swp
+++ b/tools/gn2bp/Android.bp.swp
@@ -1969,6 +1969,12 @@
static_libs: [
"cronet_aml_third_party_protobuf_protobuf_full",
],
+ generated_headers: [
+ "cronet_aml_net_cert_root_store_proto_full_gen_headers",
+ ],
+ export_generated_headers: [
+ "cronet_aml_net_cert_root_store_proto_full_gen_headers",
+ ],
defaults: [
"cronet_aml_defaults",
],
@@ -2027,8 +2033,32 @@
"--py-out-dir " +
"$(genDir)/clang_x64/pyproto/net/cert/root_store_proto_full/",
out: [
- "clang_x64/pyproto/net/cert/root_store_proto_full/root_store_pb2.py",
"net/cert/root_store_proto_full/root_store.pb.cc",
+ ],
+ tool_files: [
+ "tools/protoc_wrapper/protoc_wrapper.py",
+ ],
+}
+
+// GN: //net/cert:root_store_proto_full_gen
+genrule {
+ name: "cronet_aml_net_cert_root_store_proto_full_gen_headers",
+ srcs: [
+ "net/cert/root_store.proto",
+ ],
+ tools: [
+ "aprotoc",
+ ],
+ cmd: "$(location tools/protoc_wrapper/protoc_wrapper.py) root_store.proto " +
+ "--protoc " +
+ "$(location aprotoc) " +
+ "--proto-in-dir " +
+ "`dirname $(location net/cert/root_store.proto)` " +
+ "--cc-out-dir " +
+ "clang_x64/gen/net/cert/root_store_proto_full/ " +
+ "--py-out-dir " +
+ "$(genDir)/clang_x64/pyproto/net/cert/root_store_proto_full/",
+ out: [
"net/cert/root_store_proto_full/root_store.pb.h",
],
tool_files: [
@@ -2183,6 +2213,12 @@
static_libs: [
"cronet_aml_third_party_protobuf_protobuf_lite",
],
+ generated_headers: [
+ "cronet_aml_net_isolation_info_proto_gen_headers",
+ ],
+ export_generated_headers: [
+ "cronet_aml_net_isolation_info_proto_gen_headers",
+ ],
defaults: [
"cronet_aml_defaults",
],
@@ -2238,8 +2274,32 @@
"$(genDir)/pyproto/net/base",
out: [
"net/base/isolation_info.pb.cc",
+ ],
+ tool_files: [
+ "tools/protoc_wrapper/protoc_wrapper.py",
+ ],
+}
+
+// GN: //net:isolation_info_proto_gen
+genrule {
+ name: "cronet_aml_net_isolation_info_proto_gen_headers",
+ srcs: [
+ "net/base/isolation_info.proto",
+ ],
+ tools: [
+ "aprotoc",
+ ],
+ cmd: "$(location tools/protoc_wrapper/protoc_wrapper.py) isolation_info.proto " +
+ "--protoc " +
+ "$(location aprotoc) " +
+ "--proto-in-dir " +
+ "`dirname $(location net/base/isolation_info.proto)` " +
+ "--cc-out-dir " +
+ "$(genDir)/net/base " +
+ "--py-out-dir " +
+ "$(genDir)/pyproto/net/base",
+ out: [
"net/base/isolation_info.pb.h",
- "pyproto/net/base/isolation_info_pb2.py",
],
tool_files: [
"tools/protoc_wrapper/protoc_wrapper.py",
@@ -2963,6 +3023,12 @@
static_libs: [
"cronet_aml_third_party_protobuf_protobuf_lite",
],
+ generated_headers: [
+ "cronet_aml_net_net_nqe_proto_gen_headers",
+ ],
+ export_generated_headers: [
+ "cronet_aml_net_net_nqe_proto_gen_headers",
+ ],
defaults: [
"cronet_aml_defaults",
],
@@ -3025,8 +3091,38 @@
"$(genDir)/pyproto/net/nqe/proto",
out: [
"net/nqe/proto/network_id_proto.pb.cc",
+ ],
+ tool_files: [
+ "tools/protoc_wrapper/protoc_wrapper.py",
+ ],
+}
+
+// GN: //net:net_nqe_proto_gen
+genrule {
+ name: "cronet_aml_net_net_nqe_proto_gen_headers",
+ srcs: [
+ "net/base/net_export.h",
+ "net/nqe/proto/network_id_proto.proto",
+ ],
+ tools: [
+ "aprotoc",
+ ],
+ cmd: "$(location tools/protoc_wrapper/protoc_wrapper.py) network_id_proto.proto " +
+ "--protoc " +
+ "$(location aprotoc) " +
+ "--proto-in-dir " +
+ "`dirname $(location net/nqe/proto/network_id_proto.proto)` " +
+ "--cc-out-dir " +
+ "$(genDir)/net/nqe/proto " +
+ "--cc-options " +
+ "dllexport_decl=NET_EXPORT_PRIVATE: " +
+ " " +
+ "--include " +
+ "$(location net/base/net_export.h) " +
+ "--py-out-dir " +
+ "$(genDir)/pyproto/net/nqe/proto",
+ out: [
"net/nqe/proto/network_id_proto.pb.h",
- "pyproto/net/nqe/proto/network_id_proto_pb2.py",
],
tool_files: [
"tools/protoc_wrapper/protoc_wrapper.py",
@@ -3184,6 +3280,12 @@
"cronet_aml_base_base",
"cronet_aml_third_party_protobuf_protobuf_lite",
],
+ generated_headers: [
+ "cronet_aml_net_third_party_quiche_net_quic_proto_gen_headers",
+ ],
+ export_generated_headers: [
+ "cronet_aml_net_third_party_quiche_net_quic_proto_gen_headers",
+ ],
defaults: [
"cronet_aml_defaults",
],
@@ -3252,14 +3354,46 @@
"$(genDir)/pyproto/net/third_party/quiche/src",
out: [
"net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.pb.cc",
- "net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.pb.h",
"net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.pb.cc",
- "net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.pb.h",
"net/third_party/quiche/src/quiche/quic/core/proto/source_address_token.pb.cc",
+ ],
+ tool_files: [
+ "tools/protoc_wrapper/protoc_wrapper.py",
+ ],
+}
+
+// GN: //net/third_party/quiche:net_quic_proto_gen
+genrule {
+ name: "cronet_aml_net_third_party_quiche_net_quic_proto_gen_headers",
+ srcs: [
+ "base/component_export.h",
+ "net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.proto",
+ "net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.proto",
+ "net/third_party/quiche/src/quiche/quic/core/proto/source_address_token.proto",
+ ],
+ tools: [
+ "aprotoc",
+ ],
+ cmd: "$(location tools/protoc_wrapper/protoc_wrapper.py) quiche/quic/core/proto/cached_network_parameters.proto " +
+ "quiche/quic/core/proto/crypto_server_config.proto " +
+ "quiche/quic/core/proto/source_address_token.proto " +
+ "--protoc " +
+ "$(location aprotoc) " +
+ "--proto-in-dir " +
+ "`dirname $(location net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.proto)`/../../../../ " +
+ "--cc-out-dir " +
+ "$(genDir)/net/third_party/quiche/src " +
+ "--cc-options " +
+ "dllexport_decl=COMPONENT_EXPORT(QUICHE): " +
+ " " +
+ "--include " +
+ "$(location base/component_export.h) " +
+ "--py-out-dir " +
+ "$(genDir)/pyproto/net/third_party/quiche/src",
+ out: [
+ "net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.pb.h",
+ "net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.pb.h",
"net/third_party/quiche/src/quiche/quic/core/proto/source_address_token.pb.h",
- "pyproto/net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters_pb2.py",
- "pyproto/net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config_pb2.py",
- "pyproto/net/third_party/quiche/src/quiche/quic/core/proto/source_address_token_pb2.py",
],
tool_files: [
"tools/protoc_wrapper/protoc_wrapper.py",
@@ -3279,6 +3413,12 @@
static_libs: [
"cronet_aml_third_party_protobuf_protobuf_lite",
],
+ generated_headers: [
+ "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto_gen_headers",
+ ],
+ export_generated_headers: [
+ "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto_gen_headers",
+ ],
defaults: [
"cronet_aml_defaults",
],
@@ -3341,8 +3481,38 @@
"$(genDir)/pyproto/net/third_party/quiche/src/quiche/quic/test_tools",
out: [
"net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.pb.cc",
+ ],
+ tool_files: [
+ "tools/protoc_wrapper/protoc_wrapper.py",
+ ],
+}
+
+// GN: //net/third_party/quiche:net_quic_test_tools_proto_gen
+genrule {
+ name: "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto_gen_headers",
+ srcs: [
+ "net/base/net_export.h",
+ "net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.proto",
+ ],
+ tools: [
+ "aprotoc",
+ ],
+ cmd: "$(location tools/protoc_wrapper/protoc_wrapper.py) send_algorithm_test_result.proto " +
+ "--protoc " +
+ "$(location aprotoc) " +
+ "--proto-in-dir " +
+ "`dirname $(location net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.proto)` " +
+ "--cc-out-dir " +
+ "$(genDir)/net/third_party/quiche/src/quiche/quic/test_tools " +
+ "--cc-options " +
+ "dllexport_decl=NET_EXPORT_PRIVATE: " +
+ " " +
+ "--include " +
+ "$(location net/base/net_export.h) " +
+ "--py-out-dir " +
+ "$(genDir)/pyproto/net/third_party/quiche/src/quiche/quic/test_tools",
+ out: [
"net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.pb.h",
- "pyproto/net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result_pb2.py",
],
tool_files: [
"tools/protoc_wrapper/protoc_wrapper.py",
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index be9c3ba..8a33036 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -32,6 +32,7 @@
import os
import re
import sys
+import copy
import gn_utils
@@ -937,6 +938,15 @@
elif target.script == "//tools/grit/stamp_grit_sources.py":
# stamp_grit_sources.py is not executable
module.cmd = "python " + module.cmd
+ elif target.script == "//tools/protoc_wrapper/protoc_wrapper.py":
+ # Split module to source module and header module.
+ # Source module has the .cc files and header module has the .h files in the out.
+ header_module = copy.deepcopy(module)
+ header_module.name += "_headers"
+ header_module.out = [file for file in header_module.out if os.path.splitext(file)[1] == '.h']
+ module.out = [file for file in module.out if os.path.splitext(file)[1] == '.cc']
+ module.genrule_headers.add(header_module.name)
+ blueprint.add_module(header_module)
blueprint.add_module(module)
return module