llvm-project/llvm/utils/gn/gn.py

39 lines
1.3 KiB
Python
Executable File

#!/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()