@@ -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