summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
Diffstat (limited to 'qmake')
-rw-r--r--qmake/Makefile.unix4
-rw-r--r--qmake/Makefile.win324
-rw-r--r--qmake/generators/win32/mingw_make.cpp5
-rw-r--r--qmake/generators/win32/mingw_make.h1
-rw-r--r--qmake/generators/win32/msbuild_objectmodel.cpp48
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp7
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp4
-rw-r--r--qmake/generators/win32/msvc_objectmodel.h2
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp68
-rw-r--r--qmake/generators/win32/msvc_vcproj.h1
-rw-r--r--qmake/generators/win32/winmakefile.cpp18
-rw-r--r--qmake/generators/win32/winmakefile.h1
-rw-r--r--qmake/qmake.pri4
13 files changed, 49 insertions, 118 deletions
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix
index 10c72bf28f..74705bddfa 100644
--- a/qmake/Makefile.unix
+++ b/qmake/Makefile.unix
@@ -74,6 +74,7 @@ DEPEND_SRC = \
$(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp \
$(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp \
$(SOURCE_PATH)/src/corelib/tools/qhash.cpp $(SOURCE_PATH)/src/corelib/kernel/qcore_mac.cpp \
+ $(SOURCE_PATH)/src/corelib/kernel/qcore_mac_objc.mm \
$(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp \
$(SOURCE_PATH)/src/corelib/io/qsettings.cpp $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp \
$(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp \
@@ -269,6 +270,9 @@ qmetatype.o: $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp
qcore_mac.o: $(SOURCE_PATH)/src/corelib/kernel/qcore_mac.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qcore_mac.cpp
+qcore_mac_objc.o: $(SOURCE_PATH)/src/corelib/kernel/qcore_mac_objc.mm
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qcore_mac_objc.mm
+
qutfcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
index ebadd52f99..c8d63eb662 100644
--- a/qmake/Makefile.win32
+++ b/qmake/Makefile.win32
@@ -1,4 +1,4 @@
-!IF "$(QMAKESPEC)" == "win32-msvc" || "$(QMAKESPEC)" == "win32-msvc.net" || "$(QMAKESPEC)" == "win32-msvc2002" || "$(QMAKESPEC)" == "win32-msvc2003" || "$(QMAKESPEC)" == "win32-msvc2005" || "$(QMAKESPEC)" == "win32-msvc2008" || "$(QMAKESPEC)" == "win32-msvc2010" || "$(QMAKESPEC)" == "win32-msvc2012" || "$(QMAKESPEC)" == "win32-msvc2013" || "$(QMAKESPEC)" == "win32-icc"
+!IF "$(QMAKESPEC)" == "win32-msvc" || "$(QMAKESPEC)" == "win32-msvc.net" || "$(QMAKESPEC)" == "win32-msvc2002" || "$(QMAKESPEC)" == "win32-msvc2003" || "$(QMAKESPEC)" == "win32-msvc2005" || "$(QMAKESPEC)" == "win32-msvc2008" || "$(QMAKESPEC)" == "win32-msvc2010" || "$(QMAKESPEC)" == "win32-msvc2012" || "$(QMAKESPEC)" == "win32-msvc2013" || "$(QMAKESPEC)" == "win32-msvc2015" || "$(QMAKESPEC)" == "win32-icc"
!if "$(SOURCE_PATH)" == ""
SOURCE_PATH = ..
@@ -28,6 +28,8 @@ LINKER = link
CFLAGS_EXTRA = /Zc:wchar_t-
!elseif "$(QMAKESPEC)" == "win32-msvc2008" || "$(QMAKESPEC)" == "win32-msvc2010" || "$(QMAKESPEC)" == "win32-msvc2012" || "$(QMAKESPEC)" == "win32-msvc2013"
CFLAGS_EXTRA = /MP /D_CRT_SECURE_NO_WARNINGS $(CFLAGS_CRT)
+!elseif "$(QMAKESPEC)" == "win32-msvc2015"
+CFLAGS_EXTRA = /MP /D_CRT_SECURE_NO_WARNINGS /Zc:strictStrings /w44456 /w44457 /w44458 $(CFLAGS_CRT)
!endif
CFLAGS_BARE = -c -Fo./ -Fdqmake.pdb \
diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp
index 3c53421fc4..42431f0131 100644
--- a/qmake/generators/win32/mingw_make.cpp
+++ b/qmake/generators/win32/mingw_make.cpp
@@ -66,6 +66,11 @@ QString MingwMakefileGenerator::getLibTarget()
return QString("lib" + project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".a");
}
+QString MingwMakefileGenerator::getManifestFileForRcFile() const
+{
+ return project->first("QMAKE_MANIFEST").toQString();
+}
+
bool MingwMakefileGenerator::findLibraries()
{
QList<QMakeLocalFileName> dirs;
diff --git a/qmake/generators/win32/mingw_make.h b/qmake/generators/win32/mingw_make.h
index 2442ea852b..bd26f343dc 100644
--- a/qmake/generators/win32/mingw_make.h
+++ b/qmake/generators/win32/mingw_make.h
@@ -46,6 +46,7 @@ public:
protected:
QString escapeDependencyPath(const QString &path) const;
QString getLibTarget();
+ virtual QString getManifestFileForRcFile() const;
bool writeMakefile(QTextStream &);
void init();
private:
diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp
index 1f51ff0342..e9f0d17718 100644
--- a/qmake/generators/win32/msbuild_objectmodel.cpp
+++ b/qmake/generators/win32/msbuild_objectmodel.cpp
@@ -615,7 +615,6 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool)
bool isWinRT = false;
bool isWinPhone = false;
- bool isWinPhone80 = false; // ### Windows Phone 8.0, remove in Qt 5.4
for (int i = 0; i < tool.SingleProjects.count(); ++i) {
xml << tag("ProjectConfiguration")
<< attrTag("Include" , tool.SingleProjects.at(i).Configuration.Name)
@@ -624,7 +623,6 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool)
<< closetag();
isWinRT = isWinRT || tool.SingleProjects.at(i).Configuration.WinRT;
isWinPhone = isWinPhone = tool.SingleProjects.at(i).Configuration.WinPhone;
- isWinPhone80 = isWinPhone80 || tool.SingleProjects.at(i).Configuration.WinPhone80;
}
xml << closetag()
@@ -636,18 +634,10 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool)
if (isWinRT) {
xml << tagValue("MinimumVisualStudioVersion", tool.Version)
- << tagValue("DefaultLanguage", "en");
- if (isWinPhone80) {
- xml << tagValue("WinMDAssembly", "true");
- if (tool.SingleProjects.at(0).Configuration.ConfigurationType == typeApplication) {
- xml << tagValue("XapOutputs", "true");
- xml << tagValue("XapFilename", "$(RootNamespace)_$(Configuration)_$(Platform).xap");
- }
- } else {
- xml << tagValue("AppContainerApplication", "true")
- << tagValue("ApplicationType", isWinPhone ? "Windows Phone" : "Windows Store")
- << tagValue("ApplicationTypeRevision", tool.SdkVersion);
- }
+ << tagValue("DefaultLanguage", "en")
+ << tagValue("AppContainerApplication", "true")
+ << tagValue("ApplicationType", isWinPhone ? "Windows Phone" : "Windows Store")
+ << tagValue("ApplicationTypeRevision", tool.SdkVersion);
}
xml << closetag();
@@ -832,19 +822,9 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool)
}
outputFilter(tool, xml, xmlFilter, "Root Files");
- if (isWinPhone80) {
- xml << tag("ItemGroup")
- << tag("Reference")
- << attrTag("Include", "platform")
- << attrTagS("IsWinMDFile", "true")
- << attrTagS("Private", "false")
- << closetag()
- << closetag();
- }
-
// App manifest
if (isWinRT) {
- QString manifest = isWinPhone80 ? QStringLiteral("WMAppManifest.xml") : QStringLiteral("Package.appxmanifest");
+ const QString manifest = QStringLiteral("Package.appxmanifest");
// Find all icons referenced in the manifest
QSet<QString> icons;
@@ -865,7 +845,7 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool)
// Write out manifest + icons as content items
xml << tag(_ItemGroup)
- << tag(isWinPhone80 ? "Xml" : "AppxManifest")
+ << tag("AppxManifest")
<< attrTag("Include", manifest)
<< closetag();
foreach (const QString &icon, icons) {
@@ -876,12 +856,8 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool)
xml << closetag();
}
- xml << import("Project", "$(VCTargetsPath)\\Microsoft.Cpp.targets");
-
- if (isWinPhone80)
- xml << import("Project", "$(MSBuildExtensionsPath)\\Microsoft\\WindowsPhone\\v8.0\\Microsoft.Cpp.WindowsPhone.8.0.targets");
-
- xml << tag("ImportGroup")
+ xml << import("Project", "$(VCTargetsPath)\\Microsoft.Cpp.targets")
+ << tag("ImportGroup")
<< attrTag("Label", "ExtensionTargets")
<< closetag();
}
@@ -1968,11 +1944,13 @@ bool VCXProjectWriter::outputFileConfig(OutputFilterData *d, XmlOutput &xml, Xml
}
if ( !filter.CompilerTool.PrecompiledHeaderThrough.isEmpty() ) {
-
xml << tag("PrecompiledHeaderFile")
<< attrTag("Condition", condition)
- << valueTag(filter.CompilerTool.PrecompiledHeaderThrough)
- << tag("PrecompiledHeader")
+ << valueTag(filter.CompilerTool.PrecompiledHeaderThrough);
+ }
+
+ if (filter.CompilerTool.UsePrecompiledHeader != pchUnset) {
+ xml << tag("PrecompiledHeader")
<< attrTag("Condition", condition)
<< valueTag(toString(filter.CompilerTool.UsePrecompiledHeader));
}
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index 758db337ea..9544ce8381 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -160,10 +160,7 @@ NmakeMakefileGenerator::writeMakefile(QTextStream &t)
QString windowsPath;
if (isPhone) {
- if (targetVer == "WP80") // ### Windows Phone 8.0, remove in Qt 5.4
- windowsPath = "Microsoft\\Microsoft SDKs\\WindowsPhone\\v";
- else
- windowsPath = "Microsoft\\Microsoft SDKs\\WindowsPhoneApp\\v";
+ windowsPath = "Microsoft\\Microsoft SDKs\\WindowsPhoneApp\\v";
} else {
windowsPath = "Microsoft\\Microsoft SDKs\\Windows\\v";
}
@@ -184,8 +181,6 @@ NmakeMakefileGenerator::writeMakefile(QTextStream &t)
QStringList binDirs;
if (isPhone) {
QString sdkDir = vcInstallDir;
- if (targetVer == "WP80")
- sdkDir += QStringLiteral("/WPSDK/") + targetVer;
if (!QDir(sdkDir).exists()) {
fprintf(stderr, "Failed to find the Windows Phone SDK in %s.\n"
"Check that it is properly installed.\n",
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index 74a0a20ea2..26ba2a06aa 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -2137,7 +2137,6 @@ VCPreLinkEventTool::VCPreLinkEventTool()
VCConfiguration::VCConfiguration()
: WinRT(false),
WinPhone(false),
- WinPhone80(false),
ATLMinimizesCRunTimeLibraryUsage(unset),
BuildBrowserInformation(unset),
CharacterSet(charSetNotSet),
@@ -2237,7 +2236,8 @@ void VCFilter::modifyPCHstage(QString str)
useCompilerTool = true;
// Setup PCH options
CompilerTool.UsePrecompiledHeader = (isCFile ? pchNone : pchCreateUsingSpecific);
- CompilerTool.PrecompiledHeaderThrough = (isCPPFile ? Project->precompHFilename : QString("$(NOINHERIT)"));
+ if (isCFile)
+ CompilerTool.PrecompiledHeaderThrough = QLatin1String("$(NOINHERIT)");
CompilerTool.ForcedIncludeFiles = QStringList("$(NOINHERIT)");
}
diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h
index 4b70ca3d71..f16e5446bb 100644
--- a/qmake/generators/win32/msvc_objectmodel.h
+++ b/qmake/generators/win32/msvc_objectmodel.h
@@ -873,7 +873,7 @@ public:
bool suppressUnknownOptionWarnings;
DotNET CompilerVersion;
- bool WinRT, WinPhone, WinPhone80;
+ bool WinRT, WinPhone;
// Variables
triState ATLMinimizesCRunTimeLibraryUsage;
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index f271eb0679..61c0cda89e 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -908,11 +908,6 @@ void VcprojGenerator::initProject()
initFormFiles();
initResourceFiles();
initExtraCompilerOutputs();
- if (vcProject.Configuration.WinRT) {
- if (vcProject.Configuration.WinPhone80
- && vcProject.Configuration.ConfigurationType == typeApplication)
- initWMAppManifest();
- }
// Own elements -----------------------------
vcProject.Name = unescapeFilePath(project->first("QMAKE_ORIG_TARGET").toQString());
@@ -1020,7 +1015,6 @@ void VcprojGenerator::initConfiguration()
conf.WinRT = project->isActiveConfig("winrt");
if (conf.WinRT) {
conf.WinPhone = project->isActiveConfig("winphone");
- conf.WinPhone80 = project->first("WINTARGET_VER") == "WP80";
// Saner defaults
conf.compiler.UsePrecompiledHeader = pchNone;
conf.compiler.CompileAsWinRT = _False;
@@ -1616,68 +1610,6 @@ void VcprojGenerator::initExtraCompilerOutputs()
}
}
-void VcprojGenerator::initWMAppManifest()
-{
- if (!project->isActiveConfig("autogen_wmappmanifest"))
- return;
-
- // autogen_wmappmanifest
- QFile file(Option::output_dir + "\\WMAppManifest.xml");
- if (!file.open(QFile::WriteOnly))
- return;
-
- QTextStream stream(&file);
-
- QString productID = project->first("PRODUCTID").toQString();
- QString target = project->first("TARGET").toQString();
- QString author = project->first("AUTHOR").toQString();
- QString publisher = project->first("PUBLISHER").toQString();
- QString publisherID = project->first("PUBLISHERID").toQString();
- QString description = project->first("DESCRIPTION").toQString();
-
- if (author.isEmpty())
- author = "Qt";
- if (publisher.isEmpty())
- publisher = "Qt";
- if (productID.isEmpty())
- productID = QUuid::createUuid().toString();
- if (publisherID.isEmpty())
- publisherID = QUuid::createUuid().toString();
-
- stream << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
- << "<Deployment xmlns=\"http://schemas.microsoft.com/windowsphone/2012/deployment\" AppPlatformVersion=\"8.0\">\n"
- << " <DefaultLanguage xmlns=\"\" code=\"en-US\"/>\n"
- << " <App xmlns=\"\" ProductID=\"" << productID << "\" Title=\"" << target
- << "\" RuntimeType=\"Modern Native\" Version=\"1.0.0.0\""
- << " Genre=\"apps.normal\" Author=\"" << author
- << "\" Description=\"" << description << "\" Publisher=\"" << publisher
- << "\" PublisherID=\"" << publisherID << "\">\n"
- << " <IconPath IsRelative=\"true\" IsResource=\"false\">ApplicationIcon.png</IconPath>\n"
- << " <Capabilities>\n"
- << " <Capability Name=\"ID_CAP_NETWORKING\" />\n"
- << " <Capability Name=\"ID_CAP_MEDIALIB_AUDIO\" />\n"
- << " <Capability Name=\"ID_CAP_MEDIALIB_PLAYBACK\" />\n"
- << " </Capabilities>\n"
- << " <Tasks>\n"
- << " <DefaultTask Name=\"_default\" ImagePath=\"" << target << ".exe\" ImageParams=\"\" />\n"
- << " </Tasks>\n"
- << " <Tokens>\n"
- << " <PrimaryToken TokenID=\"" << target << "Token\" TaskName=\"_default\">\n"
- << " <TemplateType5>\n"
- << " <Count>0</Count>\n"
- << " <Title>" << target << "</Title>\n"
- << " </TemplateType5>\n"
- << " </PrimaryToken>\n"
- << " </Tokens>\n"
- << " <ScreenResolutions>\n"
- << " <ScreenResolution Name=\"ID_RESOLUTION_WVGA\" />\n"
- << " <ScreenResolution Name=\"ID_RESOLUTION_WXGA\" />\n"
- << " <ScreenResolution Name=\"ID_RESOLUTION_HD720P\" />\n"
- << " </ScreenResolutions>\n"
- << " </App>\n"
- << "</Deployment>\n";
-}
-
void VcprojGenerator::initOld()
{
// $$QMAKE.. -> $$MSVCPROJ.. -------------------------------------
diff --git a/qmake/generators/win32/msvc_vcproj.h b/qmake/generators/win32/msvc_vcproj.h
index f436b6da20..f155fc2d5f 100644
--- a/qmake/generators/win32/msvc_vcproj.h
+++ b/qmake/generators/win32/msvc_vcproj.h
@@ -113,7 +113,6 @@ protected:
void initDeploymentFiles();
void initLexYaccFiles();
void initExtraCompilerOutputs();
- void initWMAppManifest();
void writeSubDirs(QTextStream &t); // Called from VCXProj backend
QUuid getProjectUUID(const QString &filename=QString()); // Called from VCXProj backend
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
index 81bc16a3c6..b6bcdbf366 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -368,7 +368,8 @@ void Win32MakefileGenerator::processRcFileVar()
if (Option::qmake_mode == Option::QMAKE_GENERATE_NOTHING)
return;
- if (((!project->values("VERSION").isEmpty() || !project->values("RC_ICONS").isEmpty())
+ const QString manifestFile = getManifestFileForRcFile();
+ if (((!project->values("VERSION").isEmpty() || !project->values("RC_ICONS").isEmpty() || !manifestFile.isEmpty())
&& project->values("RC_FILE").isEmpty()
&& project->values("RES_FILE").isEmpty()
&& !project->isActiveConfig("no_generated_target_info")
@@ -412,7 +413,7 @@ void Win32MakefileGenerator::processRcFileVar()
ts << "# if defined(UNDER_CE)\n";
ts << "# include <winbase.h>\n";
ts << "# else\n";
- ts << "# include <winver.h>\n";
+ ts << "# include <windows.h>\n";
ts << "# endif\n";
ts << endl;
if (!rcIcons.isEmpty()) {
@@ -420,6 +421,14 @@ void Win32MakefileGenerator::processRcFileVar()
ts << QString("IDI_ICON%1\tICON\tDISCARDABLE\t%2").arg(i + 1).arg(cQuoted(rcIcons[i])) << endl;
ts << endl;
}
+ if (!manifestFile.isEmpty()) {
+ QString manifestResourceId;
+ if (project->first("TEMPLATE") == "lib")
+ manifestResourceId = QStringLiteral("ISOLATIONAWARE_MANIFEST_RESOURCE_ID");
+ else
+ manifestResourceId = QStringLiteral("CREATEPROCESS_MANIFEST_RESOURCE_ID");
+ ts << manifestResourceId << " RT_MANIFEST \"" << manifestFile << "\"\n";
+ }
ts << "VS_VERSION_INFO VERSIONINFO\n";
ts << "\tFILEVERSION " << QString(versionString).replace(".", ",") << endl;
ts << "\tPRODUCTVERSION " << QString(versionString).replace(".", ",") << endl;
@@ -894,4 +903,9 @@ QString Win32MakefileGenerator::cQuoted(const QString &str)
return ret;
}
+QString Win32MakefileGenerator::getManifestFileForRcFile() const
+{
+ return QString();
+}
+
QT_END_NAMESPACE
diff --git a/qmake/generators/win32/winmakefile.h b/qmake/generators/win32/winmakefile.h
index 3016bad5b4..468f2f3ee6 100644
--- a/qmake/generators/win32/winmakefile.h
+++ b/qmake/generators/win32/winmakefile.h
@@ -66,6 +66,7 @@ protected:
void processRcFileVar();
virtual QString getLibTarget();
static QString cQuoted(const QString &str);
+ virtual QString getManifestFileForRcFile() const;
};
inline Win32MakefileGenerator::~Win32MakefileGenerator()
diff --git a/qmake/qmake.pri b/qmake/qmake.pri
index 4de41d63e6..57dcbb0586 100644
--- a/qmake/qmake.pri
+++ b/qmake/qmake.pri
@@ -138,8 +138,8 @@ bootstrap { #Qt code
SOURCES += qfilesystemengine_unix.cpp qfilesystemiterator_unix.cpp qfsfileengine_unix.cpp
mac {
SOURCES += qcore_mac.cpp qsettings_mac.cpp
- OBJECTIVE_SOURCES += qlocale_mac.mm
- LIBS += -framework ApplicationServices
+ OBJECTIVE_SOURCES += qcore_mac_objc.mm qlocale_mac.mm
+ LIBS += -framework ApplicationServices -framework CoreServices -framework Foundation
} else {
SOURCES += qlocale_unix.cpp
}