summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-06-28 08:56:44 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-06-28 08:58:49 +0200
commitbe35b70ca1bf61d022f7dee9df4aaccbf715b25e (patch)
treedd59ae3713b2bc516101f921491292a8b2c295e3 /qmake
parentcc54161abb977751b4499c559fc0f464b9e2399e (diff)
parent572200989b224ad68e7b8ae4c0aecceb6ca871a2 (diff)
Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev
Diffstat (limited to 'qmake')
-rw-r--r--qmake/generators/win32/msbuild_objectmodel.cpp3
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp29
-rw-r--r--qmake/generators/win32/msvc_objectmodel.h12
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp14
-rw-r--r--qmake/generators/win32/msvc_vcproj.h1
-rw-r--r--qmake/library/qmakeevaluator.cpp6
-rw-r--r--qmake/library/qmakeevaluator.h3
7 files changed, 63 insertions, 5 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 99f69bfa72..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),
@@ -2335,7 +2354,6 @@ bool VCFilter::addExtraCompiler(const VCFilterFile &info)
CustomBuildTool.Outputs += out;
deps += CustomBuildTool.AdditionalDependencies;
- deps += cmd.left(cmd.indexOf(' '));
// Make sure that all deps are only once
QHash<QString, bool> uniqDeps;
for (int c = 0; c < deps.count(); ++c) {
@@ -2634,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)
@@ -2765,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();
diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp
index 1d90be9ca1..c8a97dd893 100644
--- a/qmake/library/qmakeevaluator.cpp
+++ b/qmake/library/qmakeevaluator.cpp
@@ -1037,7 +1037,7 @@ void QMakeEvaluator::loadDefaults()
# endif
#elif defined(Q_OS_UNIX)
struct utsname name;
- if (!uname(&name)) {
+ if (uname(&name) != -1) {
vars[ProKey("QMAKE_HOST.os")] << ProString(name.sysname);
vars[ProKey("QMAKE_HOST.name")] << ProString(QString::fromLocal8Bit(name.nodename));
vars[ProKey("QMAKE_HOST.version")] << ProString(name.release);
@@ -1224,7 +1224,7 @@ bool QMakeEvaluator::loadSpec()
m_qmakespec = QDir::cleanPath(qmakespec);
if (!m_superfile.isEmpty()
- && evaluateFile(m_superfile, QMakeHandler::EvalConfigFile, LoadProOnly) != ReturnTrue) {
+ && evaluateFile(m_superfile, QMakeHandler::EvalConfigFile, LoadProOnly|LoadHidden) != ReturnTrue) {
return false;
}
if (!loadSpecInternal())
@@ -1820,7 +1820,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateFile(
m_current = m_locationStack.pop();
pro->deref();
#ifdef PROEVALUATOR_FULL
- if (ok == ReturnTrue) {
+ if (ok == ReturnTrue && !(flags & LoadHidden)) {
ProStringList &iif = m_valuemapStack.first()[ProKey("QMAKE_INTERNAL_INCLUDED_FILES")];
ProString ifn(fileName);
if (!iif.contains(ifn))
diff --git a/qmake/library/qmakeevaluator.h b/qmake/library/qmakeevaluator.h
index 59e3295f69..09617ba019 100644
--- a/qmake/library/qmakeevaluator.h
+++ b/qmake/library/qmakeevaluator.h
@@ -102,7 +102,8 @@ public:
LoadPreFiles = 1,
LoadPostFiles = 2,
LoadAll = LoadPreFiles|LoadPostFiles,
- LoadSilent = 0x10
+ LoadSilent = 0x10,
+ LoadHidden = 0x20
};
Q_DECLARE_FLAGS(LoadFlags, LoadFlag)