Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gyp, win: teach MSVS generator about MARMASM Items #26020

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions tools/gyp/pylib/gyp/MSVSSettings.py
Expand Up @@ -539,6 +539,7 @@ def _ValidateSettings(validators, settings, stderr):
_lib = _Tool('VCLibrarianTool', 'Lib')
_manifest = _Tool('VCManifestTool', 'Manifest')
_masm = _Tool('MASM', 'MASM')
_armasm = _Tool('ARMASM', 'ARMASM')


_AddTool(_compile)
Expand All @@ -548,6 +549,7 @@ def _ValidateSettings(validators, settings, stderr):
_AddTool(_lib)
_AddTool(_manifest)
_AddTool(_masm)
_AddTool(_armasm)
# Add sections only found in the MSBuild settings.
_msbuild_validators[''] = {}
_msbuild_validators['ProjectReference'] = {}
Expand Down
31 changes: 23 additions & 8 deletions tools/gyp/pylib/gyp/generator/msvs.py
Expand Up @@ -2076,7 +2076,8 @@ def GenerateOutput(target_list, target_dicts, data, params):


def _GenerateMSBuildFiltersFile(filters_path, source_files,
rule_dependencies, extension_to_rule_name):
rule_dependencies, extension_to_rule_name,
platforms):
"""Generate the filters file.

This file is used by Visual Studio to organize the presentation of source
Expand All @@ -2090,7 +2091,8 @@ def _GenerateMSBuildFiltersFile(filters_path, source_files,
filter_group = []
source_group = []
_AppendFiltersForMSBuild('', source_files, rule_dependencies,
extension_to_rule_name, filter_group, source_group)
extension_to_rule_name, platforms,
filter_group, source_group)
if filter_group:
content = ['Project',
{'ToolsVersion': '4.0',
Expand All @@ -2106,7 +2108,7 @@ def _GenerateMSBuildFiltersFile(filters_path, source_files,


def _AppendFiltersForMSBuild(parent_filter_name, sources, rule_dependencies,
extension_to_rule_name,
extension_to_rule_name, platforms,
filter_group, source_group):
"""Creates the list of filters and sources to be added in the filter file.

Expand All @@ -2132,11 +2134,12 @@ def _AppendFiltersForMSBuild(parent_filter_name, sources, rule_dependencies,
# Recurse and add its dependents.
_AppendFiltersForMSBuild(filter_name, source.contents,
rule_dependencies, extension_to_rule_name,
filter_group, source_group)
platforms, filter_group, source_group)
else:
# It's a source. Create a source entry.
_, element = _MapFileToMsBuildSourceType(source, rule_dependencies,
extension_to_rule_name)
extension_to_rule_name,
platforms)
source_entry = [element, {'Include': source}]
# Specify the filter it is part of, if any.
if parent_filter_name:
Expand All @@ -2145,7 +2148,7 @@ def _AppendFiltersForMSBuild(parent_filter_name, sources, rule_dependencies,


def _MapFileToMsBuildSourceType(source, rule_dependencies,
extension_to_rule_name):
extension_to_rule_name, platforms):
"""Returns the group and element type of the source file.

Arguments:
Expand All @@ -2172,6 +2175,9 @@ def _MapFileToMsBuildSourceType(source, rule_dependencies,
elif ext in ['.s', '.asm']:
group = 'masm'
element = 'MASM'
for platform in platforms:
if platform.lower() in ['arm', 'arm64']:
element = 'MARMASM'
elif ext == '.idl':
group = 'midl'
element = 'Midl'
Expand Down Expand Up @@ -3275,7 +3281,8 @@ def _AddSources2(spec, sources, exclusions, grouped_sources,
detail.append(['ForcedIncludeFiles', ''])

group, element = _MapFileToMsBuildSourceType(source, rule_dependencies,
extension_to_rule_name)
extension_to_rule_name,
_GetUniquePlatforms(spec))
grouped_sources[group].append([element, {'Include': source}] + detail)


Expand Down Expand Up @@ -3358,7 +3365,7 @@ def _GenerateMSBuildProject(project, options, version, generator_flags):

_GenerateMSBuildFiltersFile(project.path + '.filters', sources,
rule_dependencies,
extension_to_rule_name)
extension_to_rule_name, _GetUniquePlatforms(spec))
missing_sources = _VerifySourcesExist(sources, project_dir)

for configuration in configurations.itervalues():
Expand All @@ -3378,6 +3385,12 @@ def _GenerateMSBuildProject(project, options, version, generator_flags):
import_masm_targets_section = [
['Import',
{'Project': r'$(VCTargetsPath)\BuildCustomizations\masm.targets'}]]
import_marmasm_props_section = [
['Import',
{'Project': r'$(VCTargetsPath)\BuildCustomizations\marmasm.props'}]]
import_marmasm_targets_section = [
['Import',
{'Project': r'$(VCTargetsPath)\BuildCustomizations\marmasm.targets'}]]
macro_section = [['PropertyGroup', {'Label': 'UserMacros'}]]

content = [
Expand All @@ -3398,6 +3411,7 @@ def _GenerateMSBuildProject(project, options, version, generator_flags):
content += _GetMSBuildLocalProperties(project.msbuild_toolset)
content += import_cpp_props_section
content += import_masm_props_section
content += import_marmasm_props_section
content += _GetMSBuildExtensions(props_files_of_rules)
content += _GetMSBuildPropertySheets(configurations)
content += macro_section
Expand All @@ -3410,6 +3424,7 @@ def _GenerateMSBuildProject(project, options, version, generator_flags):
content += _GetMSBuildProjectReferences(project)
content += import_cpp_targets_section
content += import_masm_targets_section
content += import_marmasm_targets_section
content += _GetMSBuildExtensionTargets(targets_files_of_rules)

if spec.get('msvs_external_builder'):
Expand Down