Skip to content

Commit 96472fa

Browse files
committed
gyp: teach MSVS generator about MARMASM Items
This change allows MSVS projects generated for ARM64 to include ASM files.
1 parent bb8b294 commit 96472fa

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

gyp/pylib/gyp/MSVSSettings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,7 @@ def _ValidateSettings(validators, settings, stderr):
543543
_lib = _Tool('VCLibrarianTool', 'Lib')
544544
_manifest = _Tool('VCManifestTool', 'Manifest')
545545
_masm = _Tool('MASM', 'MASM')
546+
_armasm = _Tool('ARMASM', 'ARMASM')
546547

547548

548549
_AddTool(_compile)
@@ -552,6 +553,7 @@ def _ValidateSettings(validators, settings, stderr):
552553
_AddTool(_lib)
553554
_AddTool(_manifest)
554555
_AddTool(_masm)
556+
_AddTool(_armasm)
555557
# Add sections only found in the MSBuild settings.
556558
_msbuild_validators[''] = {}
557559
_msbuild_validators['ProjectReference'] = {}

gyp/pylib/gyp/generator/msvs.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2037,7 +2037,8 @@ def GenerateOutput(target_list, target_dicts, data, params):
20372037

20382038

20392039
def _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

20692071
def _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

21082111
def _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

Comments
 (0)