80 строки
2.7 KiB
Python
Executable File
80 строки
2.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import argparse
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
import platform
|
|
|
|
from lib.config import MIPS64EL_GCC, set_mips64el_env, get_output_dir, \
|
|
SOURCE_ROOT, VENDOR_DIR, DEPOT_TOOLS_DIR, \
|
|
COMPONENTS
|
|
|
|
from lib.ninja import run as run_ninja
|
|
|
|
|
|
def main():
|
|
args = parse_args()
|
|
target_arch = args.target_arch
|
|
|
|
env = os.environ.copy()
|
|
env['PATH'] = os.pathsep.join([DEPOT_TOOLS_DIR, env['PATH']])
|
|
if sys.platform in ['win32', 'cygwin']:
|
|
env['DEPOT_TOOLS_WIN_TOOLCHAIN'] = '0'
|
|
elif target_arch == 'arm64':
|
|
binutils_dir = os.path.join(VENDOR_DIR, 'binutils-aarch64')
|
|
env['LD_LIBRARY_PATH'] = binutils_dir + '/usr/x86_64-linux-gnu/aarch64-linux-gnu/lib'
|
|
env['PATH'] = os.pathsep.join([binutils_dir + '/usr/bin', env['PATH']])
|
|
elif target_arch == 'mips64el':
|
|
set_mips64el_env(env)
|
|
|
|
os.chdir(SOURCE_ROOT)
|
|
|
|
# Build everything by default.
|
|
components_to_build = list(COMPONENTS)
|
|
|
|
if args.debug:
|
|
components_to_build = ['shared_library', 'ffmpeg']
|
|
elif args.release:
|
|
components_to_build = ['static_library', 'ffmpeg']
|
|
elif args.component is not None:
|
|
components_to_build = args.component
|
|
elif "arm" not in target_arch:
|
|
components_to_build.remove('native_mksnapshot')
|
|
|
|
for component in components_to_build:
|
|
out_dir = get_output_dir(SOURCE_ROOT, target_arch, component)
|
|
target = 'libchromiumcontent/chromiumcontent:chromiumcontent'
|
|
if component == 'tests':
|
|
target = 'libchromiumcontent/chromiumcontent:chromiumcontent_tests'
|
|
if component == 'native_mksnapshot':
|
|
target = 'v8:mksnapshot'
|
|
run_ninja(os.path.relpath(out_dir), target=target, env=env)
|
|
|
|
if component == 'static_library':
|
|
subenv = env.copy()
|
|
subenv['CHROMIUMCONTENT_2ND_PASS'] = '1'
|
|
target = 'libchromiumcontent/chromiumcontent:libs'
|
|
run_ninja(os.path.relpath(out_dir), target=target, env=subenv)
|
|
|
|
|
|
def parse_args():
|
|
parser = argparse.ArgumentParser(description='Build libchromiumcontent')
|
|
|
|
parser.add_argument('-t', '--target_arch', default='x64',
|
|
choices=['arm', 'arm64', 'ia32', 'mips64el', 'x64'])
|
|
|
|
what_to_build_group = parser.add_mutually_exclusive_group()
|
|
what_to_build_group.add_argument('-c', '--component', nargs='+', default=None,
|
|
choices=COMPONENTS)
|
|
what_to_build_group.add_argument('-D', '--debug', action='store_true',
|
|
help='Build debug configuration')
|
|
what_to_build_group.add_argument('-R', '--release', action='store_true',
|
|
help='Build release configuration')
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|