gn2bp: support for jni_generate.py to call javap from soong path

Test: //base:base
Change-Id: I50f224f68805cf4e3cb61df3b2f022be8f38201d
diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp
index 87afdc4..c88c09f 100644
--- a/tools/gn2bp/Android.bp.swp
+++ b/tools/gn2bp/Android.bp.swp
@@ -265,14 +265,14 @@
     name: "cronet_aml_base_android_runtime_jni_headers",
     cmd: "$(location base/android/jni_generator/jni_generator.py) --ptr_type " +
          "long " +
-         "--prev_output_dir " +
-         "gen/base/android_runtime_jni_headers " +
+         " " +
+         " " +
          "--output_dir " +
          "$(genDir)/base/android_runtime_jni_headers " +
          "--includes " +
          "base/android/jni_generator/jni_generator_helper.h " +
          "--jar_file " +
-         "../../third_party/android_sdk/public/platforms/android-33/android.jar " +
+         "$(location third_party/android_sdk/public/platforms/android-33/android.jar) " +
          "--output_name " +
          "Runnable_jni.h " +
          "--output_name " +
@@ -280,7 +280,9 @@
          "--input_file " +
          "java/lang/Runnable.class " +
          "--input_file " +
-         "java/lang/Runtime.class",
+         "java/lang/Runtime.class " +
+         "--javap " +
+         "$$(find out/.path -name javap)",
     out: [
         "base/android_runtime_jni_headers/Runnable_jni.h",
         "base/android_runtime_jni_headers/Runtime_jni.h",
@@ -1017,8 +1019,8 @@
     ],
     cmd: "$(location base/android/jni_generator/jni_generator.py) --ptr_type " +
          "long " +
-         "--prev_output_dir " +
-         "gen/base/base_jni_headers " +
+         " " +
+         " " +
          "--output_dir " +
          "$(genDir)/base/base_jni_headers " +
          "--includes " +
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index 61cd964..0a73a19 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -688,6 +688,7 @@
     # chromium builds against a prebuilt ndk that contains the jni_headers, so
     # a dependency is never explicitly created.
     module.genrule_header_libs.add('jni_headers')
+    needs_javap = False
     for i, val in enumerate(target.args):
       if val == '--output_dir':
         # replace --output_dir gen/jni_headers/... with --output_dir $(genDir)/...
@@ -704,6 +705,19 @@
       if val == '--includes' and 'jni_generator_helper' in target.args[i + 1]:
         # delete all leading ../
         target.args[i + 1] = re.sub('^(\.\./)+', '', target.args[i + 1])
+      if val == '--prev_output_dir':
+        # this is not needed for aosp builds.
+        target.args[i] = ''
+        target.args[i + 1] = ''
+      if val == '--jar_file':
+        # delete leading ../../ and add path to javap
+        filename = re.sub('^\.\./\.\./', '', target.args[i + 1])
+        target.args[i + 1] = '$(location %s)' % filename
+        needs_javap = True
+
+    if needs_javap:
+      target.args.append('--javap')
+      target.args.append('$$(find out/.path -name javap)')
     # fix target.output directory to match #include statements.
     target.outputs = [re.sub('^jni_headers/', '', out) for out in target.outputs]