Build perfetto_trace_javastream_protos from list of files Specify each proto file source instead of a single/merged perfetto_trace.proto. This change is needed to support the upcoming Winscope traces which will be defined as TracePacket's extensions, i.e. they won't be merged into perfetto_trace.proto. Fix: 315118713 Bug: 276433199 Test: m framework-minus-apex Change-Id: I257a9cf37f51f5b333463e8564d453e5020b176f Merged-In: Ib7493d218e2294d46c3f8148856832df9cd4679c
diff --git a/tools/gen_android_bp b/tools/gen_android_bp index c8db4ec..d71b0dc 100755 --- a/tools/gen_android_bp +++ b/tools/gen_android_bp
@@ -121,13 +121,19 @@ # Proto target groups which will be made public. proto_groups = { - 'trace': [ - '//protos/perfetto/trace:non_minimal_source_set', - '//protos/perfetto/trace:minimal_source_set' - ], - 'config': [ - '//protos/perfetto/config:source_set', - ], + 'trace': { + 'types': ['filegroup', 'lite'], + 'targets': [ + '//protos/perfetto/trace:non_minimal_source_set', + '//protos/perfetto/trace:minimal_source_set', + ] + }, + 'config': { + 'types': ['lite'], + 'targets': [ + '//protos/perfetto/config:source_set', + ] + }, } needs_libfts = [ @@ -956,23 +962,34 @@ def create_proto_group_modules(blueprint, gn: GnParser, module_name: str, - target_names): - # TODO(lalitm): today, we're only adding a Java lite module because that's - # the only one used in practice. In the future, if we need other target types - # (e.g. C++, Java full etc.) add them here. - bp_module_name = label_to_module_name(module_name) + '_java_protos' - module = Module('java_library', bp_module_name, bp_module_name) - module.comment = f'''GN: [{', '.join(target_names)}]''' - module.proto = {'type': 'lite', 'canonical_path_from_root': False} + group): + target_names = group['targets'] + module_types = group['types'] + module_sources = set() for name in target_names: target = gn.get_target(name) - module.srcs.update(gn_utils.label_to_path(src) for src in target.sources) + module_sources.update(gn_utils.label_to_path(src) for src in target.sources) for dep_label in target.transitive_proto_deps(): dep = gn.get_target(dep_label.name) - module.srcs.update(gn_utils.label_to_path(src) for src in dep.sources) + module_sources.update(gn_utils.label_to_path(src) for src in dep.sources) - blueprint.add_module(module) + for type in module_types: + if type == 'filegroup': + name = label_to_module_name(module_name) + '_filegroup_proto' + module = Module('filegroup', name, name) + module.comment = f'''GN: [{', '.join(target_names)}]''' + module.srcs = module_sources + blueprint.add_module(module) + elif type == 'lite': + name = label_to_module_name(module_name) + '_java_protos' + module = Module('java_library', name, name) + module.comment = f'''GN: [{', '.join(target_names)}]''' + module.proto = {'type': 'lite', 'canonical_path_from_root': False} + module.srcs = module_sources + blueprint.add_module(module) + else: + raise Error('Unhandled proto group type: {}'.format(group.type)) def _get_cflags(target: GnParser.Target): @@ -1228,8 +1245,8 @@ # checker = gn_utils.ODRChecker(gn, target_name) # Add any proto groups to the blueprint. - for l_name, t_names in proto_groups.items(): - create_proto_group_modules(blueprint, gn, l_name, t_names) + for name, group in proto_groups.items(): + create_proto_group_modules(blueprint, gn, name, group) output = [ """// Copyright (C) 2017 The Android Open Source Project