Merge changes I50f224f6,I66c34ac0,I63f5fb23,I70b57072,I1d73f843, ... am: 3d153d4f89
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2279997
Change-Id: I1f7717628897040349fa6c2682155bae0431371e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp
index 739b2b1..c88c09f 100644
--- a/tools/gn2bp/Android.bp.swp
+++ b/tools/gn2bp/Android.bp.swp
@@ -213,12 +213,11 @@
local_include_dirs: [
"./",
"buildtools/third_party/libc++/",
- "out/test/gen/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
"third_party/android_ndk/sources/android/cpufeatures/",
],
- header_libs: [
- "jni_headers",
- ],
+ cpp_std: "c++20",
}
// GN: //base/allocator/partition_allocator:partition_alloc_buildflags
@@ -266,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)/jni_headers/base/android_runtime_jni_headers " +
+ "$(genDir)/base/android_runtime_jni_headers " +
"--includes " +
- "../../../../../../base/android/jni_generator/jni_generator_helper.h " +
+ "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 " +
@@ -281,10 +280,12 @@
"--input_file " +
"java/lang/Runnable.class " +
"--input_file " +
- "java/lang/Runtime.class",
+ "java/lang/Runtime.class " +
+ "--javap " +
+ "$$(find out/.path -name javap)",
out: [
- "jni_headers/base/android_runtime_jni_headers/Runnable_jni.h",
- "jni_headers/base/android_runtime_jni_headers/Runtime_jni.h",
+ "base/android_runtime_jni_headers/Runnable_jni.h",
+ "base/android_runtime_jni_headers/Runtime_jni.h",
],
tool_files: [
"base/android/jni_generator/jni_generator.py",
@@ -957,8 +958,8 @@
local_include_dirs: [
"./",
"buildtools/third_party/libc++/",
- "out/test/gen/",
- "out/test/gen/jni_headers/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
"third_party/abseil-cpp/",
"third_party/android_ndk/sources/android/cpufeatures/",
"third_party/boringssl/src/include/",
@@ -968,6 +969,7 @@
header_libs: [
"jni_headers",
],
+ cpp_std: "c++20",
}
// GN: //base:base_jni_headers
@@ -1017,12 +1019,12 @@
],
cmd: "$(location base/android/jni_generator/jni_generator.py) --ptr_type " +
"long " +
- "--prev_output_dir " +
- "gen/base/base_jni_headers " +
+ " " +
+ " " +
"--output_dir " +
- "$(genDir)/jni_headers/base/base_jni_headers " +
+ "$(genDir)/base/base_jni_headers " +
"--includes " +
- "../../../../../../base/android/jni_generator/jni_generator_helper.h " +
+ "base/android/jni_generator/jni_generator_helper.h " +
"--use_proxy_hash " +
"--output_name " +
"ApkAssets_jni.h " +
@@ -1185,46 +1187,46 @@
"--input_file " +
"$(location base/android/java/src/org/chromium/base/task/TaskRunnerImpl.java)",
out: [
- "jni_headers/base/base_jni_headers/ApkAssets_jni.h",
- "jni_headers/base/base_jni_headers/ApplicationStatus_jni.h",
- "jni_headers/base/base_jni_headers/BaseFeatureList_jni.h",
- "jni_headers/base/base_jni_headers/BuildInfo_jni.h",
- "jni_headers/base/base_jni_headers/BundleUtils_jni.h",
- "jni_headers/base/base_jni_headers/Callback_jni.h",
- "jni_headers/base/base_jni_headers/ChildProcessService_jni.h",
- "jni_headers/base/base_jni_headers/CommandLine_jni.h",
- "jni_headers/base/base_jni_headers/ContentUriUtils_jni.h",
- "jni_headers/base/base_jni_headers/CpuFeatures_jni.h",
- "jni_headers/base/base_jni_headers/EarlyTraceEvent_jni.h",
- "jni_headers/base/base_jni_headers/EventLog_jni.h",
- "jni_headers/base/base_jni_headers/FeatureList_jni.h",
- "jni_headers/base/base_jni_headers/Features_jni.h",
- "jni_headers/base/base_jni_headers/FieldTrialList_jni.h",
- "jni_headers/base/base_jni_headers/FileUtils_jni.h",
- "jni_headers/base/base_jni_headers/ImportantFileWriterAndroid_jni.h",
- "jni_headers/base/base_jni_headers/IntStringCallback_jni.h",
- "jni_headers/base/base_jni_headers/JNIUtils_jni.h",
- "jni_headers/base/base_jni_headers/JankMetricUMARecorder_jni.h",
- "jni_headers/base/base_jni_headers/JavaExceptionReporter_jni.h",
- "jni_headers/base/base_jni_headers/JavaHandlerThread_jni.h",
- "jni_headers/base/base_jni_headers/JavaHeapDumpGenerator_jni.h",
- "jni_headers/base/base_jni_headers/LibraryLoader_jni.h",
- "jni_headers/base/base_jni_headers/LibraryPrefetcher_jni.h",
- "jni_headers/base/base_jni_headers/LocaleUtils_jni.h",
- "jni_headers/base/base_jni_headers/MemoryPressureListener_jni.h",
- "jni_headers/base/base_jni_headers/NativeUmaRecorder_jni.h",
- "jni_headers/base/base_jni_headers/PathService_jni.h",
- "jni_headers/base/base_jni_headers/PathUtils_jni.h",
- "jni_headers/base/base_jni_headers/PostTask_jni.h",
- "jni_headers/base/base_jni_headers/PowerMonitor_jni.h",
- "jni_headers/base/base_jni_headers/RadioUtils_jni.h",
- "jni_headers/base/base_jni_headers/StatisticsRecorderAndroid_jni.h",
- "jni_headers/base/base_jni_headers/SysUtils_jni.h",
- "jni_headers/base/base_jni_headers/TaskRunnerImpl_jni.h",
- "jni_headers/base/base_jni_headers/ThreadUtils_jni.h",
- "jni_headers/base/base_jni_headers/TimezoneUtils_jni.h",
- "jni_headers/base/base_jni_headers/TraceEvent_jni.h",
- "jni_headers/base/base_jni_headers/UnguessableToken_jni.h",
+ "base/base_jni_headers/ApkAssets_jni.h",
+ "base/base_jni_headers/ApplicationStatus_jni.h",
+ "base/base_jni_headers/BaseFeatureList_jni.h",
+ "base/base_jni_headers/BuildInfo_jni.h",
+ "base/base_jni_headers/BundleUtils_jni.h",
+ "base/base_jni_headers/Callback_jni.h",
+ "base/base_jni_headers/ChildProcessService_jni.h",
+ "base/base_jni_headers/CommandLine_jni.h",
+ "base/base_jni_headers/ContentUriUtils_jni.h",
+ "base/base_jni_headers/CpuFeatures_jni.h",
+ "base/base_jni_headers/EarlyTraceEvent_jni.h",
+ "base/base_jni_headers/EventLog_jni.h",
+ "base/base_jni_headers/FeatureList_jni.h",
+ "base/base_jni_headers/Features_jni.h",
+ "base/base_jni_headers/FieldTrialList_jni.h",
+ "base/base_jni_headers/FileUtils_jni.h",
+ "base/base_jni_headers/ImportantFileWriterAndroid_jni.h",
+ "base/base_jni_headers/IntStringCallback_jni.h",
+ "base/base_jni_headers/JNIUtils_jni.h",
+ "base/base_jni_headers/JankMetricUMARecorder_jni.h",
+ "base/base_jni_headers/JavaExceptionReporter_jni.h",
+ "base/base_jni_headers/JavaHandlerThread_jni.h",
+ "base/base_jni_headers/JavaHeapDumpGenerator_jni.h",
+ "base/base_jni_headers/LibraryLoader_jni.h",
+ "base/base_jni_headers/LibraryPrefetcher_jni.h",
+ "base/base_jni_headers/LocaleUtils_jni.h",
+ "base/base_jni_headers/MemoryPressureListener_jni.h",
+ "base/base_jni_headers/NativeUmaRecorder_jni.h",
+ "base/base_jni_headers/PathService_jni.h",
+ "base/base_jni_headers/PathUtils_jni.h",
+ "base/base_jni_headers/PostTask_jni.h",
+ "base/base_jni_headers/PowerMonitor_jni.h",
+ "base/base_jni_headers/RadioUtils_jni.h",
+ "base/base_jni_headers/StatisticsRecorderAndroid_jni.h",
+ "base/base_jni_headers/SysUtils_jni.h",
+ "base/base_jni_headers/TaskRunnerImpl_jni.h",
+ "base/base_jni_headers/ThreadUtils_jni.h",
+ "base/base_jni_headers/TimezoneUtils_jni.h",
+ "base/base_jni_headers/TraceEvent_jni.h",
+ "base/base_jni_headers/UnguessableToken_jni.h",
],
tool_files: [
"base/android/jni_generator/jni_generator.py",
@@ -1269,11 +1271,10 @@
local_include_dirs: [
"./",
"buildtools/third_party/libc++/",
- "out/test/gen/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
],
- header_libs: [
- "jni_headers",
- ],
+ cpp_std: "c++20",
}
// GN: //base:build_date
@@ -1590,11 +1591,10 @@
local_include_dirs: [
"./",
"buildtools/third_party/libc++/",
- "out/test/gen/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
],
- header_libs: [
- "jni_headers",
- ],
+ cpp_std: "c++20",
}
// GN: //base/third_party/dynamic_annotations:dynamic_annotations
@@ -1624,11 +1624,10 @@
local_include_dirs: [
"./",
"buildtools/third_party/libc++/",
- "out/test/gen/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
],
- header_libs: [
- "jni_headers",
- ],
+ cpp_std: "c++20",
}
// GN: //base:tracing_buildflags
@@ -1742,11 +1741,14 @@
cflags: [
"-O2",
"-Wno-error=return-type",
+ "-Wno-missing-field-initializers",
+ "-Wno-non-virtual-dtor",
"-Wno-sign-compare",
"-Wno-sign-promo",
"-Wno-unused-parameter",
"-fvisibility=hidden",
],
+ stl: "none",
}
// GN: //third_party/abseil-cpp:absl
@@ -2816,12 +2818,11 @@
local_include_dirs: [
"./",
"buildtools/third_party/libc++/",
- "out/test/gen/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
"third_party/boringssl/src/include/",
],
- header_libs: [
- "jni_headers",
- ],
+ cpp_std: "c++20",
}
// GN: //third_party/boringssl:boringssl_asm
@@ -2873,13 +2874,12 @@
local_include_dirs: [
"./",
"buildtools/third_party/libc++/",
- "out/test/gen/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
"third_party/icu/source/common/",
"third_party/icu/source/i18n/",
],
- header_libs: [
- "jni_headers",
- ],
+ cpp_std: "c++20",
}
// GN: //third_party/icu:icuuc_private
@@ -2924,13 +2924,12 @@
local_include_dirs: [
"./",
"buildtools/third_party/libc++/",
- "out/test/gen/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
"third_party/icu/source/common/",
"third_party/icu/source/i18n/",
],
- header_libs: [
- "jni_headers",
- ],
+ cpp_std: "c++20",
}
// GN: //third_party/icu:icuuc_public
@@ -2979,12 +2978,11 @@
local_include_dirs: [
"./",
"buildtools/third_party/libc++/",
- "out/test/gen/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
"third_party/libevent/android/",
],
- header_libs: [
- "jni_headers",
- ],
+ cpp_std: "c++20",
}
// GN: //third_party/modp_b64:modp_b64
@@ -3016,10 +3014,9 @@
local_include_dirs: [
"./",
"buildtools/third_party/libc++/",
- "out/test/gen/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
],
- header_libs: [
- "jni_headers",
- ],
+ cpp_std: "c++20",
}
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index 40addef..0a73a19 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -343,6 +343,7 @@
self.android = Target('android')
self.host = Target('host')
self.stl = None
+ self.cpp_std = None
self.dist = dict()
self.strip = dict()
self.data = set()
@@ -354,6 +355,7 @@
self.genrule_headers = set()
self.genrule_srcs = set()
self.genrule_shared_libs = set()
+ self.genrule_header_libs = set()
self.version_script = None
self.test_suites = set()
self.test_config = None
@@ -391,6 +393,7 @@
self._output_field(output, 'tool_files')
self._output_field(output, 'data')
self._output_field(output, 'stl')
+ self._output_field(output, 'cpp_std')
self._output_field(output, 'apex_available')
self._output_field(output, 'min_sdk_version')
self._output_field(output, 'version_script')
@@ -664,9 +667,10 @@
blueprint.add_module(module)
-# There may be a better way to do target specific modification
-# Target specific modification before create_action_module
-def pre_create_action_module(target):
+def create_action_module(blueprint, target):
+ bp_module_name = label_to_module_name(target.name)
+ module = Module('genrule', bp_module_name, target.name)
+
# Convert ['--param=value'] to ['--param', 'value'] for consistency.
# TODO: we may want to only do this for python scripts arguments. If argparse
# is used, this transformation is safe.
@@ -681,10 +685,14 @@
break
elif target.script == '//base/android/jni_generator/jni_generator.py':
+ # 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/... with --output_dir $(genDir)/...
- target.args[i + 1] = re.sub('^gen', '$(genDir)', target.args[i + 1])
+ # replace --output_dir gen/jni_headers/... with --output_dir $(genDir)/...
+ target.args[i + 1] = re.sub('^gen/jni_headers', '$(genDir)', target.args[i + 1])
if val == '--input_file':
# --input_file supports both .class specifiers or source files as arguments.
# Only source files need to be wrapped inside a $(location <label>) tag.
@@ -694,11 +702,25 @@
# TODO: put inside function
filename = re.sub('^\.\./\.\./', '', target.args[i + 1])
target.args[i + 1] = '$(location %s)' % filename
+ 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]
-def create_action_module(blueprint, target):
- bp_module_name = label_to_module_name(target.name)
- module = Module('genrule', bp_module_name, target.name)
script = gn_utils.label_to_path(target.script)
module.tool_files.add(script)
@@ -803,7 +825,6 @@
name_without_toolchain == gn_utils.GEN_VERSION_TARGET:
module = create_gen_version_module(blueprint, target, bp_module_name)
else:
- pre_create_action_module(target)
module = create_action_module(blueprint, target)
elif target.type == 'copy':
# TODO: careful now! copy targets are not supported yet, but this will stop
@@ -824,13 +845,21 @@
if target.type in gn_utils.LINKER_UNIT_TYPES:
module.cflags.update(_get_cflags(target))
- # HACK! We may have to link against chromium's sysroot instead, but this
- # seems to work for //base:base.
# TODO: implement proper cflag parsing.
for flag in target.cflags:
- if '--sysroot=' in flag:
- module.header_libs.add('jni_headers')
- module.local_include_dirs.update(gn_utils.label_to_path(it) for it in target.include_dirs)
+ if '-std=' in flag:
+ module.cpp_std = flag[len('-std='):]
+ if '-isystem' in flag:
+ module.local_include_dirs.add(flag[len('-isystem../../'):])
+
+ # Adding local_include_dirs is necessary due to source_sets / filegroups
+ # which do not properly propagate include directories.
+ # Filter any directory inside //out as a) this directory does not exist for
+ # aosp / soong builds and b) the include directory should already be
+ # configured via library dependency.
+ module.local_include_dirs.update([gn_utils.label_to_path(d)
+ for d in target.include_dirs
+ if not re.match('^//out/.*', d)])
module_is_compiled = module.type not in ('genrule', 'filegroup')
if module_is_compiled:
@@ -896,6 +925,7 @@
module.generated_headers.update(dep_module.genrule_headers)
module.srcs.update(dep_module.genrule_srcs)
module.shared_libs.update(dep_module.genrule_shared_libs)
+ module.header_libs.update(dep_module.genrule_header_libs)
elif dep_module.type == 'cc_binary':
continue # Ignore executables deps (used by cmdline integration tests).
else:
@@ -913,12 +943,15 @@
defaults = Module('cc_defaults', defaults_module, '//gn:default_deps')
defaults.cflags = [
'-Wno-error=return-type',
+ '-Wno-non-virtual-dtor',
+ '-Wno-missing-field-initializers',
'-Wno-sign-compare',
'-Wno-sign-promo',
'-Wno-unused-parameter',
'-fvisibility=hidden',
'-O2',
]
+ defaults.stl = 'none'
blueprint.add_module(defaults)
for target in targets: