Add some scripts useful for merging with upstream-master
Bug: 153469641 Test: mm Change-Id: Ie9a90d2ffb0a83e513bc90e2e906e2e8ab369981
This commit is contained in:
18
android_tools/generate_android_bp.sh
Executable file
18
android_tools/generate_android_bp.sh
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -o errexit
|
||||
set -o xtrace
|
||||
|
||||
DIR=$(dirname $0)
|
||||
|
||||
"${DIR}"/generate_bp.py "${DIR}"/selected_targets.json | \
|
||||
grep -v 'PACKAGE_VERSION' | \
|
||||
grep -v 'PACKAGE_STRING' >"${DIR}"/../Android.bp
|
||||
|
||||
# The alsa device causes a double lock on a mutex, don't use it
|
||||
sed -i -e 's/WEBRTC_ENABLE_LINUX_ALSA/WEBRTC_DUMMY_FILE_DEVICES/g' "${DIR}/../Android.bp"
|
||||
|
||||
source "${DIR}"/../../../build/envsetup.sh
|
||||
|
||||
bpfmt -w "${DIR}"/../Android.bp
|
||||
|
||||
272
android_tools/generate_bp.py
Executable file
272
android_tools/generate_bp.py
Executable file
@ -0,0 +1,272 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import json
|
||||
import sys
|
||||
|
||||
# Set this to True to generate a default entry with all the flags and defines
|
||||
# common to all the modules that needs to be curated by hand after it's
|
||||
# generated. When set to False it prints the last curated version of the
|
||||
# default, which could be incomplete.
|
||||
GENERATE_FULL_DEFAULT = False
|
||||
PRINT_ORIGINALS = False
|
||||
GENERATE_ALL_FLAGS = False
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print('wrong number of arguments')
|
||||
exit()
|
||||
|
||||
def FormatList(l):
|
||||
return json.dumps(l)
|
||||
|
||||
def FilterHeaders(l):
|
||||
return [x for x in l if not x.endswith('.h')]
|
||||
|
||||
def PrintOriginCommentedOut(target):
|
||||
if PRINT_ORIGINALS:
|
||||
print('/* From target:')
|
||||
print(json.dumps(target, sort_keys = True, indent = 4))
|
||||
print('*/')
|
||||
|
||||
def MakeRelatives(l):
|
||||
return [x.split('//').pop() for x in l]
|
||||
|
||||
def FormatName(name):
|
||||
return 'webrtc_' + name.split('/').pop().replace(':', '__')# .replace('/', '_').replace(':', '_')
|
||||
|
||||
def FilterFlags(flags, to_skip = set([])):
|
||||
if GENERATE_ALL_FLAGS:
|
||||
skip = set([
|
||||
'-L',
|
||||
'-isystem',
|
||||
'-Xclang',
|
||||
'-B',
|
||||
'--sysroot',
|
||||
'-fcrash-diagnostics-dir',
|
||||
'.',
|
||||
'-fdebug-compilation-dir',
|
||||
'-instcombine-lower-dbg-declare=0',
|
||||
'-Wno-non-c-typedef-for-linkage',
|
||||
'-Werror',
|
||||
'-fcomplete-member-pointers',
|
||||
'-m64',
|
||||
'-march=x86-64'
|
||||
]).union(to_skip)
|
||||
return [x for x in flags if not any([x.startswith(y) for y in skip])]
|
||||
else:
|
||||
return [x for x in flags if x == '-msse2']
|
||||
|
||||
def GenerateDefault(targets):
|
||||
in_default = {
|
||||
'cflags' : [],
|
||||
'cflags_c' : [],
|
||||
'cflags_cc' : [],
|
||||
'ldflags' : [],
|
||||
'asmflags' : [],
|
||||
'defines' : []
|
||||
}
|
||||
first = True
|
||||
for target in targets:
|
||||
typ = target['type']
|
||||
if typ == 'static_library':
|
||||
if first:
|
||||
first = False
|
||||
# Add all the flags to the default, we'll remove some later
|
||||
for flag_type in in_default.keys():
|
||||
in_default[flag_type] = []
|
||||
for flag in target[flag_type]:
|
||||
in_default[flag_type].append(flag)
|
||||
else:
|
||||
for flag_type in in_default.keys():
|
||||
flags_to_remove = []
|
||||
for flag in in_default[flag_type]:
|
||||
if flag not in target[flag_type]:
|
||||
flags_to_remove.append[flag_type]
|
||||
for flag in flags_to_remove:
|
||||
in_default[flag_type].remove(flag)
|
||||
defines = in_default['defines']
|
||||
in_default.pop('defines')
|
||||
in_default['cflags'].extend(['-D{0}'.format(x) for x in defines])
|
||||
if GENERATE_FULL_DEFAULT:
|
||||
print('cc_defaults {')
|
||||
print(' name: "webrtc_defaults",')
|
||||
print(' local_include_dirs: ["."],')
|
||||
for typ in in_default.keys():
|
||||
print(' {0}: ['.format(typ.replace('asmflags', 'asflags')
|
||||
.replace('cflags_cc', 'cppflags')
|
||||
.replace('cflags_c', 'conlyflags')))
|
||||
for flag in FilterFlags(in_default[typ]):
|
||||
print(' "{0}",'.format(flag.replace('"', '\\"')))
|
||||
print(' ],')
|
||||
print('}')
|
||||
else:
|
||||
print('cc_defaults {')
|
||||
print(' name: "webrtc_defaults",')
|
||||
print(' local_include_dirs: [')
|
||||
print(' ".",')
|
||||
print(' ],')
|
||||
print(' cflags: [')
|
||||
print(' "-Wno-unused-parameter",')
|
||||
print(' "-Wno-missing-field-initializers",')
|
||||
print(' "-DUSE_UDEV",')
|
||||
print(' "-DUSE_AURA=1",')
|
||||
print(' "-DUSE_GLIB=1",')
|
||||
print(' "-DUSE_NSS_CERTS=1",')
|
||||
print(' "-DUSE_X11=1",')
|
||||
print(' "-D_FILE_OFFSET_BITS=64",')
|
||||
print(' "-D_LARGEFILE_SOURCE",')
|
||||
print(' "-D_LARGEFILE64_SOURCE",')
|
||||
print(' "-D_GNU_SOURCE",')
|
||||
print(' "-DWEBRTC_ENABLE_PROTOBUF=0",')
|
||||
print(' "-DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE",')
|
||||
print(' "-DRTC_ENABLE_VP9",')
|
||||
print(' "-DHAVE_SCTP",')
|
||||
print(' "-DWEBRTC_LIBRARY_IMPL",')
|
||||
print(' "-DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=1",')
|
||||
print(' "-DWEBRTC_POSIX",')
|
||||
print(' "-DWEBRTC_LINUX",')
|
||||
print(' ],')
|
||||
print(' header_libs: [')
|
||||
print(' "libabsl_headers",')
|
||||
print(' ],')
|
||||
print(' static_libs: [')
|
||||
print(' "libaom",')
|
||||
print(' "libevent",')
|
||||
print(' "libopus",')
|
||||
print(' "libsrtp2",')
|
||||
print(' "libvpx",')
|
||||
print(' "libyuv",')
|
||||
print(' "libpffft",')
|
||||
print(' "rnnoise_rnn_vad",')
|
||||
print(' "usrsctplib",')
|
||||
print(' ],')
|
||||
print(' shared_libs: [')
|
||||
print(' "libcrypto",')
|
||||
print(' "libssl",')
|
||||
print(' ],')
|
||||
print(' host_supported: true,')
|
||||
print(' device_supported: false,')
|
||||
print(' arch: {')
|
||||
print(' arm: {')
|
||||
print(' enabled: false,')
|
||||
print(' },')
|
||||
print(' },')
|
||||
print('}')
|
||||
in_default['cflags'].extend([
|
||||
"-Wno-unused-parameter",
|
||||
"-Wno-missing-field-initializers",
|
||||
"-DUSE_UDEV",
|
||||
"-DUSE_AURA=1",
|
||||
"-DUSE_GLIB=1",
|
||||
"-DUSE_NSS_CERTS=1",
|
||||
"-DUSE_X11=1",
|
||||
"-D_FILE_OFFSET_BITS=64",
|
||||
"-D_LARGEFILE_SOURCE",
|
||||
"-D_LARGEFILE64_SOURCE",
|
||||
"-D_GNU_SOURCE",
|
||||
"-DWEBRTC_ENABLE_PROTOBUF=0",
|
||||
"-DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE",
|
||||
"-DRTC_ENABLE_VP9",
|
||||
"-DHAVE_SCTP",
|
||||
"-DWEBRTC_LIBRARY_IMPL",
|
||||
"-DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=1",
|
||||
"-DWEBRTC_POSIX",
|
||||
"-DWEBRTC_LINUX"
|
||||
])
|
||||
return in_default
|
||||
|
||||
def GenerateGroup(target):
|
||||
PrintOriginCommentedOut(target)
|
||||
|
||||
def GenerateSourceSet(target):
|
||||
PrintOriginCommentedOut(target)
|
||||
if target.has_key('sources'):
|
||||
name = FormatName(target['name'])
|
||||
print('filegroup {')
|
||||
print(' name: "{0}",'.format(name))
|
||||
print(' srcs: {0},'.format(FormatList(MakeRelatives(FilterHeaders(target['sources'])))))
|
||||
print('}')
|
||||
return name
|
||||
return ""
|
||||
|
||||
def GenerateStaticLib(target, targets, flags_in_default):
|
||||
PrintOriginCommentedOut(target)
|
||||
name = FormatName(target['name'])
|
||||
print('cc_library_static {')
|
||||
print(' name: "{0}",'.format(name))
|
||||
print(' defaults: ["webrtc_defaults"],')
|
||||
sources = []
|
||||
sources.extend(MakeRelatives(FilterHeaders(target['sources'])))
|
||||
for trg in targets:
|
||||
if trg['type'] == 'source_set' and trg['name'] in target['deps']:
|
||||
sources.append(':' + FormatName(trg['name']))
|
||||
print(' srcs: {0},'.format(FormatList(sources)))
|
||||
print(' host_supported: true,')
|
||||
if target.has_key('asmflags'):
|
||||
asmflags = FilterFlags(target['asmflags'], set(flags_in_default['asmflags']))
|
||||
if len(asmflags) > 0:
|
||||
print(' asflags: {0},'.format(FormatList(asmflags)))
|
||||
cflags = []
|
||||
if target.has_key('cflags'):
|
||||
cflags.extend(target['cflags'])
|
||||
cflags = FilterFlags(cflags, set(flags_in_default['cflags']))
|
||||
if target.has_key('defines'):
|
||||
cflags.extend(['-D' + x for x in target['defines']])
|
||||
cflags = [x for x in cflags if x not in flags_in_default['cflags']]
|
||||
if len(cflags) > 0:
|
||||
print(' cflags: {0},'.format(FormatList(cflags)))
|
||||
if target.has_key('cflags_c'):
|
||||
cflags_c = FilterFlags(target['cflags_c'], set(flags_in_default['cflags_c']))
|
||||
if len(cflags_c) > 0:
|
||||
print(' conlyflags: {0},'.format(FormatList(cflags_c)))
|
||||
if target.has_key('cflags_cc'):
|
||||
cflags_cc = FilterFlags(target['cflags_cc'], set(flags_in_default['cflags_cc']))
|
||||
if len(cflags_cc) > 0:
|
||||
print(' cppflags: {0},'.format(FormatList(cflags_cc)))
|
||||
if target.has_key('ldflags'):
|
||||
ldflags = FilterFlags(target['ldflags'], set(flags_in_default['ldflags']))
|
||||
if len(ldflags) > 0:
|
||||
print(' ldflags: {0},'.format(FormatList(ldflags)))
|
||||
static_libs = []
|
||||
for trg in targets:
|
||||
if trg['type'] == 'static_library' and target['deps'].count(trg['name']) > 0:
|
||||
static_libs.append(FormatName(trg['name']))
|
||||
if len(static_libs) > 0:
|
||||
print(' static_libs: {0},'.format(FormatList(static_libs)))
|
||||
for dep in target['deps']:
|
||||
if FormatName(dep) not in static_libs:
|
||||
#print(' // omitted dep: {0}'.format(dep))
|
||||
pass
|
||||
print('}')
|
||||
return name
|
||||
|
||||
json_file = open(sys.argv[1], "r")
|
||||
targets = json.load(json_file)
|
||||
|
||||
flags_in_default = GenerateDefault(targets)
|
||||
print("\n\n")
|
||||
|
||||
static_libs = []
|
||||
file_groups = []
|
||||
|
||||
for target in targets:
|
||||
typ = target['type']
|
||||
if typ == 'static_library':
|
||||
lib_name = GenerateStaticLib(target, targets, flags_in_default)
|
||||
static_libs.append(lib_name)
|
||||
elif typ == 'source_set':
|
||||
group_name = GenerateSourceSet(target)
|
||||
if len(group_name) > 0:
|
||||
file_groups.append(group_name)
|
||||
elif typ == 'group':
|
||||
GenerateGroup(target)
|
||||
else:
|
||||
print('Unknown type: {0}'.format(typ))
|
||||
print("\n\n")
|
||||
|
||||
print('cc_library_static {')
|
||||
print(' name: "libwebrtc",')
|
||||
print(' defaults: ["webrtc_defaults"],')
|
||||
print(' export_include_dirs: ["."],')
|
||||
print(' whole_static_libs: {0},'.format(FormatList(static_libs + ['libpffft', 'rnnoise_rnn_vad', 'usrsctplib'])))
|
||||
print(' srcs: {0},').format(FormatList([':{0}'.format(x) for x in file_groups]))
|
||||
print('}')
|
||||
39876
android_tools/project.json
Normal file
39876
android_tools/project.json
Normal file
File diff suppressed because one or more lines are too long
79438
android_tools/selected_targets.json
Normal file
79438
android_tools/selected_targets.json
Normal file
File diff suppressed because it is too large
Load Diff
75325
android_tools/sorted_targets.txt
Normal file
75325
android_tools/sorted_targets.txt
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user