| Index: tools/compile_test/compile_test.py
|
| diff --git a/tools/compile_test/compile_test.py b/tools/compile_test/compile_test.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..a52c0720209142af858d656a071ca43328dd3b16
|
| --- /dev/null
|
| +++ b/tools/compile_test/compile_test.py
|
| @@ -0,0 +1,57 @@
|
| +#!/usr/bin/env python
|
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""
|
| +Tries to compile given code, produces different output depending on success.
|
| +
|
| +This is similar to checks done by ./configure scripts.
|
| +"""
|
| +
|
| +
|
| +import optparse
|
| +import os
|
| +import shutil
|
| +import subprocess
|
| +import sys
|
| +import tempfile
|
| +
|
| +
|
| +def DoMain(argv):
|
| + parser = optparse.OptionParser()
|
| + parser.add_option('--code')
|
| + parser.add_option('--on-success', default='')
|
| + parser.add_option('--on-failure', default='')
|
| +
|
| + options, args = parser.parse_args(argv)
|
| +
|
| + if not options.code:
|
| + parser.error('Missing required --code switch.')
|
| +
|
| + cxx = os.environ.get('CXX', 'g++')
|
| +
|
| + tmpdir = tempfile.mkdtemp()
|
| + try:
|
| + cxx_path = os.path.join(tmpdir, 'test.cc')
|
| + with open(cxx_path, 'w') as f:
|
| + f.write(options.code.decode('string-escape'))
|
| +
|
| + o_path = os.path.join(tmpdir, 'test.o')
|
| +
|
| + cxx_popen = subprocess.Popen([cxx, cxx_path, '-o', o_path, '-c'],
|
| + stdout=subprocess.PIPE,
|
| + stderr=subprocess.PIPE)
|
| + cxx_stdout, cxx_stderr = cxx_popen.communicate()
|
| + if cxx_popen.returncode == 0:
|
| + print options.on_success
|
| + else:
|
| + print options.on_failure
|
| + finally:
|
| + shutil.rmtree(tmpdir)
|
| +
|
| + return 0
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(DoMain(sys.argv[1:]))
|
|
|