forked from denoland/deno
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Moves 'gn gen' into setup.py Make tools/build.py more ergonomic.
- Loading branch information
Showing
7 changed files
with
122 additions
and
72 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,64 +1,41 @@ | ||
#!/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 third_party import depot_tools_path, third_party_path, fix_symlinks, google_env | ||
from util import root_path, run | ||
import distutils.spawn | ||
import third_party | ||
from util import root_path, run, run_output, build_path | ||
|
||
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() | ||
third_party.fix_symlinks() | ||
|
||
fix_symlinks() | ||
|
||
os.chdir(root_path) | ||
|
||
gn_path = join(depot_tools_path, "gn") | ||
ninja_path = join(depot_tools_path, "ninja") | ||
|
||
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 | ||
print "DENO_BUILD_PATH:", build_path() | ||
if not os.path.isdir(build_path()): | ||
print "DENO_BUILD_PATH does not exist. Run tools/setup.py" | ||
sys.exit(1) | ||
os.chdir(build_path()) | ||
|
||
|
||
# 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] | ||
def maybe_add_default_target(args): | ||
lines = run_output( | ||
[third_party.ninja_path, "-t", "targets"], | ||
env=third_party.google_env(), | ||
quiet=True).split("\n") | ||
targets = [l.rsplit(":", 1)[0] for l in lines] | ||
deno_targets = [target for target in targets if target.startswith(":")] | ||
deno_targets += [target.lstrip(":") for target in deno_targets] | ||
|
||
# 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) | ||
target_specified = False | ||
for a in args: | ||
if a in deno_targets: | ||
target_specified = True | ||
break | ||
if not target_specified: | ||
args += [":all"] | ||
return args | ||
|
||
# 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], env=google_env()) | ||
ninja_args = maybe_add_default_target(sys.argv[1:]) | ||
|
||
target = " ".join(targets) if targets else ":all" | ||
run([ninja_path, "-C", build_path, target], env=google_env()) | ||
run([third_party.ninja_path] + ninja_args, | ||
env=third_party.google_env(), | ||
quiet=True) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#!/usr/bin/env python | ||
import third_party | ||
from util import run, build_path, build_mode | ||
import os | ||
import distutils.spawn | ||
|
||
third_party.fix_symlinks() | ||
third_party.download_gn() | ||
third_party.download_clang() | ||
|
||
|
||
def get_gn_args(): | ||
out = [] | ||
if build_mode() == "release": | ||
out += ["is_official_build=true"] | ||
elif build_mode() == "debug": | ||
pass | ||
else: | ||
print "Bad mode {}. Use 'release' or 'debug' (default)" % build_mode() | ||
sys.exit(1) | ||
if "DENO_BUILD_ARGS" in os.environ: | ||
out += os.environ["DENO_BUILD_ARGS"].split() | ||
|
||
# Check if ccache is in the path, and if so we cc_wrapper. | ||
ccache_path = distutils.spawn.find_executable("ccache") | ||
if ccache_path: | ||
out += [r'cc_wrapper="%s"' % ccache_path] | ||
|
||
print "DENO_BUILD_ARGS:", out | ||
|
||
return out | ||
|
||
|
||
# gn gen. | ||
for mode in ["release", "debug"]: | ||
os.environ["DENO_BUILD_MODE"] = mode | ||
|
||
gn_args = get_gn_args() | ||
|
||
# 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 = os.path.join(build_path(), "args.gn") | ||
if not os.path.exists(args_filename) or gn_args: | ||
with open(args_filename, "w+") as f: | ||
f.write("\n".join(gn_args) + "\n") | ||
|
||
run([third_party.gn_path, "gen", build_path()], | ||
env=third_party.google_env()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters