summaryrefslogtreecommitdiff
path: root/deps/gyp/test/win/gyptest-link-ltcg.py
diff options
context:
space:
mode:
Diffstat (limited to 'deps/gyp/test/win/gyptest-link-ltcg.py')
-rw-r--r--deps/gyp/test/win/gyptest-link-ltcg.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/deps/gyp/test/win/gyptest-link-ltcg.py b/deps/gyp/test/win/gyptest-link-ltcg.py
new file mode 100644
index 0000000000..5271e099d7
--- /dev/null
+++ b/deps/gyp/test/win/gyptest-link-ltcg.py
@@ -0,0 +1,44 @@
+#!/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()