From 083b5b503c26297072d15e14036dcfa75533e577 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Mon, 11 Feb 2013 23:58:43 +0100 Subject: 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 Reviewed-by: Joerg Bornemann --- qmake/generators/win32/msbuild_objectmodel.cpp | 4 ++++ qmake/generators/win32/msvc_objectmodel.cpp | 11 +++++++++++ qmake/generators/win32/msvc_objectmodel.h | 4 ++++ 3 files changed, 19 insertions(+) (limited to 'qmake/generators') diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index e96455bea1..0c29008610 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -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) diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index dab06f5f01..2b343fd9f7 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -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; diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h index 4552e8e487..48324b9d27 100644 --- a/qmake/generators/win32/msvc_objectmodel.h +++ b/qmake/generators/win32/msvc_objectmodel.h @@ -674,6 +674,10 @@ public: QString KeyFile; QString LinkErrorReporting; + // VS2012 + triState GenerateWindowsMetadata; + QString WindowsMetadataFile; + VCConfiguration* config; }; -- cgit v1.2.3