| Index: tools/clang/scripts/package.py
|
| diff --git a/tools/clang/scripts/package.py b/tools/clang/scripts/package.py
|
| index 85840cdf008db46eb8ee47b2e25a5bb12ad1bfe3..1f2deb4925311cd59b4025078fa1e5310db77413 100755
|
| --- a/tools/clang/scripts/package.py
|
| +++ b/tools/clang/scripts/package.py
|
| @@ -163,6 +163,8 @@ def main():
|
| parser = argparse.ArgumentParser(description='build and package clang')
|
| parser.add_argument('--upload', action='store_true',
|
| help='Upload the target archive to Google Cloud Storage.')
|
| + parser.add_argument('--enable-pgo', action='store_true',
|
| + help='Build clang with GO enabled.')
|
| args = parser.parse_args()
|
|
|
| # Check that the script is not going to upload a toolchain built from HEAD.
|
| @@ -186,8 +188,8 @@ def main():
|
|
|
| # Check if Google Cloud Storage already has the artifacts we want to build.
|
| if (args.upload and GsutilArchiveExists(pdir, platform) and
|
| - not sys.platform.startswith('linux') or
|
| - GsutilArchiveExists(golddir, platform)):
|
| + (not sys.platform.startswith('linux') or
|
| + GsutilArchiveExists(golddir, platform))):
|
| print ('Desired toolchain revision %s is already available '
|
| 'in Google Cloud Storage:') % expected_stamp
|
| print 'gs://chromium-browser-clang-staging/%s/%s.tgz' % (platform, pdir)
|
| @@ -229,11 +231,21 @@ def main():
|
| opt_flags = []
|
| if sys.platform.startswith('linux'):
|
| opt_flags += ['--lto-gold-plugin']
|
| +
|
| + if sys.platform != 'win32' and args.enable_pgo:
|
| + opt_flags += ['--enable-pgo']
|
| + else:
|
| + opt_flags += ['--bootstrap']
|
| +
|
| build_cmd = [sys.executable, os.path.join(THIS_DIR, 'update.py'),
|
| - '--bootstrap', '--force-local-build',
|
| - '--run-tests'] + opt_flags
|
| + '--force-local-build', '--run-tests'] + opt_flags
|
| TeeCmd(build_cmd, log)
|
|
|
| + if args.enable_pgo:
|
| + global LLVM_RELEASE_DIR
|
| + LLVM_RELEASE_DIR = os.path.join(LLVM_RELEASE_DIR, 'tools', 'clang',
|
| + 'stage2-instrumented-bins', 'tools', 'clang', 'stage2-bins')
|
| +
|
| stamp = open(STAMP_FILE).read().rstrip()
|
| if stamp != expected_stamp:
|
| print 'Actual stamp (%s) != expected stamp (%s).' % (stamp, expected_stamp)
|
| @@ -319,7 +331,9 @@ def main():
|
|
|
| # Copy libc++ headers.
|
| if sys.platform == 'darwin':
|
| - shutil.copytree(os.path.join(LLVM_BOOTSTRAP_INSTALL_DIR, 'include', 'c++'),
|
| + install_dir = LLVM_RELEASE_DIR if args.enable_pgo else \
|
| + LLVM_BOOTSTRAP_INSTALL_DIR
|
| + shutil.copytree(os.path.join(install_dir, 'include', 'c++'),
|
| os.path.join(pdir, 'include', 'c++'))
|
|
|
| # Copy buildlog over.
|
|
|