qmake: added support for WindowsMetadataFile

In order to be able to use the linker's /WINMD
and /WINMDFILE options

Change-Id: I2673e20aa073c6b807e8c9f191fd408c7976efc4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
Kamil Trzcinski 2013-02-11 23:58:43 +01:00 committed by The Qt Project
parent 6008eb525e
commit 083b5b503c
3 changed files with 19 additions and 0 deletions

View File

@ -139,6 +139,7 @@ const char _GenerateMapFile[] = "GenerateMapFile";
const char _GenerateServerFiles[] = "GenerateServerFiles";
const char _GenerateStublessProxies[] = "GenerateStublessProxies";
const char _GenerateTypeLibrary[] = "GenerateTypeLibrary";
const char _GenerateWindowsMetadata[] = "GenerateWindowsMetadata";
const char _GenerateXMLDocumentationFiles[] = "GenerateXMLDocumentationFiles";
const char _HeaderFileName[] = "HeaderFileName";
const char _HeapCommitSize[] = "HeapCommitSize";
@ -255,6 +256,7 @@ const char _Version[] = "Version";
const char _WarnAsError[] = "WarnAsError";
const char _WarningLevel[] = "WarningLevel";
const char _WholeProgramOptimization[] = "WholeProgramOptimization";
const char _WindowsMetadataFile[] = "WindowsMetadataFile";
const char _XMLDocumentationFileName[] = "XMLDocumentationFileName";
@ -1479,6 +1481,8 @@ void VCXProjectWriter::write(XmlOutput &xml, const VCLinkerTool &tool)
<< attrTagS(_FunctionOrder, tool.FunctionOrder)
<< attrTagT(_GenerateDebugInformation, tool.GenerateDebugInformation)
<< attrTagT(_GenerateManifest, tool.GenerateManifest)
<< attrTagT(_GenerateWindowsMetadata, tool.GenerateWindowsMetadata)
<< attrTagS(_WindowsMetadataFile, tool.GenerateWindowsMetadata == _True ? tool.WindowsMetadataFile : QString())
<< attrTagT(_GenerateMapFile, tool.GenerateMapFile)
<< attrTagL(_HeapCommitSize, tool.HeapCommitSize, /*ifNot*/ -1)
<< attrTagL(_HeapReserveSize, tool.HeapReserveSize, /*ifNot*/ -1)

View File

@ -1198,6 +1198,7 @@ VCLinkerTool::VCLinkerTool()
TurnOffAssemblyGeneration(unset),
TypeLibraryResourceID(0),
GenerateManifest(unset),
GenerateWindowsMetadata(unset),
EnableUAC(unset),
UACUIAccess(unset),
SectionAlignment(-1),
@ -1265,6 +1266,7 @@ bool VCLinkerTool::parseOption(const char* option)
displayHash("/SWAPRUN"); displayHash("/TLBID"); displayHash("/TLBOUT");
displayHash("/TSAWARE"); displayHash("/VERBOSE"); displayHash("/VERSION");
displayHash("/VXD"); displayHash("/WS "); displayHash("/libpath");
displayHash("/WINMD"); displayHash("/WINMDFILE:");
#endif
#ifdef USE_DISPLAY_HASH
@ -1377,6 +1379,15 @@ bool VCLinkerTool::parseOption(const char* option)
else
GenerateManifest = _True;
break;
case 0x34be314: // /WINMD[:NO]
if ((*(option+6) == ':' && (*(option+7) == 'N' || *(option+7) == 'n')))
GenerateWindowsMetadata = _False;
else
GenerateWindowsMetadata = _True;
break;
case 0x31be7e5: // /WINMDFILE:filename
WindowsMetadataFile = option+11;
break;
case 0x8b64559: // /MANIFESTDEPENDENCY:manifest_dependency
AdditionalManifestDependencies += option+20;
break;

View File

@ -674,6 +674,10 @@ public:
QString KeyFile;
QString LinkErrorReporting;
// VS2012
triState GenerateWindowsMetadata;
QString WindowsMetadataFile;
VCConfiguration* config;
};