mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 08:16:09 +03:00
97 lines
3.2 KiB
Python
97 lines
3.2 KiB
Python
|
#!/usr/bin/env python
|
||
|
# Copyright 2014 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.
|
||
|
|
||
|
# This file isn't officially supported by the Chromium project. It's maintained
|
||
|
# on a best-effort basis by volunteers, so some things may be broken from time
|
||
|
# to time. If you encounter errors, it's most often due to files in base that
|
||
|
# have been added or moved since somebody last tried this script. Generally
|
||
|
# such errors are easy to diagnose.
|
||
|
"""Builds gn and generates Chromium's build files.
|
||
|
|
||
|
This script should only be run from a Chromium tarball. It will not work in a
|
||
|
regular git checkout. In a regular git checkout, a gn binary is pulled via
|
||
|
DEPS. To build gn from source in a regular checkout, see
|
||
|
https://gn.googlesource.com/gn/
|
||
|
"""
|
||
|
|
||
|
# This script may be removed if/when gn becomes available in the standard
|
||
|
# repositories for several mainstream Linux distributions.
|
||
|
|
||
|
import optparse
|
||
|
import os
|
||
|
import shutil
|
||
|
import subprocess
|
||
|
import sys
|
||
|
|
||
|
BOOTSTRAP_DIR = os.path.dirname(os.path.abspath(__file__))
|
||
|
GN_ROOT = os.path.dirname(BOOTSTRAP_DIR)
|
||
|
SRC_ROOT = os.path.dirname(os.path.dirname(GN_ROOT))
|
||
|
|
||
|
|
||
|
def main(argv):
|
||
|
parser = optparse.OptionParser(description=sys.modules[__name__].__doc__)
|
||
|
parser.add_option(
|
||
|
'-d',
|
||
|
'--debug',
|
||
|
action='store_true',
|
||
|
help='Do a debug build. Defaults to release build.')
|
||
|
parser.add_option(
|
||
|
'-o', '--output', help='place output in PATH', metavar='PATH')
|
||
|
parser.add_option('-s', '--no-rebuild', help='ignored')
|
||
|
parser.add_option('--no-clean', help='ignored')
|
||
|
parser.add_option('--gn-gen-args', help='Args to pass to gn gen --args')
|
||
|
parser.add_option(
|
||
|
'--build-path',
|
||
|
help='The directory in which to build gn, '
|
||
|
'relative to the src directory. (eg. out/Release)')
|
||
|
parser.add_option(
|
||
|
'--with-sysroot',
|
||
|
action='store_true',
|
||
|
help='Download and build with the Debian sysroot.')
|
||
|
parser.add_option('-v', '--verbose', help='ignored')
|
||
|
options, args = parser.parse_args(argv)
|
||
|
if args:
|
||
|
parser.error('Unrecognized command line arguments: %s.' % ', '.join(args))
|
||
|
|
||
|
if options.build_path:
|
||
|
build_rel = options.build_path
|
||
|
elif options.debug:
|
||
|
build_rel = os.path.join('out', 'Debug')
|
||
|
else:
|
||
|
build_rel = os.path.join('out', 'Release')
|
||
|
out_dir = os.path.join(SRC_ROOT, build_rel)
|
||
|
gn_path = options.output or os.path.join(out_dir, 'gn')
|
||
|
gn_build_dir = os.path.join(out_dir, 'gn_build')
|
||
|
|
||
|
cmd = [
|
||
|
sys.executable,
|
||
|
os.path.join(GN_ROOT, 'build', 'gen.py'),
|
||
|
'--no-last-commit-position',
|
||
|
'--out-path=' + gn_build_dir,
|
||
|
]
|
||
|
if not options.with_sysroot:
|
||
|
cmd.append('--no-sysroot')
|
||
|
if options.debug:
|
||
|
cmd.append('--debug')
|
||
|
subprocess.check_call(cmd)
|
||
|
|
||
|
shutil.copy2(
|
||
|
os.path.join(BOOTSTRAP_DIR, 'last_commit_position.h'), gn_build_dir)
|
||
|
subprocess.check_call(
|
||
|
['ninja', '-C', gn_build_dir, 'gn', '-w', 'dupbuild=err'])
|
||
|
shutil.copy2(os.path.join(gn_build_dir, 'gn'), gn_path)
|
||
|
|
||
|
gn_gen_args = options.gn_gen_args or ''
|
||
|
if not options.debug:
|
||
|
gn_gen_args += ' is_debug=false'
|
||
|
subprocess.check_call([
|
||
|
gn_path, 'gen', out_dir,
|
||
|
'--args=%s' % gn_gen_args, "--root=" + SRC_ROOT
|
||
|
])
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
sys.exit(main(sys.argv[1:]))
|