154d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org#!/usr/bin/env python 254d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org# Copyright (c) 2012 Google Inc. All rights reserved. 354d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org# Use of this source code is governed by a BSD-style license that can be 454d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org# found in the LICENSE file. 554d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org""" 654d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgVerifies that make_global_settings can be used to override the 754d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgcompiler settings. 854d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org""" 954d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 1054d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgimport TestGyp 1154d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgimport os 1254d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgimport copy 1354d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgimport sys 1454d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgfrom string import Template 1554d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 1654d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 1754d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgif sys.platform == 'win32': 1854d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org # cross compiling not support by ninja on windows 1954d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org # and make not supported on windows at all. 2054d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org sys.exit(0) 2154d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 2254d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgtest = TestGyp.TestGyp(formats=['ninja', 'make']) 2354d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 2454d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orggypfile = 'compiler-global-settings.gyp' 2554d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 2654d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgreplacements = { 'PYTHON': '/usr/bin/python', 'PWD': os.getcwd()} 2754d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 2854d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org# Process the .in gyp file to produce the final gyp file 2954d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org# since we need to include absolute paths in the make_global_settings 3054d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org# section. 3154d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgreplacements['TOOLSET'] = 'target' 3254d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgs = Template(open(gypfile + '.in').read()) 3354d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgoutput = open(gypfile, 'w') 3454d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgoutput.write(s.substitute(replacements)) 3554d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgoutput.close() 3654d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 37ad617c17daad58cf225fc030081a2d663552b096thakis@chromium.orgold_env = dict(os.environ) 38ad617c17daad58cf225fc030081a2d663552b096thakis@chromium.orgos.environ['GYP_CROSSCOMPILE'] = '1' 3954d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgtest.run_gyp(gypfile) 40ad617c17daad58cf225fc030081a2d663552b096thakis@chromium.orgos.environ.clear() 41ad617c17daad58cf225fc030081a2d663552b096thakis@chromium.orgos.environ.update(old_env) 42ad617c17daad58cf225fc030081a2d663552b096thakis@chromium.org 4354d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgtest.build(gypfile) 4454d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgtest.must_contain_all_lines(test.stdout(), ['my_cc.py', 'my_cxx.py', 'FOO']) 4554d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 4654d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org# Same again but with the host toolset. 4754d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgreplacements['TOOLSET'] = 'host' 4854d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgs = Template(open(gypfile + '.in').read()) 4954d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgoutput = open(gypfile, 'w') 5054d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgoutput.write(s.substitute(replacements)) 5154d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgoutput.close() 5254d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 53ad617c17daad58cf225fc030081a2d663552b096thakis@chromium.orgold_env = dict(os.environ) 54ad617c17daad58cf225fc030081a2d663552b096thakis@chromium.orgos.environ['GYP_CROSSCOMPILE'] = '1' 5554d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgtest.run_gyp(gypfile) 56ad617c17daad58cf225fc030081a2d663552b096thakis@chromium.orgos.environ.clear() 57ad617c17daad58cf225fc030081a2d663552b096thakis@chromium.orgos.environ.update(old_env) 58ad617c17daad58cf225fc030081a2d663552b096thakis@chromium.org 5954d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgtest.build(gypfile) 6054d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgtest.must_contain_all_lines(test.stdout(), ['my_cc.py', 'my_cxx.py', 'BAR']) 6154d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.org 6222cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.org# Check that CC_host overrides make_global_settings 6322cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.orgold_env = dict(os.environ) 6422cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.orgos.environ['CC_host'] = '%s %s/my_cc.py SECRET' % (replacements['PYTHON'], 6522cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.org replacements['PWD']) 6622cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.orgtest.run_gyp(gypfile) 6722cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.orgos.environ.clear() 6822cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.orgos.environ.update(old_env) 6922cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.org 7022cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.orgtest.build(gypfile) 7122cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.orgtest.must_contain_all_lines(test.stdout(), ['SECRET', 'my_cxx.py', 'BAR']) 7222cb58987910c8486ca89c9ce6f3bf0ba3e4d8fdthakis@chromium.org 7354d2f6fe6d8a7b9d9786bd1f8540df6b4f46b83fsbc@chromium.orgtest.pass_test() 74