Commit 17a397c2 authored by Ian Hojnicki's avatar Ian Hojnicki Committed by Brad King
Browse files

VS: Split link flag table between v140 and v141 toolsets

parent 372de3f8
Pipeline #63247 passed with stage
......@@ -8,8 +8,8 @@
#include "cmMakefile.h"
#include "cmVS140CLFlagTable.h"
#include "cmVS140CSharpFlagTable.h"
#include "cmVS140LinkFlagTable.h"
#include "cmVS14LibFlagTable.h"
#include "cmVS14LinkFlagTable.h"
#include "cmVS14MASMFlagTable.h"
#include "cmVS14RCFlagTable.h"
......@@ -93,7 +93,7 @@ cmGlobalVisualStudio14Generator::cmGlobalVisualStudio14Generator(
this->DefaultClFlagTable = cmVS140CLFlagTable;
this->DefaultCSharpFlagTable = cmVS140CSharpFlagTable;
this->DefaultLibFlagTable = cmVS14LibFlagTable;
this->DefaultLinkFlagTable = cmVS14LinkFlagTable;
this->DefaultLinkFlagTable = cmVS140LinkFlagTable;
this->DefaultMasmFlagTable = cmVS14MASMFlagTable;
this->DefaultRcFlagTable = cmVS14RCFlagTable;
this->Version = VS14;
......
......@@ -8,6 +8,7 @@
#include "cmMakefile.h"
#include "cmVS141CLFlagTable.h"
#include "cmVS141CSharpFlagTable.h"
#include "cmVS141LinkFlagTable.h"
#include "cmVSSetupHelper.h"
static const char vs15generatorName[] = "Visual Studio 15 2017";
......@@ -85,6 +86,7 @@ cmGlobalVisualStudio15Generator::cmGlobalVisualStudio15Generator(
this->DefaultPlatformToolset = "v141";
this->DefaultClFlagTable = cmVS141CLFlagTable;
this->DefaultCSharpFlagTable = cmVS141CSharpFlagTable;
this->DefaultLinkFlagTable = cmVS141LinkFlagTable;
this->Version = VS15;
}
......
static cmVS7FlagTable cmVS14LinkFlagTable[] = {
static cmVS7FlagTable cmVS140LinkFlagTable[] = {
// Enum Properties
{ "ShowProgress", "", "Not Set", "NotSet", 0 },
......
static cmVS7FlagTable cmVS141LinkFlagTable[] = {
// Enum Properties
{ "ShowProgress", "", "Not Set", "NotSet", 0 },
{ "ShowProgress", "VERBOSE", "Display all progress messages", "LinkVerbose",
0 },
{ "ShowProgress", "VERBOSE:Lib", "For Libraries Searched", "LinkVerboseLib",
0 },
{ "ShowProgress", "VERBOSE:ICF",
"About COMDAT folding during optimized linking", "LinkVerboseICF", 0 },
{ "ShowProgress", "VERBOSE:REF",
"About data removed during optimized linking", "LinkVerboseREF", 0 },
{ "ShowProgress", "VERBOSE:SAFESEH", "About Modules incompatible with SEH",
"LinkVerboseSAFESEH", 0 },
{ "ShowProgress", "VERBOSE:CLR",
"About linker activity related to managed code", "LinkVerboseCLR", 0 },
{ "ForceFileOutput", "FORCE", "Enabled", "Enabled", 0 },
{ "ForceFileOutput", "FORCE:MULTIPLE", "Multiply Defined Symbol Only",
"MultiplyDefinedSymbolOnly", 0 },
{ "ForceFileOutput", "FORCE:UNRESOLVED", "Undefined Symbol Only",
"UndefinedSymbolOnly", 0 },
{ "CreateHotPatchableImage", "FUNCTIONPADMIN", "Enabled", "Enabled", 0 },
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:5", "X86 Image Only",
"X86Image", 0 },
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:6", "X64 Image Only",
"X64Image", 0 },
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
"ItaniumImage", 0 },
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
"HighestAvailable", 0 },
{ "UACExecutionLevel", "level='requireAdministrator'",
"requireAdministrator", "RequireAdministrator", 0 },
{ "GenerateDebugInformation", "DEBUG:FASTLINK",
"Optimize for faster linking", "DebugFastLink",
cmVS7FlagTable::CaseInsensitive },
{ "GenerateDebugInformation", "DEBUG", "Optimize for debugging", "Debug",
cmVS7FlagTable::CaseInsensitive },
{ "SubSystem", "", "Not Set", "NotSet", 0 },
{ "SubSystem", "SUBSYSTEM:CONSOLE", "Console", "Console", 0 },
{ "SubSystem", "SUBSYSTEM:WINDOWS", "Windows", "Windows", 0 },
{ "SubSystem", "SUBSYSTEM:NATIVE", "Native", "Native", 0 },
{ "SubSystem", "SUBSYSTEM:EFI_APPLICATION", "EFI Application",
"EFI Application", 0 },
{ "SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
"EFI Boot Service Driver", "EFI Boot Service Driver", 0 },
{ "SubSystem", "SUBSYSTEM:EFI_ROM", "EFI ROM", "EFI ROM", 0 },
{ "SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", "EFI Runtime", "EFI Runtime",
0 },
{ "SubSystem", "SUBSYSTEM:POSIX", "POSIX", "POSIX", 0 },
{ "Driver", "", "Not Set", "NotSet", 0 },
{ "Driver", "Driver", "Driver", "Driver", 0 },
{ "Driver", "DRIVER:UPONLY", "UP Only", "UpOnly", 0 },
{ "Driver", "DRIVER:WDM", "WDM", "WDM", 0 },
{ "LinkTimeCodeGeneration", "", "Default", "Default", 0 },
{ "LinkTimeCodeGeneration", "LTCG:incremental",
"Use Fast Link Time Code Generation", "UseFastLinkTimeCodeGeneration", 0 },
{ "LinkTimeCodeGeneration", "LTCG", "Use Link Time Code Generation",
"UseLinkTimeCodeGeneration", 0 },
{ "LinkTimeCodeGeneration", "LTCG:PGInstrument",
"Profile Guided Optimization - Instrument", "PGInstrument", 0 },
{ "LinkTimeCodeGeneration", "LTCG:PGOptimize",
"Profile Guided Optimization - Optimization", "PGOptimization", 0 },
{ "LinkTimeCodeGeneration", "LTCG:PGUpdate",
"Profile Guided Optimization - Update", "PGUpdate", 0 },
{ "GenerateWindowsMetadata", "WINMD", "Yes", "true", 0 },
{ "GenerateWindowsMetadata", "WINMD:NO", "No", "false", 0 },
{ "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA1", "SHA1", "SHA1", 0 },
{ "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA256", "SHA256", "SHA256", 0 },
{ "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA384", "SHA384", "SHA384", 0 },
{ "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA512", "SHA512", "SHA512", 0 },
{ "TargetMachine", "", "Not Set", "NotSet", 0 },
{ "TargetMachine", "MACHINE:ARM", "MachineARM", "MachineARM", 0 },
{ "TargetMachine", "MACHINE:EBC", "MachineEBC", "MachineEBC", 0 },
{ "TargetMachine", "MACHINE:IA64", "MachineIA64", "MachineIA64", 0 },
{ "TargetMachine", "MACHINE:MIPS", "MachineMIPS", "MachineMIPS", 0 },
{ "TargetMachine", "MACHINE:MIPS16", "MachineMIPS16", "MachineMIPS16", 0 },
{ "TargetMachine", "MACHINE:MIPSFPU", "MachineMIPSFPU", "MachineMIPSFPU",
0 },
{ "TargetMachine", "MACHINE:MIPSFPU16", "MachineMIPSFPU16",
"MachineMIPSFPU16", 0 },
{ "TargetMachine", "MACHINE:SH4", "MachineSH4", "MachineSH4", 0 },
{ "TargetMachine", "MACHINE:THUMB", "MachineTHUMB", "MachineTHUMB", 0 },
{ "TargetMachine", "MACHINE:X64", "MachineX64", "MachineX64", 0 },
{ "TargetMachine", "MACHINE:X86", "MachineX86", "MachineX86", 0 },
{ "CLRThreadAttribute", "CLRTHREADATTRIBUTE:MTA", "MTA threading attribute",
"MTAThreadingAttribute", 0 },
{ "CLRThreadAttribute", "CLRTHREADATTRIBUTE:STA", "STA threading attribute",
"STAThreadingAttribute", 0 },
{ "CLRThreadAttribute", "CLRTHREADATTRIBUTE:NONE",
"Default threading attribute", "DefaultThreadingAttribute", 0 },
{ "CLRImageType", "CLRIMAGETYPE:IJW", "Force IJW image", "ForceIJWImage",
0 },
{ "CLRImageType", "CLRIMAGETYPE:PURE", "Force Pure IL Image",
"ForcePureILImage", 0 },
{ "CLRImageType", "CLRIMAGETYPE:SAFE", "Force Safe IL Image",
"ForceSafeILImage", 0 },
{ "CLRImageType", "", "Default image type", "Default", 0 },
{ "SignHash", "CLRSIGNHASH:SHA1", "SHA1", "SHA1", 0 },
{ "SignHash", "CLRSIGNHASH:SHA256", "SHA256", "SHA256", 0 },
{ "SignHash", "CLRSIGNHASH:SHA384", "SHA384", "SHA384", 0 },
{ "SignHash", "CLRSIGNHASH:SHA512", "SHA512", "SHA512", 0 },
{ "LinkErrorReporting", "ERRORREPORT:PROMPT", "PromptImmediately",
"PromptImmediately", 0 },
{ "LinkErrorReporting", "ERRORREPORT:QUEUE", "Queue For Next Login",
"QueueForNextLogin", 0 },
{ "LinkErrorReporting", "ERRORREPORT:SEND", "Send Error Report",
"SendErrorReport", 0 },
{ "LinkErrorReporting", "ERRORREPORT:NONE", "No Error Report",
"NoErrorReport", 0 },
{ "CLRSupportLastError", "CLRSupportLastError", "Enabled", "Enabled", 0 },
{ "CLRSupportLastError", "CLRSupportLastError:NO", "Disabled", "Disabled",
0 },
{ "CLRSupportLastError", "CLRSupportLastError:SYSTEMDLL", "System Dlls Only",
"SystemDlls", 0 },
{ "LinkControlFlowGuard", "guard:cf", "Enable Security Check with Guard",
"Guard", 0 },
// Bool Properties
{ "LinkIncremental", "INCREMENTAL:NO", "", "false", 0 },
{ "LinkIncremental", "INCREMENTAL", "", "true", 0 },
{ "SuppressStartupBanner", "NOLOGO", "", "true", 0 },
{ "LinkStatus", "LTCG:NOSTATUS", "", "false", 0 },
{ "LinkStatus", "LTCG:STATUS", "", "true", 0 },
{ "PreventDllBinding", "ALLOWBIND:NO", "", "false", 0 },
{ "PreventDllBinding", "ALLOWBIND", "", "true", 0 },
{ "TreatLinkerWarningAsErrors", "WX:NO", "", "false", 0 },
{ "TreatLinkerWarningAsErrors", "WX", "", "true", 0 },
{ "IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0 },
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
{ "ManifestEmbed", "manifest:embed", "", "true", 0 },
{ "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
{ "AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0 },
{ "AssemblyDebug", "ASSEMBLYDEBUG", "", "true", 0 },
{ "LargeAddressAware", "LARGEADDRESSAWARE:NO", "", "false", 0 },
{ "LargeAddressAware", "LARGEADDRESSAWARE", "", "true", 0 },
{ "TerminalServerAware", "TSAWARE:NO", "", "false", 0 },
{ "TerminalServerAware", "TSAWARE", "", "true", 0 },
{ "SwapRunFromCD", "SWAPRUN:CD", "", "true", 0 },
{ "SwapRunFromNET", "SWAPRUN:NET", "", "true", 0 },
{ "OptimizeReferences", "OPT:NOREF", "", "false", 0 },
{ "OptimizeReferences", "OPT:REF", "", "true", 0 },
{ "EnableCOMDATFolding", "OPT:NOICF", "", "false", 0 },
{ "EnableCOMDATFolding", "OPT:ICF", "", "true", 0 },
{ "IgnoreEmbeddedIDL", "IGNOREIDL", "", "true", 0 },
{ "AppContainer", "APPCONTAINER", "", "true", 0 },
{ "WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN:NO", "", "false", 0 },
{ "WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN", "", "true", 0 },
{ "NoEntryPoint", "NOENTRY", "", "true", 0 },
{ "SetChecksum", "RELEASE", "", "true", 0 },
{ "RandomizedBaseAddress", "DYNAMICBASE:NO", "", "false", 0 },
{ "RandomizedBaseAddress", "DYNAMICBASE", "", "true", 0 },
{ "FixedBaseAddress", "FIXED:NO", "", "false", 0 },
{ "FixedBaseAddress", "FIXED", "", "true", 0 },
{ "DataExecutionPrevention", "NXCOMPAT:NO", "", "false", 0 },
{ "DataExecutionPrevention", "NXCOMPAT", "", "true", 0 },
{ "TurnOffAssemblyGeneration", "NOASSEMBLY", "", "true", 0 },
{ "SupportUnloadOfDelayLoadedDLL", "DELAY:UNLOAD", "", "true", 0 },
{ "SupportNobindOfDelayLoadedDLL", "DELAY:NOBIND", "", "true", 0 },
{ "Profile", "PROFILE", "", "true", 0 },
{ "LinkDelaySign", "DELAYSIGN:NO", "", "false", 0 },
{ "LinkDelaySign", "DELAYSIGN", "", "true", 0 },
{ "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK:NO", "", "false", 0 },
{ "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK", "", "true", 0 },
{ "DetectOneDefinitionRule", "ODR", "", "true", 0 },
{ "ImageHasSafeExceptionHandlers", "SAFESEH:NO", "", "false", 0 },
{ "ImageHasSafeExceptionHandlers", "SAFESEH", "", "true", 0 },
{ "LinkDLL", "DLL", "", "true", 0 },
// Bool Properties With Argument
{ "EnableUAC", "MANIFESTUAC:NO", "", "false", 0 },
{ "EnableUAC", "MANIFESTUAC:", "", "true",
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
{ "UACUIAccess", "MANIFESTUAC:", "Enable User Account Control (UAC)", "",
cmVS7FlagTable::UserValueRequired },
{ "GenerateMapFile", "MAP", "", "true",
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
{ "MapFileName", "MAP:", "Generate Map File", "",
cmVS7FlagTable::UserValueRequired },
// String List Properties
{ "AdditionalLibraryDirectories", "LIBPATH:",
"Additional Library Directories", "",
cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
{ "Natvis", "NATVIS:", "Natvis files", "",
cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
// Skip [AdditionalDependencies] - no command line Switch.
{ "IgnoreSpecificDefaultLibraries", "NODEFAULTLIB:",
"Ignore Specific Default Libraries", "",
cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
{ "AddModuleNamesToAssembly", "ASSEMBLYMODULE:", "Add Module to Assembly",
"", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
{ "EmbedManagedResourceFile", "ASSEMBLYRESOURCE:",
"Embed Managed Resource File", "",
cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
{ "ForceSymbolReferences", "INCLUDE:", "Force Symbol References", "",
cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
{ "DelayLoadDLLs", "DELAYLOAD:", "Delay Loaded Dlls", "",
cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
{ "AssemblyLinkResource", "ASSEMBLYLINKRESOURCE:", "Assembly Link Resource",
"", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
{ "AdditionalManifestDependencies", "MANIFESTDEPENDENCY:",
"Additional Manifest Dependencies", "",
cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
{ "ManifestInput", "manifestinput:", "Manifest Input", "",
cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
// String Properties
{ "OutputFile", "OUT:", "Output File", "", cmVS7FlagTable::UserValue },
{ "Version", "VERSION:", "Version", "", cmVS7FlagTable::UserValue },
{ "SpecifySectionAttributes", "SECTION:", "Specify Section Attributes", "",
cmVS7FlagTable::UserValue },
{ "MSDOSStubFileName", "STUB:", "MS-DOS Stub File Name", "",
cmVS7FlagTable::UserValue },
// Skip [TrackerLogDirectory] - no command line Switch.
{ "ModuleDefinitionFile", "DEF:", "Module Definition File", "",
cmVS7FlagTable::UserValue },
{ "ManifestFile", "ManifestFile:", "Manifest File", "",
cmVS7FlagTable::UserValue },
{ "ProgramDatabaseFile", "PDB:", "Generate Program Database File", "",
cmVS7FlagTable::UserValue },
{ "StripPrivateSymbols", "PDBSTRIPPED:", "Strip Private Symbols", "",
cmVS7FlagTable::UserValue },
// Skip [MapFileName] - no command line Switch.
// Skip [MinimumRequiredVersion] - no command line Switch.
{ "HeapReserveSize", "HEAP:", "Heap Reserve Size", "",
cmVS7FlagTable::UserValue },
// Skip [HeapCommitSize] - no command line Switch.
{ "StackReserveSize", "STACK:", "Stack Reserve Size", "",
cmVS7FlagTable::UserValue },
// Skip [StackCommitSize] - no command line Switch.
{ "FunctionOrder", "ORDER:@", "Function Order", "",
cmVS7FlagTable::UserValue },
{ "ProfileGuidedDatabase", "PGD:", "Profile Guided Database", "",
cmVS7FlagTable::UserValue },
{ "MidlCommandFile", "MIDL:@", "MIDL Commands", "",
cmVS7FlagTable::UserValue },
{ "MergedIDLBaseFileName", "IDLOUT:", "Merged IDL Base File Name", "",
cmVS7FlagTable::UserValue },
{ "TypeLibraryFile", "TLBOUT:", "Type Library", "",
cmVS7FlagTable::UserValue },
{ "WindowsMetadataFile", "WINMDFILE:", "Windows Metadata File", "",
cmVS7FlagTable::UserValue },
{ "WindowsMetadataLinkKeyFile", "WINMDKEYFILE:", "Windows Metadata Key File",
"", cmVS7FlagTable::UserValue },
{ "WindowsMetadataKeyContainer", "WINMDKEYCONTAINER:",
"Windows Metadata Key Container", "", cmVS7FlagTable::UserValue },
{ "EntryPointSymbol", "ENTRY:", "Entry Point", "",
cmVS7FlagTable::UserValue },
{ "BaseAddress", "BASE:", "Base Address", "", cmVS7FlagTable::UserValue },
{ "ImportLibrary", "IMPLIB:", "Import Library", "",
cmVS7FlagTable::UserValue },
{ "MergeSections", "MERGE:", "Merge Sections", "",
cmVS7FlagTable::UserValue },
{ "LinkKeyFile", "KEYFILE:", "Key File", "", cmVS7FlagTable::UserValue },
{ "KeyContainer", "KEYCONTAINER:", "Key Container", "",
cmVS7FlagTable::UserValue },
// Skip [AdditionalOptions] - no command line Switch.
{ 0, 0, 0, 0, 0 }
};
......@@ -26,10 +26,11 @@
#include "cmVS12RCFlagTable.h"
#include "cmVS140CLFlagTable.h"
#include "cmVS140CSharpFlagTable.h"
#include "cmVS140LinkFlagTable.h"
#include "cmVS141CLFlagTable.h"
#include "cmVS141CSharpFlagTable.h"
#include "cmVS141LinkFlagTable.h"
#include "cmVS14LibFlagTable.h"
#include "cmVS14LinkFlagTable.h"
#include "cmVS14MASMFlagTable.h"
#include "cmVS14RCFlagTable.h"
......@@ -114,8 +115,10 @@ cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetLinkFlagTable(
{
std::string const useToolset = this->GetToolsetName(name, toolset);
if ((useToolset == "v140") || (useToolset == "v141")) {
return cmVS14LinkFlagTable;
if (useToolset == "v141") {
return cmVS141LinkFlagTable;
} else if (useToolset == "v140") {
return cmVS140LinkFlagTable;
} else if (useToolset == "v120") {
return cmVS12LinkFlagTable;
} else if (useToolset == "v110") {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment