| #!/usr/bin/env python |
| |
| # Copyright (c) 2013 Google Inc. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """ |
| Make sure LTCG is working properly. |
| """ |
| |
| import TestGyp |
| |
| import sys |
| |
| if sys.platform == 'win32': |
| test = TestGyp.TestGyp(formats=['msvs', 'ninja']) |
| |
| CHDIR = 'linker-flags' |
| test.run_gyp('ltcg.gyp', chdir=CHDIR) |
| |
| # Here we expect LTCG is able to inline functions beyond compile unit. |
| # Note: This marker is embedded in 'inline_test_main.cc' |
| INLINE_MARKER = '==== inlined ====' |
| |
| # link.exe generates following lines when LTCG is enabled. |
| # Note: Future link.exe may or may not generate them. Update as needed. |
| LTCG_LINKER_MESSAGES = ['Generating code', 'Finished generating code'] |
| |
| # test 'LinkTimeCodeGenerationOptionDefault' |
| test.build('ltcg.gyp', 'test_ltcg_off', chdir=CHDIR) |
| test.run_built_executable('test_ltcg_off', chdir=CHDIR) |
| test.must_not_contain_any_line(test.stdout(), [INLINE_MARKER]) |
| |
| # test 'LinkTimeCodeGenerationOptionUse' |
| test.build('ltcg.gyp', 'test_ltcg_on', chdir=CHDIR) |
| if test.format == 'ninja': |
| # Make sure ninja win_tool.py filters out noisy lines. |
| test.must_not_contain_any_line(test.stdout(), LTCG_LINKER_MESSAGES) |
| elif test.format == 'msvs': |
| test.must_contain_any_line(test.stdout(), LTCG_LINKER_MESSAGES) |
| test.run_built_executable('test_ltcg_on', chdir=CHDIR) |
| test.must_contain_any_line(test.stdout(), [INLINE_MARKER]) |
| |
| test.pass_test() |