blob: ab08b52003ad5083f2d2284c94616d2fac819b1c [file] [log] [blame]
brettw@chromium.org67bb8612013-11-08 20:51:40 +00001#!/usr/bin/env python
2# Copyright 2013 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""This script is a wrapper around the GN binary that is pulled from Google
7Cloud Storage when you sync Chrome. The binaries go into platform-specific
8subdirectories in the source tree.
9
10This script makes there be one place for forwarding to the correct platform's
11binary. It will also automatically try to find the gn binary when run inside
12the chrome source tree, so users can just type "gn" on the command line
13(normally depot_tools is on the path)."""
14
nick@chromium.org3ac1c4e2014-01-16 02:44:42 +000015import gclient_utils
brettw@chromium.org67bb8612013-11-08 20:51:40 +000016import os
17import subprocess
18import sys
19
20
brettw@chromium.org67bb8612013-11-08 20:51:40 +000021def RunGN(sourceroot):
22 # The binaries in platform-specific subdirectories in src/tools/gn/bin.
nick@chromium.org3ac1c4e2014-01-16 02:44:42 +000023 gnpath = os.path.join(sourceroot,
24 'tools', 'gn', 'bin', gclient_utils.GetMacWinOrLinux(),
25 'gn' + gclient_utils.GetExeSuffix())
brettw@chromium.org67bb8612013-11-08 20:51:40 +000026 return subprocess.call([gnpath] + sys.argv[1:])
27
28
29def main(args):
dpranke@chromium.orga2a0c572014-03-27 21:44:36 +000030 for arg in sys.argv:
31 if arg.startswith('--root='):
32 sourceroot = arg.replace('--root=', '')
33 dotfile_path = os.path.join(sourceroot, '.gn')
34 if not os.path.exists(dotfile_path):
35 print >> sys.stderr, 'gn.py: "%s" not found, exiting.' % dotfile_path
36 sys.exit(1)
37 return RunGN(sourceroot)
38
nick@chromium.org3ac1c4e2014-01-16 02:44:42 +000039 sourceroot = gclient_utils.FindFileUpwards('.gn')
brettw@chromium.org67bb8612013-11-08 20:51:40 +000040 if not sourceroot:
dpranke@chromium.orga2a0c572014-03-27 21:44:36 +000041 print >> sys.stderr, ('gn.py: No .gn file found in any parent of '
42 'the current path.')
43 print >> sys.stderr, ('\nYou need to either be inside a checkout, '
44 'or use --root to specify the checkout root.')
brettw@chromium.org67bb8612013-11-08 20:51:40 +000045 sys.exit(1)
46 return RunGN(sourceroot)
47
nick@chromium.org3ac1c4e2014-01-16 02:44:42 +000048
brettw@chromium.org67bb8612013-11-08 20:51:40 +000049if __name__ == '__main__':
50 sys.exit(main(sys.argv))