summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-07-24 13:42:23 -0400
committerGitHub <noreply@github.com>2018-07-24 13:42:23 -0400
commit0875411267d62a0fdcaf762657f19082b440fe36 (patch)
treeb9c7e51afd0b93a0eca328b6452bf7c328da95b7 /tools
parent0213053856148379992212b189390f222c6cb460 (diff)
Add tools/build.py (#398)
To allow better tab completion for ./tools/build.py mv build_third_party.py sync_third_party.py
Diffstat (limited to 'tools')
-rwxr-xr-xtools/build.py69
-rwxr-xr-xtools/run_hooks.py16
-rwxr-xr-xtools/sync_third_party.py (renamed from tools/build_third_party.py)0
3 files changed, 77 insertions, 8 deletions
diff --git a/tools/build.py b/tools/build.py
new file mode 100755
index 000000000..fb061eae3
--- /dev/null
+++ b/tools/build.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+# Copyright 2018 the Deno authors. All rights reserved. MIT license.
+import argparse
+import os
+import sys
+from os.path import join
+from util import run
+import distutils.spawn
+
+parser = argparse.ArgumentParser(description='')
+parser.add_argument(
+ '--build_path', default='', help='Directory to build into.')
+parser.add_argument(
+ '--args', default='', help='Specifies build arguments overrides.')
+parser.add_argument(
+ '--mode', default='debug', help='Build configuration: debug, release.')
+options, targets = parser.parse_known_args()
+
+root_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
+third_party_path = join(root_path, "third_party")
+depot_tools_path = join(third_party_path, "depot_tools")
+gn_path = join(depot_tools_path, "gn")
+ninja_path = join(depot_tools_path, "ninja")
+
+# Add third_party/depot_tools to PATH because some google tools (e.g.
+# tool_wrapper, download_from_google_storage) use some google specific python
+# wrapper.
+os.environ["PATH"] = depot_tools_path + os.pathsep + os.environ["PATH"]
+
+os.chdir(root_path)
+
+if options.build_path:
+ build_path = options.build_path
+else:
+ build_path = join(root_path, "out", options.mode)
+
+gn_args = []
+if options.args:
+ gn_args += options.args.split()
+
+if options.mode == "release":
+ gn_args += ["is_official_build=true"]
+elif options.mode == "debug":
+ pass
+else:
+ print "Bad mode {}. Use 'release' or 'debug' (default)" % options.mode
+ sys.exit(1)
+
+# Check if ccache is in the path, and if so we cc_wrapper.
+ccache_path = distutils.spawn.find_executable("ccache")
+if ccache_path:
+ gn_args += [r'cc_wrapper="%s"' % ccache_path]
+
+# mkdir $build_path. We do this so we can write args.gn before running gn gen.
+if not os.path.isdir(build_path):
+ os.makedirs(build_path)
+
+# Rather than using gn gen --args we manually write the args.gn override file.
+# This is to avoid quoting/escaping complications when passing overrides as
+# command-line arguments.
+args_filename = join(build_path, "args.gn")
+if not os.path.exists(args_filename) or options.args:
+ with open(args_filename, "w+") as f:
+ f.write("\n".join(gn_args) + "\n")
+
+run([gn_path, "gen", build_path])
+
+target = " ".join(targets) if targets else ":all"
+run([ninja_path, "-C", build_path, target])
diff --git a/tools/run_hooks.py b/tools/run_hooks.py
index 2ec671186..58178a69c 100755
--- a/tools/run_hooks.py
+++ b/tools/run_hooks.py
@@ -9,14 +9,14 @@ depot_tools_path = os.path.join(third_party_path, "depot_tools")
os.chdir(root_path)
-def download(fn):
+def download(filename):
run([
+ "python",
os.path.join(depot_tools_path + '/download_from_google_storage.py'),
- '--no_resume', '--platform=' + sys.platform, '--no_auth', '--bucket',
- 'chromium-gn', '-s',
- os.path.join(root_path, fn)
- ],
- quiet=True)
+ '--platform=' + sys.platform, '--no_auth', '--bucket=chromium-gn',
+ '--sha1_file',
+ os.path.join(root_path, filename)
+ ])
if sys.platform == 'win32':
@@ -25,5 +25,5 @@ elif sys.platform == 'darwin':
download("third_party/v8/buildtools/mac/gn.sha1")
elif sys.platform.startswith('linux'):
download("third_party/v8/buildtools/linux64/gn.sha1")
-run(['python', 'third_party/v8/tools/clang/scripts/update.py', '--if-needed'],
- quiet=True)
+
+run(['python', 'third_party/v8/tools/clang/scripts/update.py', '--if-needed'])
diff --git a/tools/build_third_party.py b/tools/sync_third_party.py
index f32d669b2..f32d669b2 100755
--- a/tools/build_third_party.py
+++ b/tools/sync_third_party.py