source: trip-planner-front/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py@ 6fe77af

Last change on this file since 6fe77af was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 44.5 KB
Line 
1# Copyright (c) 2012 Google Inc. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5r"""Code to validate and convert settings of the Microsoft build tools.
6
7This file contains code to validate and convert settings of the Microsoft
8build tools. The function ConvertToMSBuildSettings(), ValidateMSVSSettings(),
9and ValidateMSBuildSettings() are the entry points.
10
11This file was created by comparing the projects created by Visual Studio 2008
12and Visual Studio 2010 for all available settings through the user interface.
13The MSBuild schemas were also considered. They are typically found in the
14MSBuild install directory, e.g. c:\Program Files (x86)\MSBuild
15"""
16
17from __future__ import print_function
18
19from gyp import string_types
20
21import sys
22import re
23
24# Dictionaries of settings validators. The key is the tool name, the value is
25# a dictionary mapping setting names to validation functions.
26_msvs_validators = {}
27_msbuild_validators = {}
28
29
30# A dictionary of settings converters. The key is the tool name, the value is
31# a dictionary mapping setting names to conversion functions.
32_msvs_to_msbuild_converters = {}
33
34
35# Tool name mapping from MSVS to MSBuild.
36_msbuild_name_of_tool = {}
37
38
39class _Tool(object):
40 """Represents a tool used by MSVS or MSBuild.
41
42 Attributes:
43 msvs_name: The name of the tool in MSVS.
44 msbuild_name: The name of the tool in MSBuild.
45 """
46
47 def __init__(self, msvs_name, msbuild_name):
48 self.msvs_name = msvs_name
49 self.msbuild_name = msbuild_name
50
51
52def _AddTool(tool):
53 """Adds a tool to the four dictionaries used to process settings.
54
55 This only defines the tool. Each setting also needs to be added.
56
57 Args:
58 tool: The _Tool object to be added.
59 """
60 _msvs_validators[tool.msvs_name] = {}
61 _msbuild_validators[tool.msbuild_name] = {}
62 _msvs_to_msbuild_converters[tool.msvs_name] = {}
63 _msbuild_name_of_tool[tool.msvs_name] = tool.msbuild_name
64
65
66def _GetMSBuildToolSettings(msbuild_settings, tool):
67 """Returns an MSBuild tool dictionary. Creates it if needed."""
68 return msbuild_settings.setdefault(tool.msbuild_name, {})
69
70
71class _Type(object):
72 """Type of settings (Base class)."""
73
74 def ValidateMSVS(self, value):
75 """Verifies that the value is legal for MSVS.
76
77 Args:
78 value: the value to check for this type.
79
80 Raises:
81 ValueError if value is not valid for MSVS.
82 """
83
84 def ValidateMSBuild(self, value):
85 """Verifies that the value is legal for MSBuild.
86
87 Args:
88 value: the value to check for this type.
89
90 Raises:
91 ValueError if value is not valid for MSBuild.
92 """
93
94 def ConvertToMSBuild(self, value):
95 """Returns the MSBuild equivalent of the MSVS value given.
96
97 Args:
98 value: the MSVS value to convert.
99
100 Returns:
101 the MSBuild equivalent.
102
103 Raises:
104 ValueError if value is not valid.
105 """
106 return value
107
108
109class _String(_Type):
110 """A setting that's just a string."""
111
112 def ValidateMSVS(self, value):
113 if not isinstance(value, string_types):
114 raise ValueError("expected string; got %r" % value)
115
116 def ValidateMSBuild(self, value):
117 if not isinstance(value, string_types):
118 raise ValueError("expected string; got %r" % value)
119
120 def ConvertToMSBuild(self, value):
121 # Convert the macros
122 return ConvertVCMacrosToMSBuild(value)
123
124
125class _StringList(_Type):
126 """A settings that's a list of strings."""
127
128 def ValidateMSVS(self, value):
129 if not isinstance(value, string_types) and not isinstance(value, list):
130 raise ValueError("expected string list; got %r" % value)
131
132 def ValidateMSBuild(self, value):
133 if not isinstance(value, string_types) and not isinstance(value, list):
134 raise ValueError("expected string list; got %r" % value)
135
136 def ConvertToMSBuild(self, value):
137 # Convert the macros
138 if isinstance(value, list):
139 return [ConvertVCMacrosToMSBuild(i) for i in value]
140 else:
141 return ConvertVCMacrosToMSBuild(value)
142
143
144class _Boolean(_Type):
145 """Boolean settings, can have the values 'false' or 'true'."""
146
147 def _Validate(self, value):
148 if value != "true" and value != "false":
149 raise ValueError("expected bool; got %r" % value)
150
151 def ValidateMSVS(self, value):
152 self._Validate(value)
153
154 def ValidateMSBuild(self, value):
155 self._Validate(value)
156
157 def ConvertToMSBuild(self, value):
158 self._Validate(value)
159 return value
160
161
162class _Integer(_Type):
163 """Integer settings."""
164
165 def __init__(self, msbuild_base=10):
166 _Type.__init__(self)
167 self._msbuild_base = msbuild_base
168
169 def ValidateMSVS(self, value):
170 # Try to convert, this will raise ValueError if invalid.
171 self.ConvertToMSBuild(value)
172
173 def ValidateMSBuild(self, value):
174 # Try to convert, this will raise ValueError if invalid.
175 int(value, self._msbuild_base)
176
177 def ConvertToMSBuild(self, value):
178 msbuild_format = (self._msbuild_base == 10) and "%d" or "0x%04x"
179 return msbuild_format % int(value)
180
181
182class _Enumeration(_Type):
183 """Type of settings that is an enumeration.
184
185 In MSVS, the values are indexes like '0', '1', and '2'.
186 MSBuild uses text labels that are more representative, like 'Win32'.
187
188 Constructor args:
189 label_list: an array of MSBuild labels that correspond to the MSVS index.
190 In the rare cases where MSVS has skipped an index value, None is
191 used in the array to indicate the unused spot.
192 new: an array of labels that are new to MSBuild.
193 """
194
195 def __init__(self, label_list, new=None):
196 _Type.__init__(self)
197 self._label_list = label_list
198 self._msbuild_values = set(value for value in label_list if value is not None)
199 if new is not None:
200 self._msbuild_values.update(new)
201
202 def ValidateMSVS(self, value):
203 # Try to convert. It will raise an exception if not valid.
204 self.ConvertToMSBuild(value)
205
206 def ValidateMSBuild(self, value):
207 if value not in self._msbuild_values:
208 raise ValueError("unrecognized enumerated value %s" % value)
209
210 def ConvertToMSBuild(self, value):
211 index = int(value)
212 if index < 0 or index >= len(self._label_list):
213 raise ValueError(
214 "index value (%d) not in expected range [0, %d)"
215 % (index, len(self._label_list))
216 )
217 label = self._label_list[index]
218 if label is None:
219 raise ValueError("converted value for %s not specified." % value)
220 return label
221
222
223# Instantiate the various generic types.
224_boolean = _Boolean()
225_integer = _Integer()
226# For now, we don't do any special validation on these types:
227_string = _String()
228_file_name = _String()
229_folder_name = _String()
230_file_list = _StringList()
231_folder_list = _StringList()
232_string_list = _StringList()
233# Some boolean settings went from numerical values to boolean. The
234# mapping is 0: default, 1: false, 2: true.
235_newly_boolean = _Enumeration(["", "false", "true"])
236
237
238def _Same(tool, name, setting_type):
239 """Defines a setting that has the same name in MSVS and MSBuild.
240
241 Args:
242 tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
243 name: the name of the setting.
244 setting_type: the type of this setting.
245 """
246 _Renamed(tool, name, name, setting_type)
247
248
249def _Renamed(tool, msvs_name, msbuild_name, setting_type):
250 """Defines a setting for which the name has changed.
251
252 Args:
253 tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
254 msvs_name: the name of the MSVS setting.
255 msbuild_name: the name of the MSBuild setting.
256 setting_type: the type of this setting.
257 """
258
259 def _Translate(value, msbuild_settings):
260 msbuild_tool_settings = _GetMSBuildToolSettings(msbuild_settings, tool)
261 msbuild_tool_settings[msbuild_name] = setting_type.ConvertToMSBuild(value)
262
263 _msvs_validators[tool.msvs_name][msvs_name] = setting_type.ValidateMSVS
264 _msbuild_validators[tool.msbuild_name][msbuild_name] = setting_type.ValidateMSBuild
265 _msvs_to_msbuild_converters[tool.msvs_name][msvs_name] = _Translate
266
267
268def _Moved(tool, settings_name, msbuild_tool_name, setting_type):
269 _MovedAndRenamed(
270 tool, settings_name, msbuild_tool_name, settings_name, setting_type
271 )
272
273
274def _MovedAndRenamed(
275 tool, msvs_settings_name, msbuild_tool_name, msbuild_settings_name, setting_type
276):
277 """Defines a setting that may have moved to a new section.
278
279 Args:
280 tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
281 msvs_settings_name: the MSVS name of the setting.
282 msbuild_tool_name: the name of the MSBuild tool to place the setting under.
283 msbuild_settings_name: the MSBuild name of the setting.
284 setting_type: the type of this setting.
285 """
286
287 def _Translate(value, msbuild_settings):
288 tool_settings = msbuild_settings.setdefault(msbuild_tool_name, {})
289 tool_settings[msbuild_settings_name] = setting_type.ConvertToMSBuild(value)
290
291 _msvs_validators[tool.msvs_name][msvs_settings_name] = setting_type.ValidateMSVS
292 validator = setting_type.ValidateMSBuild
293 _msbuild_validators[msbuild_tool_name][msbuild_settings_name] = validator
294 _msvs_to_msbuild_converters[tool.msvs_name][msvs_settings_name] = _Translate
295
296
297def _MSVSOnly(tool, name, setting_type):
298 """Defines a setting that is only found in MSVS.
299
300 Args:
301 tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
302 name: the name of the setting.
303 setting_type: the type of this setting.
304 """
305
306 def _Translate(unused_value, unused_msbuild_settings):
307 # Since this is for MSVS only settings, no translation will happen.
308 pass
309
310 _msvs_validators[tool.msvs_name][name] = setting_type.ValidateMSVS
311 _msvs_to_msbuild_converters[tool.msvs_name][name] = _Translate
312
313
314def _MSBuildOnly(tool, name, setting_type):
315 """Defines a setting that is only found in MSBuild.
316
317 Args:
318 tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
319 name: the name of the setting.
320 setting_type: the type of this setting.
321 """
322
323 def _Translate(value, msbuild_settings):
324 # Let msbuild-only properties get translated as-is from msvs_settings.
325 tool_settings = msbuild_settings.setdefault(tool.msbuild_name, {})
326 tool_settings[name] = value
327
328 _msbuild_validators[tool.msbuild_name][name] = setting_type.ValidateMSBuild
329 _msvs_to_msbuild_converters[tool.msvs_name][name] = _Translate
330
331
332def _ConvertedToAdditionalOption(tool, msvs_name, flag):
333 """Defines a setting that's handled via a command line option in MSBuild.
334
335 Args:
336 tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
337 msvs_name: the name of the MSVS setting that if 'true' becomes a flag
338 flag: the flag to insert at the end of the AdditionalOptions
339 """
340
341 def _Translate(value, msbuild_settings):
342 if value == "true":
343 tool_settings = _GetMSBuildToolSettings(msbuild_settings, tool)
344 if "AdditionalOptions" in tool_settings:
345 new_flags = "%s %s" % (tool_settings["AdditionalOptions"], flag)
346 else:
347 new_flags = flag
348 tool_settings["AdditionalOptions"] = new_flags
349
350 _msvs_validators[tool.msvs_name][msvs_name] = _boolean.ValidateMSVS
351 _msvs_to_msbuild_converters[tool.msvs_name][msvs_name] = _Translate
352
353
354def _CustomGeneratePreprocessedFile(tool, msvs_name):
355 def _Translate(value, msbuild_settings):
356 tool_settings = _GetMSBuildToolSettings(msbuild_settings, tool)
357 if value == "0":
358 tool_settings["PreprocessToFile"] = "false"
359 tool_settings["PreprocessSuppressLineNumbers"] = "false"
360 elif value == "1": # /P
361 tool_settings["PreprocessToFile"] = "true"
362 tool_settings["PreprocessSuppressLineNumbers"] = "false"
363 elif value == "2": # /EP /P
364 tool_settings["PreprocessToFile"] = "true"
365 tool_settings["PreprocessSuppressLineNumbers"] = "true"
366 else:
367 raise ValueError("value must be one of [0, 1, 2]; got %s" % value)
368
369 # Create a bogus validator that looks for '0', '1', or '2'
370 msvs_validator = _Enumeration(["a", "b", "c"]).ValidateMSVS
371 _msvs_validators[tool.msvs_name][msvs_name] = msvs_validator
372 msbuild_validator = _boolean.ValidateMSBuild
373 msbuild_tool_validators = _msbuild_validators[tool.msbuild_name]
374 msbuild_tool_validators["PreprocessToFile"] = msbuild_validator
375 msbuild_tool_validators["PreprocessSuppressLineNumbers"] = msbuild_validator
376 _msvs_to_msbuild_converters[tool.msvs_name][msvs_name] = _Translate
377
378
379fix_vc_macro_slashes_regex_list = ("IntDir", "OutDir")
380fix_vc_macro_slashes_regex = re.compile(
381 r"(\$\((?:%s)\))(?:[\\/]+)" % "|".join(fix_vc_macro_slashes_regex_list)
382)
383
384# Regular expression to detect keys that were generated by exclusion lists
385_EXCLUDED_SUFFIX_RE = re.compile("^(.*)_excluded$")
386
387
388def _ValidateExclusionSetting(setting, settings, error_msg, stderr=sys.stderr):
389 """Verify that 'setting' is valid if it is generated from an exclusion list.
390
391 If the setting appears to be generated from an exclusion list, the root name
392 is checked.
393
394 Args:
395 setting: A string that is the setting name to validate
396 settings: A dictionary where the keys are valid settings
397 error_msg: The message to emit in the event of error
398 stderr: The stream receiving the error messages.
399 """
400 # This may be unrecognized because it's an exclusion list. If the
401 # setting name has the _excluded suffix, then check the root name.
402 unrecognized = True
403 m = re.match(_EXCLUDED_SUFFIX_RE, setting)
404 if m:
405 root_setting = m.group(1)
406 unrecognized = root_setting not in settings
407
408 if unrecognized:
409 # We don't know this setting. Give a warning.
410 print(error_msg, file=stderr)
411
412
413def FixVCMacroSlashes(s):
414 """Replace macros which have excessive following slashes.
415
416 These macros are known to have a built-in trailing slash. Furthermore, many
417 scripts hiccup on processing paths with extra slashes in the middle.
418
419 This list is probably not exhaustive. Add as needed.
420 """
421 if "$" in s:
422 s = fix_vc_macro_slashes_regex.sub(r"\1", s)
423 return s
424
425
426def ConvertVCMacrosToMSBuild(s):
427 """Convert the MSVS macros found in the string to the MSBuild equivalent.
428
429 This list is probably not exhaustive. Add as needed.
430 """
431 if "$" in s:
432 replace_map = {
433 "$(ConfigurationName)": "$(Configuration)",
434 "$(InputDir)": "%(RelativeDir)",
435 "$(InputExt)": "%(Extension)",
436 "$(InputFileName)": "%(Filename)%(Extension)",
437 "$(InputName)": "%(Filename)",
438 "$(InputPath)": "%(Identity)",
439 "$(ParentName)": "$(ProjectFileName)",
440 "$(PlatformName)": "$(Platform)",
441 "$(SafeInputName)": "%(Filename)",
442 }
443 for old, new in replace_map.items():
444 s = s.replace(old, new)
445 s = FixVCMacroSlashes(s)
446 return s
447
448
449def ConvertToMSBuildSettings(msvs_settings, stderr=sys.stderr):
450 """Converts MSVS settings (VS2008 and earlier) to MSBuild settings (VS2010+).
451
452 Args:
453 msvs_settings: A dictionary. The key is the tool name. The values are
454 themselves dictionaries of settings and their values.
455 stderr: The stream receiving the error messages.
456
457 Returns:
458 A dictionary of MSBuild settings. The key is either the MSBuild tool name
459 or the empty string (for the global settings). The values are themselves
460 dictionaries of settings and their values.
461 """
462 msbuild_settings = {}
463 for msvs_tool_name, msvs_tool_settings in msvs_settings.items():
464 if msvs_tool_name in _msvs_to_msbuild_converters:
465 msvs_tool = _msvs_to_msbuild_converters[msvs_tool_name]
466 for msvs_setting, msvs_value in msvs_tool_settings.items():
467 if msvs_setting in msvs_tool:
468 # Invoke the translation function.
469 try:
470 msvs_tool[msvs_setting](msvs_value, msbuild_settings)
471 except ValueError as e:
472 print(
473 "Warning: while converting %s/%s to MSBuild, "
474 "%s" % (msvs_tool_name, msvs_setting, e),
475 file=stderr,
476 )
477 else:
478 _ValidateExclusionSetting(
479 msvs_setting,
480 msvs_tool,
481 (
482 "Warning: unrecognized setting %s/%s "
483 "while converting to MSBuild."
484 % (msvs_tool_name, msvs_setting)
485 ),
486 stderr,
487 )
488 else:
489 print(
490 "Warning: unrecognized tool %s while converting to "
491 "MSBuild." % msvs_tool_name,
492 file=stderr,
493 )
494 return msbuild_settings
495
496
497def ValidateMSVSSettings(settings, stderr=sys.stderr):
498 """Validates that the names of the settings are valid for MSVS.
499
500 Args:
501 settings: A dictionary. The key is the tool name. The values are
502 themselves dictionaries of settings and their values.
503 stderr: The stream receiving the error messages.
504 """
505 _ValidateSettings(_msvs_validators, settings, stderr)
506
507
508def ValidateMSBuildSettings(settings, stderr=sys.stderr):
509 """Validates that the names of the settings are valid for MSBuild.
510
511 Args:
512 settings: A dictionary. The key is the tool name. The values are
513 themselves dictionaries of settings and their values.
514 stderr: The stream receiving the error messages.
515 """
516 _ValidateSettings(_msbuild_validators, settings, stderr)
517
518
519def _ValidateSettings(validators, settings, stderr):
520 """Validates that the settings are valid for MSBuild or MSVS.
521
522 We currently only validate the names of the settings, not their values.
523
524 Args:
525 validators: A dictionary of tools and their validators.
526 settings: A dictionary. The key is the tool name. The values are
527 themselves dictionaries of settings and their values.
528 stderr: The stream receiving the error messages.
529 """
530 for tool_name in settings:
531 if tool_name in validators:
532 tool_validators = validators[tool_name]
533 for setting, value in settings[tool_name].items():
534 if setting in tool_validators:
535 try:
536 tool_validators[setting](value)
537 except ValueError as e:
538 print(
539 "Warning: for %s/%s, %s" % (tool_name, setting, e),
540 file=stderr,
541 )
542 else:
543 _ValidateExclusionSetting(
544 setting,
545 tool_validators,
546 ("Warning: unrecognized setting %s/%s" % (tool_name, setting)),
547 stderr,
548 )
549
550 else:
551 print("Warning: unrecognized tool %s" % (tool_name), file=stderr)
552
553
554# MSVS and MBuild names of the tools.
555_compile = _Tool("VCCLCompilerTool", "ClCompile")
556_link = _Tool("VCLinkerTool", "Link")
557_midl = _Tool("VCMIDLTool", "Midl")
558_rc = _Tool("VCResourceCompilerTool", "ResourceCompile")
559_lib = _Tool("VCLibrarianTool", "Lib")
560_manifest = _Tool("VCManifestTool", "Manifest")
561_masm = _Tool("MASM", "MASM")
562_armasm = _Tool("ARMASM", "ARMASM")
563
564
565_AddTool(_compile)
566_AddTool(_link)
567_AddTool(_midl)
568_AddTool(_rc)
569_AddTool(_lib)
570_AddTool(_manifest)
571_AddTool(_masm)
572_AddTool(_armasm)
573# Add sections only found in the MSBuild settings.
574_msbuild_validators[""] = {}
575_msbuild_validators["ProjectReference"] = {}
576_msbuild_validators["ManifestResourceCompile"] = {}
577
578# Descriptions of the compiler options, i.e. VCCLCompilerTool in MSVS and
579# ClCompile in MSBuild.
580# See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\cl.xml" for
581# the schema of the MSBuild ClCompile settings.
582
583# Options that have the same name in MSVS and MSBuild
584_Same(_compile, "AdditionalIncludeDirectories", _folder_list) # /I
585_Same(_compile, "AdditionalOptions", _string_list)
586_Same(_compile, "AdditionalUsingDirectories", _folder_list) # /AI
587_Same(_compile, "AssemblerListingLocation", _file_name) # /Fa
588_Same(_compile, "BrowseInformationFile", _file_name)
589_Same(_compile, "BufferSecurityCheck", _boolean) # /GS
590_Same(_compile, "DisableLanguageExtensions", _boolean) # /Za
591_Same(_compile, "DisableSpecificWarnings", _string_list) # /wd
592_Same(_compile, "EnableFiberSafeOptimizations", _boolean) # /GT
593_Same(_compile, "EnablePREfast", _boolean) # /analyze Visible='false'
594_Same(_compile, "ExpandAttributedSource", _boolean) # /Fx
595_Same(_compile, "FloatingPointExceptions", _boolean) # /fp:except
596_Same(_compile, "ForceConformanceInForLoopScope", _boolean) # /Zc:forScope
597_Same(_compile, "ForcedIncludeFiles", _file_list) # /FI
598_Same(_compile, "ForcedUsingFiles", _file_list) # /FU
599_Same(_compile, "GenerateXMLDocumentationFiles", _boolean) # /doc
600_Same(_compile, "IgnoreStandardIncludePath", _boolean) # /X
601_Same(_compile, "MinimalRebuild", _boolean) # /Gm
602_Same(_compile, "OmitDefaultLibName", _boolean) # /Zl
603_Same(_compile, "OmitFramePointers", _boolean) # /Oy
604_Same(_compile, "PreprocessorDefinitions", _string_list) # /D
605_Same(_compile, "ProgramDataBaseFileName", _file_name) # /Fd
606_Same(_compile, "RuntimeTypeInfo", _boolean) # /GR
607_Same(_compile, "ShowIncludes", _boolean) # /showIncludes
608_Same(_compile, "SmallerTypeCheck", _boolean) # /RTCc
609_Same(_compile, "StringPooling", _boolean) # /GF
610_Same(_compile, "SuppressStartupBanner", _boolean) # /nologo
611_Same(_compile, "TreatWChar_tAsBuiltInType", _boolean) # /Zc:wchar_t
612_Same(_compile, "UndefineAllPreprocessorDefinitions", _boolean) # /u
613_Same(_compile, "UndefinePreprocessorDefinitions", _string_list) # /U
614_Same(_compile, "UseFullPaths", _boolean) # /FC
615_Same(_compile, "WholeProgramOptimization", _boolean) # /GL
616_Same(_compile, "XMLDocumentationFileName", _file_name)
617_Same(_compile, "CompileAsWinRT", _boolean) # /ZW
618
619_Same(
620 _compile,
621 "AssemblerOutput",
622 _Enumeration(
623 [
624 "NoListing",
625 "AssemblyCode", # /FA
626 "All", # /FAcs
627 "AssemblyAndMachineCode", # /FAc
628 "AssemblyAndSourceCode",
629 ]
630 ),
631) # /FAs
632_Same(
633 _compile,
634 "BasicRuntimeChecks",
635 _Enumeration(
636 [
637 "Default",
638 "StackFrameRuntimeCheck", # /RTCs
639 "UninitializedLocalUsageCheck", # /RTCu
640 "EnableFastChecks",
641 ]
642 ),
643) # /RTC1
644_Same(
645 _compile, "BrowseInformation", _Enumeration(["false", "true", "true"]) # /FR
646) # /Fr
647_Same(
648 _compile,
649 "CallingConvention",
650 _Enumeration(["Cdecl", "FastCall", "StdCall", "VectorCall"]), # /Gd # /Gr # /Gz
651) # /Gv
652_Same(
653 _compile,
654 "CompileAs",
655 _Enumeration(["Default", "CompileAsC", "CompileAsCpp"]), # /TC
656) # /TP
657_Same(
658 _compile,
659 "DebugInformationFormat",
660 _Enumeration(
661 [
662 "", # Disabled
663 "OldStyle", # /Z7
664 None,
665 "ProgramDatabase", # /Zi
666 "EditAndContinue",
667 ]
668 ),
669) # /ZI
670_Same(
671 _compile,
672 "EnableEnhancedInstructionSet",
673 _Enumeration(
674 [
675 "NotSet",
676 "StreamingSIMDExtensions", # /arch:SSE
677 "StreamingSIMDExtensions2", # /arch:SSE2
678 "AdvancedVectorExtensions", # /arch:AVX (vs2012+)
679 "NoExtensions", # /arch:IA32 (vs2012+)
680 # This one only exists in the new msbuild format.
681 "AdvancedVectorExtensions2", # /arch:AVX2 (vs2013r2+)
682 ]
683 ),
684)
685_Same(
686 _compile,
687 "ErrorReporting",
688 _Enumeration(
689 [
690 "None", # /errorReport:none
691 "Prompt", # /errorReport:prompt
692 "Queue",
693 ], # /errorReport:queue
694 new=["Send"],
695 ),
696) # /errorReport:send"
697_Same(
698 _compile,
699 "ExceptionHandling",
700 _Enumeration(["false", "Sync", "Async"], new=["SyncCThrow"]), # /EHsc # /EHa
701) # /EHs
702_Same(
703 _compile, "FavorSizeOrSpeed", _Enumeration(["Neither", "Speed", "Size"]) # /Ot
704) # /Os
705_Same(
706 _compile,
707 "FloatingPointModel",
708 _Enumeration(["Precise", "Strict", "Fast"]), # /fp:precise # /fp:strict
709) # /fp:fast
710_Same(
711 _compile,
712 "InlineFunctionExpansion",
713 _Enumeration(
714 ["Default", "OnlyExplicitInline", "AnySuitable"], # /Ob1 # /Ob2
715 new=["Disabled"],
716 ),
717) # /Ob0
718_Same(
719 _compile,
720 "Optimization",
721 _Enumeration(["Disabled", "MinSpace", "MaxSpeed", "Full"]), # /Od # /O1 # /O2
722) # /Ox
723_Same(
724 _compile,
725 "RuntimeLibrary",
726 _Enumeration(
727 [
728 "MultiThreaded", # /MT
729 "MultiThreadedDebug", # /MTd
730 "MultiThreadedDLL", # /MD
731 "MultiThreadedDebugDLL",
732 ]
733 ),
734) # /MDd
735_Same(
736 _compile,
737 "StructMemberAlignment",
738 _Enumeration(
739 [
740 "Default",
741 "1Byte", # /Zp1
742 "2Bytes", # /Zp2
743 "4Bytes", # /Zp4
744 "8Bytes", # /Zp8
745 "16Bytes",
746 ]
747 ),
748) # /Zp16
749_Same(
750 _compile,
751 "WarningLevel",
752 _Enumeration(
753 [
754 "TurnOffAllWarnings", # /W0
755 "Level1", # /W1
756 "Level2", # /W2
757 "Level3", # /W3
758 "Level4",
759 ], # /W4
760 new=["EnableAllWarnings"],
761 ),
762) # /Wall
763
764# Options found in MSVS that have been renamed in MSBuild.
765_Renamed(
766 _compile, "EnableFunctionLevelLinking", "FunctionLevelLinking", _boolean
767) # /Gy
768_Renamed(_compile, "EnableIntrinsicFunctions", "IntrinsicFunctions", _boolean) # /Oi
769_Renamed(_compile, "KeepComments", "PreprocessKeepComments", _boolean) # /C
770_Renamed(_compile, "ObjectFile", "ObjectFileName", _file_name) # /Fo
771_Renamed(_compile, "OpenMP", "OpenMPSupport", _boolean) # /openmp
772_Renamed(
773 _compile, "PrecompiledHeaderThrough", "PrecompiledHeaderFile", _file_name
774) # Used with /Yc and /Yu
775_Renamed(
776 _compile, "PrecompiledHeaderFile", "PrecompiledHeaderOutputFile", _file_name
777) # /Fp
778_Renamed(
779 _compile,
780 "UsePrecompiledHeader",
781 "PrecompiledHeader",
782 _Enumeration(
783 ["NotUsing", "Create", "Use"] # VS recognized '' for this value too. # /Yc
784 ),
785) # /Yu
786_Renamed(_compile, "WarnAsError", "TreatWarningAsError", _boolean) # /WX
787
788_ConvertedToAdditionalOption(_compile, "DefaultCharIsUnsigned", "/J")
789
790# MSVS options not found in MSBuild.
791_MSVSOnly(_compile, "Detect64BitPortabilityProblems", _boolean)
792_MSVSOnly(_compile, "UseUnicodeResponseFiles", _boolean)
793
794# MSBuild options not found in MSVS.
795_MSBuildOnly(_compile, "BuildingInIDE", _boolean)
796_MSBuildOnly(
797 _compile, "CompileAsManaged", _Enumeration([], new=["false", "true"])
798) # /clr
799_MSBuildOnly(_compile, "CreateHotpatchableImage", _boolean) # /hotpatch
800_MSBuildOnly(_compile, "MultiProcessorCompilation", _boolean) # /MP
801_MSBuildOnly(_compile, "PreprocessOutputPath", _string) # /Fi
802_MSBuildOnly(_compile, "ProcessorNumber", _integer) # the number of processors
803_MSBuildOnly(_compile, "TrackerLogDirectory", _folder_name)
804_MSBuildOnly(_compile, "TreatSpecificWarningsAsErrors", _string_list) # /we
805_MSBuildOnly(_compile, "UseUnicodeForAssemblerListing", _boolean) # /FAu
806
807# Defines a setting that needs very customized processing
808_CustomGeneratePreprocessedFile(_compile, "GeneratePreprocessedFile")
809
810
811# Directives for converting MSVS VCLinkerTool to MSBuild Link.
812# See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\link.xml" for
813# the schema of the MSBuild Link settings.
814
815# Options that have the same name in MSVS and MSBuild
816_Same(_link, "AdditionalDependencies", _file_list)
817_Same(_link, "AdditionalLibraryDirectories", _folder_list) # /LIBPATH
818# /MANIFESTDEPENDENCY:
819_Same(_link, "AdditionalManifestDependencies", _file_list)
820_Same(_link, "AdditionalOptions", _string_list)
821_Same(_link, "AddModuleNamesToAssembly", _file_list) # /ASSEMBLYMODULE
822_Same(_link, "AllowIsolation", _boolean) # /ALLOWISOLATION
823_Same(_link, "AssemblyLinkResource", _file_list) # /ASSEMBLYLINKRESOURCE
824_Same(_link, "BaseAddress", _string) # /BASE
825_Same(_link, "CLRUnmanagedCodeCheck", _boolean) # /CLRUNMANAGEDCODECHECK
826_Same(_link, "DelayLoadDLLs", _file_list) # /DELAYLOAD
827_Same(_link, "DelaySign", _boolean) # /DELAYSIGN
828_Same(_link, "EmbedManagedResourceFile", _file_list) # /ASSEMBLYRESOURCE
829_Same(_link, "EnableUAC", _boolean) # /MANIFESTUAC
830_Same(_link, "EntryPointSymbol", _string) # /ENTRY
831_Same(_link, "ForceSymbolReferences", _file_list) # /INCLUDE
832_Same(_link, "FunctionOrder", _file_name) # /ORDER
833_Same(_link, "GenerateDebugInformation", _boolean) # /DEBUG
834_Same(_link, "GenerateMapFile", _boolean) # /MAP
835_Same(_link, "HeapCommitSize", _string)
836_Same(_link, "HeapReserveSize", _string) # /HEAP
837_Same(_link, "IgnoreAllDefaultLibraries", _boolean) # /NODEFAULTLIB
838_Same(_link, "IgnoreEmbeddedIDL", _boolean) # /IGNOREIDL
839_Same(_link, "ImportLibrary", _file_name) # /IMPLIB
840_Same(_link, "KeyContainer", _file_name) # /KEYCONTAINER
841_Same(_link, "KeyFile", _file_name) # /KEYFILE
842_Same(_link, "ManifestFile", _file_name) # /ManifestFile
843_Same(_link, "MapExports", _boolean) # /MAPINFO:EXPORTS
844_Same(_link, "MapFileName", _file_name)
845_Same(_link, "MergedIDLBaseFileName", _file_name) # /IDLOUT
846_Same(_link, "MergeSections", _string) # /MERGE
847_Same(_link, "MidlCommandFile", _file_name) # /MIDL
848_Same(_link, "ModuleDefinitionFile", _file_name) # /DEF
849_Same(_link, "OutputFile", _file_name) # /OUT
850_Same(_link, "PerUserRedirection", _boolean)
851_Same(_link, "Profile", _boolean) # /PROFILE
852_Same(_link, "ProfileGuidedDatabase", _file_name) # /PGD
853_Same(_link, "ProgramDatabaseFile", _file_name) # /PDB
854_Same(_link, "RegisterOutput", _boolean)
855_Same(_link, "SetChecksum", _boolean) # /RELEASE
856_Same(_link, "StackCommitSize", _string)
857_Same(_link, "StackReserveSize", _string) # /STACK
858_Same(_link, "StripPrivateSymbols", _file_name) # /PDBSTRIPPED
859_Same(_link, "SupportUnloadOfDelayLoadedDLL", _boolean) # /DELAY:UNLOAD
860_Same(_link, "SuppressStartupBanner", _boolean) # /NOLOGO
861_Same(_link, "SwapRunFromCD", _boolean) # /SWAPRUN:CD
862_Same(_link, "TurnOffAssemblyGeneration", _boolean) # /NOASSEMBLY
863_Same(_link, "TypeLibraryFile", _file_name) # /TLBOUT
864_Same(_link, "TypeLibraryResourceID", _integer) # /TLBID
865_Same(_link, "UACUIAccess", _boolean) # /uiAccess='true'
866_Same(_link, "Version", _string) # /VERSION
867
868_Same(_link, "EnableCOMDATFolding", _newly_boolean) # /OPT:ICF
869_Same(_link, "FixedBaseAddress", _newly_boolean) # /FIXED
870_Same(_link, "LargeAddressAware", _newly_boolean) # /LARGEADDRESSAWARE
871_Same(_link, "OptimizeReferences", _newly_boolean) # /OPT:REF
872_Same(_link, "RandomizedBaseAddress", _newly_boolean) # /DYNAMICBASE
873_Same(_link, "TerminalServerAware", _newly_boolean) # /TSAWARE
874
875_subsystem_enumeration = _Enumeration(
876 [
877 "NotSet",
878 "Console", # /SUBSYSTEM:CONSOLE
879 "Windows", # /SUBSYSTEM:WINDOWS
880 "Native", # /SUBSYSTEM:NATIVE
881 "EFI Application", # /SUBSYSTEM:EFI_APPLICATION
882 "EFI Boot Service Driver", # /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER
883 "EFI ROM", # /SUBSYSTEM:EFI_ROM
884 "EFI Runtime", # /SUBSYSTEM:EFI_RUNTIME_DRIVER
885 "WindowsCE",
886 ], # /SUBSYSTEM:WINDOWSCE
887 new=["POSIX"],
888) # /SUBSYSTEM:POSIX
889
890_target_machine_enumeration = _Enumeration(
891 [
892 "NotSet",
893 "MachineX86", # /MACHINE:X86
894 None,
895 "MachineARM", # /MACHINE:ARM
896 "MachineEBC", # /MACHINE:EBC
897 "MachineIA64", # /MACHINE:IA64
898 None,
899 "MachineMIPS", # /MACHINE:MIPS
900 "MachineMIPS16", # /MACHINE:MIPS16
901 "MachineMIPSFPU", # /MACHINE:MIPSFPU
902 "MachineMIPSFPU16", # /MACHINE:MIPSFPU16
903 None,
904 None,
905 None,
906 "MachineSH4", # /MACHINE:SH4
907 None,
908 "MachineTHUMB", # /MACHINE:THUMB
909 "MachineX64",
910 ]
911) # /MACHINE:X64
912
913_Same(
914 _link, "AssemblyDebug", _Enumeration(["", "true", "false"]) # /ASSEMBLYDEBUG
915) # /ASSEMBLYDEBUG:DISABLE
916_Same(
917 _link,
918 "CLRImageType",
919 _Enumeration(
920 [
921 "Default",
922 "ForceIJWImage", # /CLRIMAGETYPE:IJW
923 "ForcePureILImage", # /Switch="CLRIMAGETYPE:PURE
924 "ForceSafeILImage",
925 ]
926 ),
927) # /Switch="CLRIMAGETYPE:SAFE
928_Same(
929 _link,
930 "CLRThreadAttribute",
931 _Enumeration(
932 [
933 "DefaultThreadingAttribute", # /CLRTHREADATTRIBUTE:NONE
934 "MTAThreadingAttribute", # /CLRTHREADATTRIBUTE:MTA
935 "STAThreadingAttribute",
936 ]
937 ),
938) # /CLRTHREADATTRIBUTE:STA
939_Same(
940 _link,
941 "DataExecutionPrevention",
942 _Enumeration(["", "false", "true"]), # /NXCOMPAT:NO
943) # /NXCOMPAT
944_Same(
945 _link,
946 "Driver",
947 _Enumeration(["NotSet", "Driver", "UpOnly", "WDM"]), # /Driver # /DRIVER:UPONLY
948) # /DRIVER:WDM
949_Same(
950 _link,
951 "LinkTimeCodeGeneration",
952 _Enumeration(
953 [
954 "Default",
955 "UseLinkTimeCodeGeneration", # /LTCG
956 "PGInstrument", # /LTCG:PGInstrument
957 "PGOptimization", # /LTCG:PGOptimize
958 "PGUpdate",
959 ]
960 ),
961) # /LTCG:PGUpdate
962_Same(
963 _link,
964 "ShowProgress",
965 _Enumeration(
966 ["NotSet", "LinkVerbose", "LinkVerboseLib"], # /VERBOSE # /VERBOSE:Lib
967 new=[
968 "LinkVerboseICF", # /VERBOSE:ICF
969 "LinkVerboseREF", # /VERBOSE:REF
970 "LinkVerboseSAFESEH", # /VERBOSE:SAFESEH
971 "LinkVerboseCLR",
972 ],
973 ),
974) # /VERBOSE:CLR
975_Same(_link, "SubSystem", _subsystem_enumeration)
976_Same(_link, "TargetMachine", _target_machine_enumeration)
977_Same(
978 _link,
979 "UACExecutionLevel",
980 _Enumeration(
981 [
982 "AsInvoker", # /level='asInvoker'
983 "HighestAvailable", # /level='highestAvailable'
984 "RequireAdministrator",
985 ]
986 ),
987) # /level='requireAdministrator'
988_Same(_link, "MinimumRequiredVersion", _string)
989_Same(_link, "TreatLinkerWarningAsErrors", _boolean) # /WX
990
991
992# Options found in MSVS that have been renamed in MSBuild.
993_Renamed(
994 _link,
995 "ErrorReporting",
996 "LinkErrorReporting",
997 _Enumeration(
998 [
999 "NoErrorReport", # /ERRORREPORT:NONE
1000 "PromptImmediately", # /ERRORREPORT:PROMPT
1001 "QueueForNextLogin",
1002 ], # /ERRORREPORT:QUEUE
1003 new=["SendErrorReport"],
1004 ),
1005) # /ERRORREPORT:SEND
1006_Renamed(
1007 _link, "IgnoreDefaultLibraryNames", "IgnoreSpecificDefaultLibraries", _file_list
1008) # /NODEFAULTLIB
1009_Renamed(_link, "ResourceOnlyDLL", "NoEntryPoint", _boolean) # /NOENTRY
1010_Renamed(_link, "SwapRunFromNet", "SwapRunFromNET", _boolean) # /SWAPRUN:NET
1011
1012_Moved(_link, "GenerateManifest", "", _boolean)
1013_Moved(_link, "IgnoreImportLibrary", "", _boolean)
1014_Moved(_link, "LinkIncremental", "", _newly_boolean)
1015_Moved(_link, "LinkLibraryDependencies", "ProjectReference", _boolean)
1016_Moved(_link, "UseLibraryDependencyInputs", "ProjectReference", _boolean)
1017
1018# MSVS options not found in MSBuild.
1019_MSVSOnly(_link, "OptimizeForWindows98", _newly_boolean)
1020_MSVSOnly(_link, "UseUnicodeResponseFiles", _boolean)
1021
1022# MSBuild options not found in MSVS.
1023_MSBuildOnly(_link, "BuildingInIDE", _boolean)
1024_MSBuildOnly(_link, "ImageHasSafeExceptionHandlers", _boolean) # /SAFESEH
1025_MSBuildOnly(_link, "LinkDLL", _boolean) # /DLL Visible='false'
1026_MSBuildOnly(_link, "LinkStatus", _boolean) # /LTCG:STATUS
1027_MSBuildOnly(_link, "PreventDllBinding", _boolean) # /ALLOWBIND
1028_MSBuildOnly(_link, "SupportNobindOfDelayLoadedDLL", _boolean) # /DELAY:NOBIND
1029_MSBuildOnly(_link, "TrackerLogDirectory", _folder_name)
1030_MSBuildOnly(_link, "MSDOSStubFileName", _file_name) # /STUB Visible='false'
1031_MSBuildOnly(_link, "SectionAlignment", _integer) # /ALIGN
1032_MSBuildOnly(_link, "SpecifySectionAttributes", _string) # /SECTION
1033_MSBuildOnly(
1034 _link,
1035 "ForceFileOutput",
1036 _Enumeration(
1037 [],
1038 new=[
1039 "Enabled", # /FORCE
1040 # /FORCE:MULTIPLE
1041 "MultiplyDefinedSymbolOnly",
1042 "UndefinedSymbolOnly",
1043 ],
1044 ),
1045) # /FORCE:UNRESOLVED
1046_MSBuildOnly(
1047 _link,
1048 "CreateHotPatchableImage",
1049 _Enumeration(
1050 [],
1051 new=[
1052 "Enabled", # /FUNCTIONPADMIN
1053 "X86Image", # /FUNCTIONPADMIN:5
1054 "X64Image", # /FUNCTIONPADMIN:6
1055 "ItaniumImage",
1056 ],
1057 ),
1058) # /FUNCTIONPADMIN:16
1059_MSBuildOnly(
1060 _link,
1061 "CLRSupportLastError",
1062 _Enumeration(
1063 [],
1064 new=[
1065 "Enabled", # /CLRSupportLastError
1066 "Disabled", # /CLRSupportLastError:NO
1067 # /CLRSupportLastError:SYSTEMDLL
1068 "SystemDlls",
1069 ],
1070 ),
1071)
1072
1073
1074# Directives for converting VCResourceCompilerTool to ResourceCompile.
1075# See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\rc.xml" for
1076# the schema of the MSBuild ResourceCompile settings.
1077
1078_Same(_rc, "AdditionalOptions", _string_list)
1079_Same(_rc, "AdditionalIncludeDirectories", _folder_list) # /I
1080_Same(_rc, "Culture", _Integer(msbuild_base=16))
1081_Same(_rc, "IgnoreStandardIncludePath", _boolean) # /X
1082_Same(_rc, "PreprocessorDefinitions", _string_list) # /D
1083_Same(_rc, "ResourceOutputFileName", _string) # /fo
1084_Same(_rc, "ShowProgress", _boolean) # /v
1085# There is no UI in VisualStudio 2008 to set the following properties.
1086# However they are found in CL and other tools. Include them here for
1087# completeness, as they are very likely to have the same usage pattern.
1088_Same(_rc, "SuppressStartupBanner", _boolean) # /nologo
1089_Same(_rc, "UndefinePreprocessorDefinitions", _string_list) # /u
1090
1091# MSBuild options not found in MSVS.
1092_MSBuildOnly(_rc, "NullTerminateStrings", _boolean) # /n
1093_MSBuildOnly(_rc, "TrackerLogDirectory", _folder_name)
1094
1095
1096# Directives for converting VCMIDLTool to Midl.
1097# See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\midl.xml" for
1098# the schema of the MSBuild Midl settings.
1099
1100_Same(_midl, "AdditionalIncludeDirectories", _folder_list) # /I
1101_Same(_midl, "AdditionalOptions", _string_list)
1102_Same(_midl, "CPreprocessOptions", _string) # /cpp_opt
1103_Same(_midl, "ErrorCheckAllocations", _boolean) # /error allocation
1104_Same(_midl, "ErrorCheckBounds", _boolean) # /error bounds_check
1105_Same(_midl, "ErrorCheckEnumRange", _boolean) # /error enum
1106_Same(_midl, "ErrorCheckRefPointers", _boolean) # /error ref
1107_Same(_midl, "ErrorCheckStubData", _boolean) # /error stub_data
1108_Same(_midl, "GenerateStublessProxies", _boolean) # /Oicf
1109_Same(_midl, "GenerateTypeLibrary", _boolean)
1110_Same(_midl, "HeaderFileName", _file_name) # /h
1111_Same(_midl, "IgnoreStandardIncludePath", _boolean) # /no_def_idir
1112_Same(_midl, "InterfaceIdentifierFileName", _file_name) # /iid
1113_Same(_midl, "MkTypLibCompatible", _boolean) # /mktyplib203
1114_Same(_midl, "OutputDirectory", _string) # /out
1115_Same(_midl, "PreprocessorDefinitions", _string_list) # /D
1116_Same(_midl, "ProxyFileName", _file_name) # /proxy
1117_Same(_midl, "RedirectOutputAndErrors", _file_name) # /o
1118_Same(_midl, "SuppressStartupBanner", _boolean) # /nologo
1119_Same(_midl, "TypeLibraryName", _file_name) # /tlb
1120_Same(_midl, "UndefinePreprocessorDefinitions", _string_list) # /U
1121_Same(_midl, "WarnAsError", _boolean) # /WX
1122
1123_Same(
1124 _midl,
1125 "DefaultCharType",
1126 _Enumeration(["Unsigned", "Signed", "Ascii"]), # /char unsigned # /char signed
1127) # /char ascii7
1128_Same(
1129 _midl,
1130 "TargetEnvironment",
1131 _Enumeration(
1132 [
1133 "NotSet",
1134 "Win32", # /env win32
1135 "Itanium", # /env ia64
1136 "X64", # /env x64
1137 "ARM64", # /env arm64
1138 ]
1139 ),
1140)
1141_Same(
1142 _midl,
1143 "EnableErrorChecks",
1144 _Enumeration(["EnableCustom", "None", "All"]), # /error none
1145) # /error all
1146_Same(
1147 _midl,
1148 "StructMemberAlignment",
1149 _Enumeration(["NotSet", "1", "2", "4", "8"]), # Zp1 # Zp2 # Zp4
1150) # Zp8
1151_Same(
1152 _midl,
1153 "WarningLevel",
1154 _Enumeration(["0", "1", "2", "3", "4"]), # /W0 # /W1 # /W2 # /W3
1155) # /W4
1156
1157_Renamed(_midl, "DLLDataFileName", "DllDataFileName", _file_name) # /dlldata
1158_Renamed(_midl, "ValidateParameters", "ValidateAllParameters", _boolean) # /robust
1159
1160# MSBuild options not found in MSVS.
1161_MSBuildOnly(_midl, "ApplicationConfigurationMode", _boolean) # /app_config
1162_MSBuildOnly(_midl, "ClientStubFile", _file_name) # /cstub
1163_MSBuildOnly(
1164 _midl, "GenerateClientFiles", _Enumeration([], new=["Stub", "None"]) # /client stub
1165) # /client none
1166_MSBuildOnly(
1167 _midl, "GenerateServerFiles", _Enumeration([], new=["Stub", "None"]) # /client stub
1168) # /client none
1169_MSBuildOnly(_midl, "LocaleID", _integer) # /lcid DECIMAL
1170_MSBuildOnly(_midl, "ServerStubFile", _file_name) # /sstub
1171_MSBuildOnly(_midl, "SuppressCompilerWarnings", _boolean) # /no_warn
1172_MSBuildOnly(_midl, "TrackerLogDirectory", _folder_name)
1173_MSBuildOnly(
1174 _midl, "TypeLibFormat", _Enumeration([], new=["NewFormat", "OldFormat"]) # /newtlb
1175) # /oldtlb
1176
1177
1178# Directives for converting VCLibrarianTool to Lib.
1179# See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\lib.xml" for
1180# the schema of the MSBuild Lib settings.
1181
1182_Same(_lib, "AdditionalDependencies", _file_list)
1183_Same(_lib, "AdditionalLibraryDirectories", _folder_list) # /LIBPATH
1184_Same(_lib, "AdditionalOptions", _string_list)
1185_Same(_lib, "ExportNamedFunctions", _string_list) # /EXPORT
1186_Same(_lib, "ForceSymbolReferences", _string) # /INCLUDE
1187_Same(_lib, "IgnoreAllDefaultLibraries", _boolean) # /NODEFAULTLIB
1188_Same(_lib, "IgnoreSpecificDefaultLibraries", _file_list) # /NODEFAULTLIB
1189_Same(_lib, "ModuleDefinitionFile", _file_name) # /DEF
1190_Same(_lib, "OutputFile", _file_name) # /OUT
1191_Same(_lib, "SuppressStartupBanner", _boolean) # /NOLOGO
1192_Same(_lib, "UseUnicodeResponseFiles", _boolean)
1193_Same(_lib, "LinkTimeCodeGeneration", _boolean) # /LTCG
1194_Same(_lib, "TargetMachine", _target_machine_enumeration)
1195
1196# TODO(jeanluc) _link defines the same value that gets moved to
1197# ProjectReference. We may want to validate that they are consistent.
1198_Moved(_lib, "LinkLibraryDependencies", "ProjectReference", _boolean)
1199
1200_MSBuildOnly(_lib, "DisplayLibrary", _string) # /LIST Visible='false'
1201_MSBuildOnly(
1202 _lib,
1203 "ErrorReporting",
1204 _Enumeration(
1205 [],
1206 new=[
1207 "PromptImmediately", # /ERRORREPORT:PROMPT
1208 "QueueForNextLogin", # /ERRORREPORT:QUEUE
1209 "SendErrorReport", # /ERRORREPORT:SEND
1210 "NoErrorReport",
1211 ],
1212 ),
1213) # /ERRORREPORT:NONE
1214_MSBuildOnly(_lib, "MinimumRequiredVersion", _string)
1215_MSBuildOnly(_lib, "Name", _file_name) # /NAME
1216_MSBuildOnly(_lib, "RemoveObjects", _file_list) # /REMOVE
1217_MSBuildOnly(_lib, "SubSystem", _subsystem_enumeration)
1218_MSBuildOnly(_lib, "TrackerLogDirectory", _folder_name)
1219_MSBuildOnly(_lib, "TreatLibWarningAsErrors", _boolean) # /WX
1220_MSBuildOnly(_lib, "Verbose", _boolean)
1221
1222
1223# Directives for converting VCManifestTool to Mt.
1224# See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\mt.xml" for
1225# the schema of the MSBuild Lib settings.
1226
1227# Options that have the same name in MSVS and MSBuild
1228_Same(_manifest, "AdditionalManifestFiles", _file_list) # /manifest
1229_Same(_manifest, "AdditionalOptions", _string_list)
1230_Same(_manifest, "AssemblyIdentity", _string) # /identity:
1231_Same(_manifest, "ComponentFileName", _file_name) # /dll
1232_Same(_manifest, "GenerateCatalogFiles", _boolean) # /makecdfs
1233_Same(_manifest, "InputResourceManifests", _string) # /inputresource
1234_Same(_manifest, "OutputManifestFile", _file_name) # /out
1235_Same(_manifest, "RegistrarScriptFile", _file_name) # /rgs
1236_Same(_manifest, "ReplacementsFile", _file_name) # /replacements
1237_Same(_manifest, "SuppressStartupBanner", _boolean) # /nologo
1238_Same(_manifest, "TypeLibraryFile", _file_name) # /tlb:
1239_Same(_manifest, "UpdateFileHashes", _boolean) # /hashupdate
1240_Same(_manifest, "UpdateFileHashesSearchPath", _file_name)
1241_Same(_manifest, "VerboseOutput", _boolean) # /verbose
1242
1243# Options that have moved location.
1244_MovedAndRenamed(
1245 _manifest,
1246 "ManifestResourceFile",
1247 "ManifestResourceCompile",
1248 "ResourceOutputFileName",
1249 _file_name,
1250)
1251_Moved(_manifest, "EmbedManifest", "", _boolean)
1252
1253# MSVS options not found in MSBuild.
1254_MSVSOnly(_manifest, "DependencyInformationFile", _file_name)
1255_MSVSOnly(_manifest, "UseFAT32Workaround", _boolean)
1256_MSVSOnly(_manifest, "UseUnicodeResponseFiles", _boolean)
1257
1258# MSBuild options not found in MSVS.
1259_MSBuildOnly(_manifest, "EnableDPIAwareness", _boolean)
1260_MSBuildOnly(_manifest, "GenerateCategoryTags", _boolean) # /category
1261_MSBuildOnly(
1262 _manifest, "ManifestFromManagedAssembly", _file_name
1263) # /managedassemblyname
1264_MSBuildOnly(_manifest, "OutputResourceManifests", _string) # /outputresource
1265_MSBuildOnly(_manifest, "SuppressDependencyElement", _boolean) # /nodependency
1266_MSBuildOnly(_manifest, "TrackerLogDirectory", _folder_name)
1267
1268
1269# Directives for MASM.
1270# See "$(VCTargetsPath)\BuildCustomizations\masm.xml" for the schema of the
1271# MSBuild MASM settings.
1272
1273# Options that have the same name in MSVS and MSBuild.
1274_Same(_masm, "UseSafeExceptionHandlers", _boolean) # /safeseh
Note: See TracBrowser for help on using the repository browser.