blob: 1c907076049e8813ecb6f0b9aba37e5ddf05cc60 [file] [log] [blame]
#!/usr/bin/python
# Copyright (c) 2014 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import fnmatch
import optparse
import os
import sys
import scons_to_gn
TOOLS_DIR = os.path.dirname(__file__)
"""Convert from Scons to GN.
Takes a set of SCONS input files and generates a output file per input, as
well as a global alias file.
"""
def RunTests():
test_path = os.path.abspath(os.path.join(TOOLS_DIR, 'scons_to_gn'))
fail_count = 0
for filename in os.listdir(test_path):
if fnmatch.fnmatch(filename, '*_test.py'):
print 'Testing: ' + filename
filepath = os.path.join(test_path, filename)
val = os.system(sys.executable + ' ' + filepath)
if val:
print 'FAILED: ' + filename
fail_count += 1
print '\n'
def main(argv):
usage = 'usage: %prog [options] <scons files> ...'
parser = optparse.OptionParser(usage)
parser.add_option('-v', '--verbose', dest='verbose',
action='store_true', default=False)
parser.add_option('-t', '--test', dest='test',
action='store_true', default=False)
parser.add_option('-w', '--write', dest='write',
action='store_true', default=False)
options, args = parser.parse_args(argv)
if options.test:
RunTests()
return 0
if len(args) == 0:
parser.error('Expecting list of sources.')
trusted = scons_to_gn.TrustedConditions()
untrusted = scons_to_gn.UntrustedConditions()
for name in args:
if name.endswith('nacl.scons'):
tracker = scons_to_gn.ObjectTracker(name, untrusted)
elif name.endswith('build.scons'):
tracker = scons_to_gn.ObjectTracker(name, trusted)
else:
parser.error('Expecting build.scons and nacl.scons sources.')
if options.write:
outname = os.path.join(os.path.dirname(name), 'BUILD.gn')
with open(outname, 'wt') as outfile:
tracker.Dump(outfile)
else:
tracker.Dump(sys.stdout)
return 0
if __name__ == '__main__':
retval = main(sys.argv[1:])
sys.exit(retval)