summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/android/gyp/write_native_libraries_java.py
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/build/android/gyp/write_native_libraries_java.py')
-rwxr-xr-xthird_party/libwebrtc/build/android/gyp/write_native_libraries_java.py130
1 files changed, 130 insertions, 0 deletions
diff --git a/third_party/libwebrtc/build/android/gyp/write_native_libraries_java.py b/third_party/libwebrtc/build/android/gyp/write_native_libraries_java.py
new file mode 100755
index 0000000000..322b8b2c82
--- /dev/null
+++ b/third_party/libwebrtc/build/android/gyp/write_native_libraries_java.py
@@ -0,0 +1,130 @@
+#!/usr/bin/env python3
+#
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Writes list of native libraries to srcjar file."""
+
+import argparse
+import os
+import sys
+import zipfile
+
+from util import build_utils
+
+
+_NATIVE_LIBRARIES_TEMPLATE = """\
+// This file is autogenerated by
+// build/android/gyp/write_native_libraries_java.py
+// Please do not change its content.
+
+package org.chromium.build;
+
+public class NativeLibraries {{
+ public static final int CPU_FAMILY_UNKNOWN = 0;
+ public static final int CPU_FAMILY_ARM = 1;
+ public static final int CPU_FAMILY_MIPS = 2;
+ public static final int CPU_FAMILY_X86 = 3;
+
+ // Set to true to enable the use of the Chromium Linker.
+ public static {MAYBE_FINAL}boolean sUseLinker{USE_LINKER};
+ public static {MAYBE_FINAL}boolean sUseLibraryInZipFile{USE_LIBRARY_IN_ZIP_FILE};
+ public static {MAYBE_FINAL}boolean sUseModernLinker{USE_MODERN_LINKER};
+
+ // This is the list of native libraries to be loaded (in the correct order)
+ // by LibraryLoader.java.
+ public static {MAYBE_FINAL}String[] LIBRARIES = {{{LIBRARIES}}};
+
+ public static {MAYBE_FINAL}int sCpuFamily = {CPU_FAMILY};
+}}
+"""
+
+
+def _FormatLibraryName(library_name):
+ filename = os.path.split(library_name)[1]
+ assert filename.startswith('lib')
+ assert filename.endswith('.so')
+ # Remove lib prefix and .so suffix.
+ return '"%s"' % filename[3:-3]
+
+
+def main():
+ parser = argparse.ArgumentParser()
+
+ build_utils.AddDepfileOption(parser)
+ parser.add_argument('--final', action='store_true', help='Use final fields.')
+ parser.add_argument(
+ '--enable-chromium-linker',
+ action='store_true',
+ help='Enable Chromium linker.')
+ parser.add_argument(
+ '--load-library-from-apk',
+ action='store_true',
+ help='Load libaries from APK without uncompressing.')
+ parser.add_argument(
+ '--use-modern-linker', action='store_true', help='To use ModernLinker.')
+ parser.add_argument(
+ '--native-libraries-list', help='File with list of native libraries.')
+ parser.add_argument(
+ '--cpu-family',
+ choices={
+ 'CPU_FAMILY_ARM', 'CPU_FAMILY_X86', 'CPU_FAMILY_MIPS',
+ 'CPU_FAMILY_UNKNOWN'
+ },
+ required=True,
+ default='CPU_FAMILY_UNKNOWN',
+ help='CPU family.')
+ parser.add_argument(
+ '--main-component-library',
+ help='If used, the list of native libraries will only contain this '
+ 'library. Dependencies are found in the library\'s "NEEDED" section.')
+
+ parser.add_argument(
+ '--output', required=True, help='Path to the generated srcjar file.')
+
+ options = parser.parse_args(build_utils.ExpandFileArgs(sys.argv[1:]))
+
+ assert (options.enable_chromium_linker or not options.load_library_from_apk)
+
+ native_libraries_list = []
+ if options.main_component_library:
+ native_libraries_list.append(
+ _FormatLibraryName(options.main_component_library))
+ elif options.native_libraries_list:
+ with open(options.native_libraries_list) as f:
+ for path in f:
+ path = path.strip()
+ native_libraries_list.append(_FormatLibraryName(path))
+
+ def bool_str(value):
+ if value:
+ return ' = true'
+ elif options.final:
+ return ' = false'
+ return ''
+
+ format_dict = {
+ 'MAYBE_FINAL': 'final ' if options.final else '',
+ 'USE_LINKER': bool_str(options.enable_chromium_linker),
+ 'USE_LIBRARY_IN_ZIP_FILE': bool_str(options.load_library_from_apk),
+ 'USE_MODERN_LINKER': bool_str(options.use_modern_linker),
+ 'LIBRARIES': ','.join(native_libraries_list),
+ 'CPU_FAMILY': options.cpu_family,
+ }
+ with build_utils.AtomicOutput(options.output) as f:
+ with zipfile.ZipFile(f.name, 'w') as srcjar_file:
+ build_utils.AddToZipHermetic(
+ zip_file=srcjar_file,
+ zip_path='org/chromium/build/NativeLibraries.java',
+ data=_NATIVE_LIBRARIES_TEMPLATE.format(**format_dict))
+
+ if options.depfile:
+ assert options.native_libraries_list
+ build_utils.WriteDepfile(options.depfile,
+ options.output,
+ inputs=[options.native_libraries_list])
+
+
+if __name__ == '__main__':
+ sys.exit(main())