diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-06-18 08:58:31 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-06-25 12:08:38 +0200 |
commit | 28a7af7b2ae1accec904b276d3bd240608d3a73f (patch) | |
tree | fc2183536a504f9d0ade99924b1310f6fcf590bf /qmake | |
parent | 1b972b210ae1611b2ee07e1c3f545963c7cc31e7 (diff) |
basic manifest tool support in vc(x)proj generator
The removal of embed_manifest_dll or embed_manifest_exe from CONFIG
now disables the embedding of manifests in VS project files.
Task-number: QTBUG-5301
Change-Id: I031318883edca6f9b63a7981ef6c44e3f123f6fd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/generators/win32/msbuild_objectmodel.cpp | 3 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 28 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.h | 12 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 14 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.h | 1 |
5 files changed, 58 insertions, 0 deletions
diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index 44fbf20f81..49b601e7e5 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE const char _CLCompile[] = "ClCompile"; const char _ItemGroup[] = "ItemGroup"; const char _Link[] = "Link"; +const char _ManifestTool[] = "ManifestTool"; const char _Midl[] = "Midl"; const char _ResourceCompile[] = "ResourceCompile"; @@ -104,6 +105,7 @@ const char _DisableSpecificWarnings[] = "DisableSpecificWarnings"; const char _DisplayLibrary[] = "DisplayLibrary"; const char _DLLDataFileName[] = "DLLDataFileName"; const char _EmbedManagedResourceFile[] = "EmbedManagedResourceFile"; +const char _EmbedManifest[] = "EmbedManifest"; const char _EnableCOMDATFolding[] = "EnableCOMDATFolding"; const char _EnableUAC[] = "EnableUAC"; const char _EnableErrorChecks[] = "EnableErrorChecks"; @@ -1657,6 +1659,7 @@ void VCXProjectWriter::write(XmlOutput &xml, const VCConfiguration &tool) << attrTagS(_UseOfATL, toString(tool.UseOfATL)) << attrTagS(_UseOfMfc, toString(tool.UseOfMfc)) << attrTagT(_WholeProgramOptimization, tool.WholeProgramOptimization) + << attrTagT(_EmbedManifest, tool.manifestTool.EmbedManifest) << closetag(); } diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index 725aba26a2..4dbba6d974 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -97,6 +97,7 @@ const char _Description[] = "Description"; const char _Detect64BitPortabilityProblems[] = "Detect64BitPortabilityProblems"; const char _DisableLanguageExtensions[] = "DisableLanguageExtensions"; const char _DisableSpecificWarnings[] = "DisableSpecificWarnings"; +const char _EmbedManifest[] = "EmbedManifest"; const char _EnableCOMDATFolding[] = "EnableCOMDATFolding"; const char _EnableErrorChecks[] = "EnableErrorChecks"; const char _EnableEnhancedInstructionSet[] = "EnableEnhancedInstructionSet"; @@ -224,6 +225,7 @@ const char _ValidateParameters[] = "ValidateParameters"; const char _VCCLCompilerTool[] = "VCCLCompilerTool"; const char _VCLibrarianTool[] = "VCLibrarianTool"; const char _VCLinkerTool[] = "VCLinkerTool"; +const char _VCManifestTool[] = "VCManifestTool"; const char _VCCustomBuildTool[] = "VCCustomBuildTool"; const char _VCResourceCompilerTool[] = "VCResourceCompilerTool"; const char _VCMIDLTool[] = "VCMIDLTool"; @@ -1718,6 +1720,23 @@ bool VCLinkerTool::parseOption(const char* option) return found; } +// VCManifestTool --------------------------------------------------- +VCManifestTool::VCManifestTool() + : EmbedManifest(unset) +{ +} + +VCManifestTool::~VCManifestTool() +{ +} + +bool VCManifestTool::parseOption(const char *option) +{ + Q_UNUSED(option); + // ### implement if we introduce QMAKE_MT_FLAGS + return false; +} + // VCMIDLTool ------------------------------------------------------- VCMIDLTool::VCMIDLTool() : DefaultCharType(midlCharUnsigned), @@ -2633,6 +2652,14 @@ void VCProjectWriter::write(XmlOutput &xml, const VCLinkerTool &tool) << closetag(_Tool); } +void VCProjectWriter::write(XmlOutput &xml, const VCManifestTool &tool) +{ + xml << tag(_Tool) + << attrS(_Name, _VCManifestTool) + << attrT(_EmbedManifest, tool.EmbedManifest) + << closetag(_Tool); +} + void VCProjectWriter::write(XmlOutput &xml, const VCMIDLTool &tool) { xml << tag(_Tool) @@ -2764,6 +2791,7 @@ void VCProjectWriter::write(XmlOutput &xml, const VCConfiguration &tool) write(xml, tool.librarian); else write(xml, tool.linker); + write(xml, tool.manifestTool); write(xml, tool.idl); write(xml, tool.postBuild); write(xml, tool.preBuild); diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h index d289afe366..e60fb1dfca 100644 --- a/qmake/generators/win32/msvc_objectmodel.h +++ b/qmake/generators/win32/msvc_objectmodel.h @@ -675,6 +675,16 @@ public: VCConfiguration* config; }; +class VCManifestTool : public VCToolBase +{ +public: + VCManifestTool(); + ~VCManifestTool(); + bool parseOption(const char* option); + + triState EmbedManifest; +}; + class VCMIDLTool : public VCToolBase { public: @@ -874,6 +884,7 @@ public: VCCLCompilerTool compiler; VCLinkerTool linker; VCLibrarianTool librarian; + VCManifestTool manifestTool; VCCustomBuildTool custom; VCMIDLTool idl; VCPostBuildEventTool postBuild; @@ -1127,6 +1138,7 @@ public: virtual void write(XmlOutput &, const VCCLCompilerTool &); virtual void write(XmlOutput &, const VCLinkerTool &); + virtual void write(XmlOutput &, const VCManifestTool &); virtual void write(XmlOutput &, const VCMIDLTool &); virtual void write(XmlOutput &, const VCCustomBuildTool &); virtual void write(XmlOutput &, const VCLibrarianTool &); diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index 17c72fa5d0..20ff9073f9 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -925,6 +925,7 @@ void VcprojGenerator::initConfiguration() conf.linker.GenerateDebugInformation = isDebug ? _True : _False; initLinkerTool(); } + initManifestTool(); initResourceTool(); initIDLTool(); @@ -1045,6 +1046,19 @@ void VcprojGenerator::initLibrarianTool() conf.librarian.AdditionalOptions += project->values("QMAKE_LIBFLAGS").toQStringList(); } +void VcprojGenerator::initManifestTool() +{ + VCManifestTool &tool = vcProject.Configuration.manifestTool; + const ProString tmplt = project->first("TEMPLATE"); + if ((tmplt == "vclib" + && !project->isActiveConfig("embed_manifest_dll") + && !project->isActiveConfig("static")) + || (tmplt == "vcapp" + && !project->isActiveConfig("embed_manifest_exe"))) { + tool.EmbedManifest = _False; + } +} + void VcprojGenerator::initLinkerTool() { VCConfiguration &conf = vcProject.Configuration; diff --git a/qmake/generators/win32/msvc_vcproj.h b/qmake/generators/win32/msvc_vcproj.h index f36d1632cf..62a2da9629 100644 --- a/qmake/generators/win32/msvc_vcproj.h +++ b/qmake/generators/win32/msvc_vcproj.h @@ -102,6 +102,7 @@ protected: void initCompilerTool(); void initLinkerTool(); void initLibrarianTool(); + void initManifestTool(); void initResourceTool(); void initIDLTool(); void initCustomBuildTool(); |