Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: pylib/gyp/generator/msvs.py

Issue 10378042: Correct the order in which OutputDirectory and IntermediateDirectory are defined. (Closed) Base URL: http://gyp.googlecode.com/svn/trunk/
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright (c) 2012 Google Inc. All rights reserved. 1 # Copyright (c) 2012 Google Inc. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import copy 5 import copy
6 import ntpath 6 import ntpath
7 import os 7 import os
8 import posixpath 8 import posixpath
9 import re 9 import re
10 import subprocess 10 import subprocess
(...skipping 2617 matching lines...) Expand 10 before | Expand all | Expand 10 after
2628 """ 2628 """
2629 if name not in properties: 2629 if name not in properties:
2630 properties[name] = {} 2630 properties[name] = {}
2631 values = properties[name] 2631 values = properties[name]
2632 if value not in values: 2632 if value not in values:
2633 values[value] = [] 2633 values[value] = []
2634 conditions = values[value] 2634 conditions = values[value]
2635 conditions.append(condition) 2635 conditions.append(condition)
2636 2636
2637 2637
2638 MSBUILD_PROPERTY_ORDER = [
gab 2012/05/09 15:27:11 Does this mean we will need to add each new proper
bradn 2012/05/10 01:48:52 So I'm gonna swap this all out for the topological
2639 'OutDir',
2640 'IntDir', # IntDir is usually defined is terms of OutDir so put it later.
gab 2012/05/09 15:27:11 typo: is => in
bradn 2012/05/10 01:48:52 Done.
2641 'TargetName',
2642 'TargetPath',
2643 'ExecutablePath',
2644 ]
2645
2646
2647 def _MSBuildPropertyRank(name):
2648 """Decide a rank for a property name.
2649
2650 Returns:
2651 A numerical value which is lower if a property should be
2652 defined earlier.
2653 Place unknown property names last (as other typically don't
2654 rely on them).
2655 """
2656 try:
2657 return MSBUILD_PROPERTY_ORDER.index(name)
2658 except ValueError:
2659 return len(MSBUILD_PROPERTY_ORDER)
2660
2661
2662 def _CompareMSBuildProperties(a, b):
2663 """Compare two property pairs (name, values).
2664
2665 Order of definition in msbuild matters. In general we don't make
2666 use of properties defined at the same level, but there are exceptions.
2667 This function defines a sort order that is mostly alphabetical,
2668 with a few items that commonly are used in self reference brought to the
2669 front.
2670
2671 Args:
2672 a: (name, values) pair.
2673 b: (name, values) pair.
2674 Returns:
2675 -1, 0, 1 for comparison.
2676 """
2677 result = cmp(_MSBuildPropertyRank(a[0]), _MSBuildPropertyRank(b[0]))
2678 if result != 0:
2679 return result
2680 return cmp(a, b)
2681
2682
2638 def _GetMSBuildPropertyGroup(spec, label, properties): 2683 def _GetMSBuildPropertyGroup(spec, label, properties):
2639 """Returns a PropertyGroup definition for the specified properties. 2684 """Returns a PropertyGroup definition for the specified properties.
2640 2685
2641 Arguments: 2686 Arguments:
2642 spec: The target project dict. 2687 spec: The target project dict.
2643 label: An optional label for the PropertyGroup. 2688 label: An optional label for the PropertyGroup.
2644 properties: The dictionary to be converted. The key is the name of the 2689 properties: The dictionary to be converted. The key is the name of the
2645 property. The value is itself a dictionary; its key is the value and 2690 property. The value is itself a dictionary; its key is the value and
2646 the value a list of condition for which this value is true. 2691 the value a list of condition for which this value is true.
2647 """ 2692 """
2648 group = ['PropertyGroup'] 2693 group = ['PropertyGroup']
2649 if label: 2694 if label:
2650 group.append({'Label': label}) 2695 group.append({'Label': label})
2651 num_configurations = len(spec['configurations']) 2696 num_configurations = len(spec['configurations'])
2652 for name, values in sorted(properties.iteritems()): 2697 for name, values in sorted(properties.iteritems(), _CompareMSBuildProperties):
2653 for value, conditions in sorted(values.iteritems()): 2698 for value, conditions in sorted(values.iteritems()):
2654 if len(conditions) == num_configurations: 2699 if len(conditions) == num_configurations:
2655 # If the value is the same all configurations, 2700 # If the value is the same all configurations,
2656 # just add one unconditional entry. 2701 # just add one unconditional entry.
2657 group.append([name, value]) 2702 group.append([name, value])
2658 else: 2703 else:
2659 for condition in conditions: 2704 for condition in conditions:
2660 group.append([name, {'Condition': condition}, value]) 2705 group.append([name, {'Condition': condition}, value])
2661 return [group] 2706 return [group]
2662 2707
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
3064 action_spec.extend( 3109 action_spec.extend(
3065 # TODO(jeanluc) 'Document' for all or just if as_sources? 3110 # TODO(jeanluc) 'Document' for all or just if as_sources?
3066 [['FileType', 'Document'], 3111 [['FileType', 'Document'],
3067 ['Command', command], 3112 ['Command', command],
3068 ['Message', description], 3113 ['Message', description],
3069 ['Outputs', outputs] 3114 ['Outputs', outputs]
3070 ]) 3115 ])
3071 if additional_inputs: 3116 if additional_inputs:
3072 action_spec.append(['AdditionalInputs', additional_inputs]) 3117 action_spec.append(['AdditionalInputs', additional_inputs])
3073 actions_spec.append(action_spec) 3118 actions_spec.append(action_spec)
OLDNEW
« no previous file with comments | « no previous file | test/msvs/shared_output/common.gypi » ('j') | test/msvs/shared_output/gyptest-shared_output.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698