MCPcopy Create free account
hub / github.com/nodejs/node / _GenerateRulesForMSBuild

Function _GenerateRulesForMSBuild

tools/gyp/pylib/gyp/generator/msvs.py:2316–2366  ·  view source on GitHub ↗
(
    output_dir,
    options,
    spec,
    sources,
    excluded_sources,
    props_files_of_rules,
    targets_files_of_rules,
    actions_to_add,
    rule_dependencies,
    extension_to_rule_name,
)

Source from the content-addressed store, hash-verified

2314
2315
2316def _GenerateRulesForMSBuild(
2317 output_dir,
2318 options,
2319 spec,
2320 sources,
2321 excluded_sources,
2322 props_files_of_rules,
2323 targets_files_of_rules,
2324 actions_to_add,
2325 rule_dependencies,
2326 extension_to_rule_name,
2327):
2328 # MSBuild rules are implemented using three files: an XML file, a .targets
2329 # file and a .props file.
2330 # For more details see:
2331 # https://devblogs.microsoft.com/cppblog/quick-help-on-vs2010-custom-build-rule/
2332 rules = spec.get("rules", [])
2333 rules_native = [r for r in rules if not int(r.get("msvs_external_rule", 0))]
2334 rules_external = [r for r in rules if int(r.get("msvs_external_rule", 0))]
2335
2336 msbuild_rules = []
2337 for rule in rules_native:
2338 # Skip a rule with no action and no inputs.
2339 if "action" not in rule and not rule.get("rule_sources", []):
2340 continue
2341 msbuild_rule = MSBuildRule(rule, spec)
2342 msbuild_rules.append(msbuild_rule)
2343 rule_dependencies.update(msbuild_rule.additional_dependencies.split(";"))
2344 extension_to_rule_name[msbuild_rule.extension] = msbuild_rule.rule_name
2345 if msbuild_rules:
2346 base = spec["target_name"] + options.suffix
2347 props_name = base + ".props"
2348 targets_name = base + ".targets"
2349 xml_name = base + ".xml"
2350
2351 props_files_of_rules.add(props_name)
2352 targets_files_of_rules.add(targets_name)
2353
2354 props_path = os.path.join(output_dir, props_name)
2355 targets_path = os.path.join(output_dir, targets_name)
2356 xml_path = os.path.join(output_dir, xml_name)
2357
2358 _GenerateMSBuildRulePropsFile(props_path, msbuild_rules)
2359 _GenerateMSBuildRuleTargetsFile(targets_path, msbuild_rules)
2360 _GenerateMSBuildRuleXmlFile(xml_path, msbuild_rules)
2361
2362 if rules_external:
2363 _GenerateExternalRules(
2364 rules_external, output_dir, spec, sources, options, actions_to_add
2365 )
2366 _AdjustSourcesForRules(rules, sources, excluded_sources, True)
2367
2368
2369class MSBuildRule:

Callers 1

_GenerateMSBuildProjectFunction · 0.85

Calls 13

intFunction · 0.85
MSBuildRuleClass · 0.85
_GenerateExternalRulesFunction · 0.85
_AdjustSourcesForRulesFunction · 0.85
getMethod · 0.65
updateMethod · 0.65
addMethod · 0.65
appendMethod · 0.45
splitMethod · 0.45

Tested by

no test coverage detected