Permalink
Browse files

Add support at test for /PROFILE in Ninja

On Windows, have Ninja scan VCLinkerTool to a 'Profile' key.
If 'true', then set the '/PROFILE' switch.

This feature is neede to support syzygy

BUG=126499
TEST=gyptest-ninja-link-flags
Review URL: https://codereview.chromium.org/11304012

git-svn-id: http://gyp.googlecode.com/svn/trunk@1526 78cadc50-ecff-11dd-a971-7dbc132099af
  • Loading branch information...
noelallen@chromium.org
noelallen@chromium.org committed Oct 29, 2012
1 parent 5a42139 commit 1617baef34bf4ffbab60c7578cd05b0fdcb92400
Showing with 88 additions and 0 deletions.
  1. +1 −0 pylib/gyp/msvs_emulation.py
  2. +37 −0 test/win/gyptest-link-profile.py
  3. +50 −0 test/win/linker-flags/profile.gyp
@@ -402,6 +402,7 @@ def GetLdflags(self, config, gyp_to_build_path, expand_special,
ld('IgnoreDefaultLibraryNames', prefix='/NODEFAULTLIB:')
ld('ResourceOnlyDLL', map={'true': '/NOENTRY'})
ld('EntryPointSymbol', prefix='/ENTRY:')
+ ld('Profile', map={ 'true': '/PROFILE'})
# TODO(scottmg): This should sort of be somewhere else (not really a flag).
ld('AdditionalDependencies', prefix='')
# TODO(scottmg): These too.
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2012 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.
+
+"""
+Verifies that the 'Profile' attribute in VCLinker is extracted properly.
+"""
+
+import TestGyp
+
+import os
+import sys
+
+
+if sys.platform == 'win32':
+ test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
+ CHDIR = 'linker-flags'
+ test.run_gyp('profile.gyp', chdir=CHDIR)
+ test.build('profile.gyp', test.ALL, chdir=CHDIR)
+
+ def GetSummary(exe):
+ full_path = test.built_file_path(exe, chdir=CHDIR)
+ return test.run_dumpbin(full_path)
+
+ # '.idata' section will be missing when /PROFILE is enabled.
+ if '.idata' in GetSummary('test_profile_true.exe'):
+ test.fail_test()
+
+ if not '.idata' in GetSummary('test_profile_false.exe'):
+ test.fail_test()
+
+ if not '.idata' in GetSummary('test_profile_default.exe'):
+ test.fail_test()
+
+ test.pass_test()
@@ -0,0 +1,50 @@
+# Copyright (c) 2012 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.
+
+{
+ 'targets': [
+ # Verify that 'Profile' option correctly makes it to LINK steup in Ninja
+ {
+ 'target_name': 'test_profile_true',
+ 'type': 'executable',
+ 'sources': ['hello.cc'],
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'DebugInformationFormat': '3'
+ },
+ 'VCLinkerTool': {
+ 'Profile': 'true',
+ 'GenerateDebugInformation': 'true',
+ },
+ },
+ },
+ {
+ 'target_name': 'test_profile_false',
+ 'type': 'executable',
+ 'sources': ['hello.cc'],
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'DebugInformationFormat': '3'
+ },
+ 'VCLinkerTool': {
+ 'Profile': 'false',
+ 'GenerateDebugInformation': 'true',
+ },
+ },
+ },
+ {
+ 'target_name': 'test_profile_default',
+ 'type': 'executable',
+ 'sources': ['hello.cc'],
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'DebugInformationFormat': '3'
+ },
+ 'VCLinkerTool': {
+ 'GenerateDebugInformation': 'true',
+ },
+ },
+ },
+ ]
+}

0 comments on commit 1617bae

Please sign in to comment.