gn2bp: Use different srcs based on arch

srcs of partition_allocator:partition_alloc contains x86_64 specific asm
code. This CL add hardcoded rule to support x64 arch by arch condition
for srcs.

Test: m cronet_aml_components_cronet_android_cronet
Change-Id: I45f9a57fd374fc6a6c6fa4394591904a7c739e14
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index d3b2a56..f782663 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -396,6 +396,7 @@
     self.stubs = {}
     self.cppflags = set()
     self.rtti = False
+    self.arch = dict()
 
   def to_string(self, output):
     if self.comment:
@@ -442,6 +443,7 @@
     self._output_field(output, 'cppflags')
     if self.rtti:
       self._output_field(output, 'rtti')
+    self._output_field(output, 'arch')
 
     target_out = []
     self._output_field(target_out, 'android')
@@ -1229,6 +1231,18 @@
       raise Error('Unknown dep %s (%s) for target %s' %
                   (dep_module.name, dep_module.type, module.name))
 
+  # TODO: support arch difference in generic way
+  # Currently, it is expected that only a couple of modules (e.g. partition_alloc, boringssl)
+  # need arch condition. So, for now, hardcoding arch condition
+  if module.name == "cronet_aml_base_allocator_partition_allocator_partition_alloc":
+    x86_srcs = module.srcs.copy()
+    x86_srcs.remove(
+      "base/allocator/partition_allocator/starscan/stack/asm/x64/push_registers_asm.cc")
+    x86_srcs.add("base/allocator/partition_allocator/starscan/stack/asm/x86/push_registers_asm.cc")
+    module.arch['x86'] = {'srcs': x86_srcs}
+    module.arch['x86_64'] = {'srcs': module.srcs.copy()}
+    module.srcs.clear()
+
   return module
 
 def create_java_module(blueprint, gn):