gn2bp: Add function to merge modules
Test: ./update_results.sh
Change-Id: I274243769e366f41b129365c8f4ee89d0e1bf929
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index 7368e26..d75392d 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -1150,6 +1150,22 @@
merged_cmd.append('fi;')
return NEWLINE.join(merged_cmd)
+def merge_modules(modules, genrule_type):
+ '''
+ :param modules: dictionary whose key is arch name and value is module
+ :param genrule_type: cc_genrule or java_genrule
+ :return: merged module of input modules
+ '''
+ merged_module = list(modules.values())[0]
+
+ # Following attributes must be the same between archs
+ for key in ('out', 'genrule_headers', 'srcs', 'tool_files'):
+ if any([getattr(merged_module, key) != getattr(module, key) for module in modules.values()]):
+ raise Error(f'{merged_module.name} has different values for {key} between archs')
+
+ merged_module.cmd = merge_cmd(modules, genrule_type)
+ return merged_module
+
def _get_cflags(cflags, defines):
cflags = {flag for flag in cflags if flag in cflag_allowlist}
# Consider proper allowlist or denylist if needed