diff options
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/Makefile.unix | 4 | ||||
-rw-r--r-- | qmake/Makefile.win32 | 4 | ||||
-rw-r--r-- | qmake/generators/win32/mingw_make.cpp | 5 | ||||
-rw-r--r-- | qmake/generators/win32/mingw_make.h | 1 | ||||
-rw-r--r-- | qmake/generators/win32/msbuild_objectmodel.cpp | 48 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_nmake.cpp | 7 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 4 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.h | 2 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 68 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.h | 1 | ||||
-rw-r--r-- | qmake/generators/win32/winmakefile.cpp | 18 | ||||
-rw-r--r-- | qmake/generators/win32/winmakefile.h | 1 | ||||
-rw-r--r-- | qmake/qmake.pri | 4 |
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 } |