@@ -2037,7 +2037,8 @@ def GenerateOutput(target_list, target_dicts, data, params):
20372037
20382038
20392039def  _GenerateMSBuildFiltersFile (filters_path , source_files ,
2040-                                 rule_dependencies , extension_to_rule_name ):
2040+                                 rule_dependencies , extension_to_rule_name ,
2041+                                 platforms ):
20412042  """Generate the filters file. 
20422043
20432044  This file is used by Visual Studio to organize the presentation of source 
@@ -2051,7 +2052,8 @@ def _GenerateMSBuildFiltersFile(filters_path, source_files,
20512052  filter_group  =  []
20522053  source_group  =  []
20532054  _AppendFiltersForMSBuild ('' , source_files , rule_dependencies ,
2054-                            extension_to_rule_name , filter_group , source_group )
2055+                            extension_to_rule_name , platforms ,
2056+                            filter_group , source_group )
20552057  if  filter_group :
20562058    content  =  ['Project' ,
20572059               {'ToolsVersion' : '4.0' ,
@@ -2067,7 +2069,7 @@ def _GenerateMSBuildFiltersFile(filters_path, source_files,
20672069
20682070
20692071def  _AppendFiltersForMSBuild (parent_filter_name , sources , rule_dependencies ,
2070-                              extension_to_rule_name ,
2072+                              extension_to_rule_name ,  platforms , 
20712073                             filter_group , source_group ):
20722074  """Creates the list of filters and sources to be added in the filter file. 
20732075
@@ -2093,11 +2095,12 @@ def _AppendFiltersForMSBuild(parent_filter_name, sources, rule_dependencies,
20932095      # Recurse and add its dependents. 
20942096      _AppendFiltersForMSBuild (filter_name , source .contents ,
20952097                               rule_dependencies , extension_to_rule_name ,
2096-                                filter_group , source_group )
2098+                                platforms ,  filter_group , source_group )
20972099    else :
20982100      # It's a source.  Create a source entry. 
20992101      _ , element  =  _MapFileToMsBuildSourceType (source , rule_dependencies ,
2100-                                                extension_to_rule_name )
2102+                                                extension_to_rule_name ,
2103+                                                platforms )
21012104      source_entry  =  [element , {'Include' : source }]
21022105      # Specify the filter it is part of, if any. 
21032106      if  parent_filter_name :
@@ -2106,7 +2109,7 @@ def _AppendFiltersForMSBuild(parent_filter_name, sources, rule_dependencies,
21062109
21072110
21082111def  _MapFileToMsBuildSourceType (source , rule_dependencies ,
2109-                                 extension_to_rule_name ):
2112+                                 extension_to_rule_name ,  platforms ):
21102113  """Returns the group and element type of the source file. 
21112114
21122115  Arguments: 
@@ -2132,6 +2135,9 @@ def _MapFileToMsBuildSourceType(source, rule_dependencies,
21322135  elif  ext  ==  '.asm' :
21332136    group  =  'masm' 
21342137    element  =  'MASM' 
2138+     for  platform  in  platforms :
2139+       if  platform .lower () in  ['arm' , 'arm64' ]:
2140+        element  =  'MARMASM' 
21352141  elif  ext  ==  '.idl' :
21362142    group  =  'midl' 
21372143    element  =  'Midl' 
@@ -3225,7 +3231,8 @@ def _AddSources2(spec, sources, exclusions, grouped_sources,
32253231                detail .append (['ForcedIncludeFiles' , '' ])
32263232
32273233        group , element  =  _MapFileToMsBuildSourceType (source , rule_dependencies ,
3228-                                                      extension_to_rule_name )
3234+                                                      extension_to_rule_name ,
3235+                                                      _GetUniquePlatforms (spec ))
32293236        grouped_sources [group ].append ([element , {'Include' : source }] +  detail )
32303237
32313238
@@ -3308,7 +3315,7 @@ def _GenerateMSBuildProject(project, options, version, generator_flags):
33083315
33093316  _GenerateMSBuildFiltersFile (project .path  +  '.filters' , sources ,
33103317                              rule_dependencies ,
3311-                               extension_to_rule_name )
3318+                               extension_to_rule_name ,  _GetUniquePlatforms ( spec ) )
33123319  missing_sources  =  _VerifySourcesExist (sources , project_dir )
33133320
33143321  for  configuration  in  configurations .itervalues ():
@@ -3328,6 +3335,12 @@ def _GenerateMSBuildProject(project, options, version, generator_flags):
33283335  import_masm_targets_section  =  [
33293336      ['Import' ,
33303337        {'Project' : r'$(VCTargetsPath)\BuildCustomizations\masm.targets' }]]
3338+   import_marmasm_props_section  =  [
3339+       ['Import' ,
3340+         {'Project' : r'$(VCTargetsPath)\BuildCustomizations\marmasm.props' }]]
3341+   import_marmasm_targets_section  =  [
3342+       ['Import' ,
3343+         {'Project' : r'$(VCTargetsPath)\BuildCustomizations\marmasm.targets' }]]
33313344  macro_section  =  [['PropertyGroup' , {'Label' : 'UserMacros' }]]
33323345
33333346  content  =  [
@@ -3347,6 +3360,7 @@ def _GenerateMSBuildProject(project, options, version, generator_flags):
33473360   content  +=  _GetMSBuildLocalProperties (project .msbuild_toolset )
33483361  content  +=  import_cpp_props_section 
33493362  content  +=  import_masm_props_section 
3363+   content  +=  import_marmasm_props_section 
33503364  content  +=  _GetMSBuildExtensions (props_files_of_rules )
33513365  content  +=  _GetMSBuildPropertySheets (configurations )
33523366  content  +=  macro_section 
@@ -3359,6 +3373,7 @@ def _GenerateMSBuildProject(project, options, version, generator_flags):
33593373  content  +=  _GetMSBuildProjectReferences (project )
33603374  content  +=  import_cpp_targets_section 
33613375  content  +=  import_masm_targets_section 
3376+   content  +=  import_marmasm_targets_section 
33623377  content  +=  _GetMSBuildExtensionTargets (targets_files_of_rules )
33633378
33643379  if  spec .get ('msvs_external_builder' ):
0 commit comments