Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
gn build: Add gn.py wrapper script that adds --dotfile= and --root= p…
…arameters Since people weren't enthused about moving the .gn file to the toplevel in D56419, here's a script to make gn at least somewhat more pleasant to invoke (useful for gn clean, gn args --list, gn desc, etc). Differential Revision: https://reviews.llvm.org/D56565 llvm-svn: 351064
- Loading branch information
Showing
3 changed files
with
50 additions
and
10 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 |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#!/usr/bin/env python | ||
"""Calls `gn` with the right --dotfile= and --root= arguments for LLVM.""" | ||
|
||
# GN normally expects a file called '.gn' at the root of the repository. | ||
# Since LLVM's GN build isn't supported, putting that file at the root | ||
# is deemed inappropriate, which requires passing --dotfile= and -root= to GN. | ||
# Since that gets old fast, this script automatically passes these arguments. | ||
|
||
import os | ||
import subprocess | ||
import sys | ||
|
||
|
||
THIS_DIR = os.path.dirname(__file__) | ||
ROOT_DIR = os.path.join(THIS_DIR, '..', '..', '..') | ||
|
||
|
||
def main(): | ||
# Find real gn executable. For now, just assume it's on PATH. | ||
# FIXME: Probably need to append '.exe' on Windows. | ||
gn = 'gn' | ||
|
||
# Compute --dotfile= and --root= args to add. | ||
extra_args = [] | ||
gn_main_arg = next((x for x in sys.argv[1:] if not x.startswith('-')), None) | ||
if gn_main_arg != 'help': # `gn help` gets confused by the switches. | ||
cwd = os.getcwd() | ||
dotfile = os.path.relpath(os.path.join(THIS_DIR, '.gn'), cwd) | ||
root = os.path.relpath(ROOT_DIR, cwd) | ||
extra_args = [ '--dotfile=' + dotfile, '--root=' + root ] | ||
|
||
# Run GN command with --dotfile= and --root= added. | ||
cmd = [gn] + extra_args + sys.argv[1:] | ||
sys.exit(subprocess.call(cmd)) | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |