diff options
author | Liang Qi <liang.qi@qt.io> | 2016-12-13 09:36:26 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-12-13 09:39:20 +0100 |
commit | 6755ec891a1740110c48895afd53d39e8370704a (patch) | |
tree | 982606f3bc582262e4b315a63f55ccb141fff97b /qmake | |
parent | 449204f8c0d6679ae0e58dbb8a30b8a86fbdb4ec (diff) | |
parent | 00c9ec63a552d040e851b561c11428fabf1a2b08 (diff) |
Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
configure
qmake/Makefile.unix.macos
qmake/Makefile.unix.win32
qmake/generators/win32/msvc_vcproj.cpp
src/3rdparty/pcre/qt_attribution.json
src/corelib/io/qsettings.cpp
src/corelib/kernel/qdeadlinetimer.cpp
src/platformsupport/kmsconvenience/qkmsdevice.cpp
src/platformsupport/kmsconvenience/qkmsdevice_p.h
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.cpp
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsdevice.cpp
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h
tests/manual/qstorageinfo/printvolumes.cpp
tools/configure/configureapp.cpp
Change-Id: Ibaabcc8e965c44926f9fb018466e8b132b8df49e
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/Makefile.unix | 9 | ||||
-rw-r--r-- | qmake/Makefile.unix.macos | 17 | ||||
-rw-r--r-- | qmake/Makefile.unix.mingw | 27 | ||||
-rw-r--r-- | qmake/Makefile.unix.unix | 11 | ||||
-rw-r--r-- | qmake/Makefile.unix.win32 | 21 | ||||
-rw-r--r-- | qmake/Makefile.win32 | 16 | ||||
-rw-r--r-- | qmake/doc/src/qmake-manual.qdoc | 6 | ||||
-rw-r--r-- | qmake/generators/makefile.cpp | 2 | ||||
-rw-r--r-- | qmake/generators/win32/mingw_make.cpp | 9 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_nmake.cpp | 9 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 9 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.h | 13 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 18 | ||||
-rw-r--r-- | qmake/generators/win32/winmakefile.cpp | 24 | ||||
-rw-r--r-- | qmake/library/qmakeevaluator.cpp | 13 | ||||
-rw-r--r-- | qmake/qmake.pro | 1 |
16 files changed, 155 insertions, 50 deletions
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix index 425fe62ef6..33ec2508e2 100644 --- a/qmake/Makefile.unix +++ b/qmake/Makefile.unix @@ -20,7 +20,7 @@ QOBJS=qtextcodec.o qutfcodec.o qstring.o qstring_compat.o qstringbuilder.o qtext qvariant.o qvsnprintf.o qlocale.o qlocale_tools.o qlinkedlist.o qnumeric.o \ qcryptographichash.o qxmlstream.o qxmlutils.o qlogging.o qoperatingsystemversion.o \ qjson.o qjsondocument.o qjsonparser.o qjsonarray.o qjsonobject.o qjsonvalue.o \ - $(QTOBJS) + $(QTOBJS) $(QTOBJS2) #all sources, used for the depend target @@ -92,11 +92,11 @@ DEPEND_SRC = \ $(SOURCE_PATH)/src/corelib/json/qjsonarray.cpp \ $(SOURCE_PATH)/src/corelib/json/qjsonobject.cpp \ $(SOURCE_PATH)/src/corelib/json/qjsonvalue.cpp \ - $(QTSRCS) + $(QTSRCS) $(QTSRCS2) CPPFLAGS = -g $(EXTRA_CPPFLAGS) \ -I$(QMKSRC) -I$(QMKLIBSRC) -I$(QMKSRC)/generators -I$(QMKSRC)/generators/unix -I$(QMKSRC)/generators/win32 \ - -I$(QMKSRC)/generators/mac -I$(QMKSRC)/generators/integrity \ + -I$(QMKSRC)/generators/mac \ -I$(INC_PATH) -I$(INC_PATH)/QtCore \ -I$(INC_PATH)/QtCore/$(QT_VERSION) -I$(INC_PATH)/QtCore/$(QT_VERSION)/QtCore \ -I$(BUILD_PATH)/src/corelib/global \ @@ -106,7 +106,8 @@ CPPFLAGS = -g $(EXTRA_CPPFLAGS) \ -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL \ -DQT_NO_FOREACH -CXXFLAGS = $(EXTRA_CXXFLAGS) $(CPPFLAGS) +CXXFLAGS = $(EXTRA_CXXFLAGS) $(CONFIG_CXXFLAGS) $(CPPFLAGS) +LFLAGS = $(EXTRA_LFLAGS) $(CONFIG_LFLAGS) first all: $(BUILD_PATH)/bin/qmake$(EXEEXT) qmake: $(BUILD_PATH)/bin/qmake$(EXEEXT) diff --git a/qmake/Makefile.unix.macos b/qmake/Makefile.unix.macos new file mode 100644 index 0000000000..2708d2aab5 --- /dev/null +++ b/qmake/Makefile.unix.macos @@ -0,0 +1,17 @@ +COCOA_LFLAGS = -framework Foundation -framework CoreServices +CARBON_LFLAGS = -framework ApplicationServices +CARBON_CFLAGS = -fconstant-cfstrings + +EXTRA_CXXFLAGS = $(CARBON_CFLAGS) +EXTRA_LFLAGS = $(COCOA_LFLAGS) $(CARBON_LFLAGS) + +QTOBJS2 = \ + qsettings_mac.o \ + qcore_mac.o \ + qoperatingsystemversion_darwin.o \ + qcore_foundation.o +QTSRCS2 = \ + $(SOURCE_PATH)/src/corelib/io/qsettings_mac.cpp \ + $(SOURCE_PATH)/src/corelib/kernel/qcore_mac.cpp \ + $(SOURCE_PATH)/src/corelib/global/qoperatingsystemversion_darwin.mm \ + $(SOURCE_PATH)/src/corelib/kernel/qcore_foundation.mm diff --git a/qmake/Makefile.unix.mingw b/qmake/Makefile.unix.mingw new file mode 100644 index 0000000000..2c52c07dca --- /dev/null +++ b/qmake/Makefile.unix.mingw @@ -0,0 +1,27 @@ +# SHELL is the full path of sh.exe, unless +# 1) it is found in the current directory +# 2) it is not found at all +# 3) it is overridden on the command line with an existing file +# ... otherwise it is always sh.exe. Specifically, SHELL from the +# environment has no effect. +# +# This check will fail if SHELL is explicitly set to a not +# sh-compatible shell. This is not a problem, because configure.bat +# will not do that. +ifeq ($(SHELL), sh.exe) + ifeq ($(wildcard $(CURDIR)/sh.exe), ) + SH = 0 + else + SH = 1 + endif +else + SH = 1 +endif + +ifeq ($(SH), 1) + RM_F = rm -f + RM_RF = rm -rf +else + RM_F = del /f + RM_RF = rmdir /s /q +endif diff --git a/qmake/Makefile.unix.unix b/qmake/Makefile.unix.unix new file mode 100644 index 0000000000..63eba4f5a5 --- /dev/null +++ b/qmake/Makefile.unix.unix @@ -0,0 +1,11 @@ +EXEEXT = +QTOBJS = \ + qfilesystemengine_unix.o \ + qfilesystemiterator_unix.o \ + qfsfileengine_unix.o \ + qlocale_unix.o +QTSRCS = \ + $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qlocale_unix.cpp diff --git a/qmake/Makefile.unix.win32 b/qmake/Makefile.unix.win32 new file mode 100644 index 0000000000..b2d8a0b1af --- /dev/null +++ b/qmake/Makefile.unix.win32 @@ -0,0 +1,21 @@ +EXEEXT = .exe +EXTRA_CXXFLAGS = -DUNICODE +EXTRA_LFLAGS = -static -s -lole32 -luuid -ladvapi32 -lkernel32 +QTOBJS = \ + qfilesystemengine_win.o \ + qfilesystemiterator_win.o \ + qfsfileengine_win.o \ + qlocale_win.o \ + qsettings_win.o \ + qoperatingsystemversion_win.o \ + qsystemlibrary.o \ + registry.o +QTSRCS = \ + $(SOURCE_PATH)/src/corelib/global/qoperatingsystemversion_win.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp \ + $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp \ + $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp \ + $(SOURCE_PATH)/tools/shared/windows/registry.cpp diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32 index f023dc9e3f..db8572839e 100644 --- a/qmake/Makefile.win32 +++ b/qmake/Makefile.win32 @@ -23,7 +23,7 @@ CXX = cl LINKER = link ! if "$(QMAKESPEC)" == "win32-msvc2013" CFLAGS_EXTRA = /MP /D_CRT_SECURE_NO_WARNINGS /D_SCL_SECURE_NO_WARNINGS $(CFLAGS_CRT) -! elseif "$(QMAKESPEC)" == "win32-msvc2015" || "$(QMAKESPEC)" == "win32-clang-msvc2015" +! elseif "$(QMAKESPEC)" == "win32-msvc2015" || "$(QMAKESPEC)" == "win32-msvc2017" || "$(QMAKESPEC)" == "win32-clang-msvc2015" CFLAGS_EXTRA = /MP /D_CRT_SECURE_NO_WARNINGS /D_SCL_SECURE_NO_WARNINGS /Zc:strictStrings /w44456 /w44457 /w44458 /wd4577 $(CFLAGS_CRT) ! else ! error Unsupported compiler for this Makefile @@ -38,7 +38,7 @@ PCH_OBJECT = qmake_pch.obj CFLAGS_BARE = -c -Fo./ -Fdqmake.pdb \ -W3 -nologo -O1 \ $(CFLAGS_EXTRA) \ - -I$(QMKSRC) -I$(QMKSRC)\library -I$(QMKSRC)\generators -I$(QMKSRC)\generators\unix -I$(QMKSRC)\generators\win32 -I$(QMKSRC)\generators\mac -I$(QMKSRC)\generators\integrity \ + -I$(QMKSRC) -I$(QMKSRC)\library -I$(QMKSRC)\generators -I$(QMKSRC)\generators\unix -I$(QMKSRC)\generators\win32 -I$(QMKSRC)\generators\mac \ -I$(INC_PATH) -I$(INC_PATH)\QtCore -I$(INC_PATH)\QtCore\$(QT_VERSION) -I$(INC_PATH)\QtCore\$(QT_VERSION)\QtCore \ -I$(BUILD_PATH)\src\corelib\global \ -I$(SOURCE_PATH)\mkspecs\$(QMAKESPEC) \ @@ -149,18 +149,9 @@ distclean:: clean -del $(BUILD_PATH)\bin\qmake.exe -del Makefile -.c.obj: - $(CXX) $(CFLAGS) $< - .cpp.obj: $(CXX) $(CXXFLAGS) $< -.cc.obj: - $(CXX) $(CXXFLAGS) $< - -.cxx.obj: - $(CXX) $(CXXFLAGS) $< - $(OBJS): $(PCH_OBJECT) $(QTOBJS): $(PCH_OBJECT) @@ -176,9 +167,6 @@ qmake_pch.obj: {$(SOURCE_PATH)\qmake\generators\mac}.cpp{}.obj:: $(CXX) $(CXXFLAGS) $< -{$(SOURCE_PATH)\qmake\generators\integrity}.cpp{}.obj:: - $(CXX) $(CXXFLAGS) $< - {$(SOURCE_PATH)\qmake\generators\unix}.cpp{}.obj:: $(CXX) $(CXXFLAGS) $< diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc index aa6c8b35cc..c3c878ebb8 100644 --- a/qmake/doc/src/qmake-manual.qdoc +++ b/qmake/doc/src/qmake-manual.qdoc @@ -2057,6 +2057,12 @@ value of this variable is typically handled by qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified. + \section1 QMAKE_OBJECTIVE_CFLAGS + + Specifies the Objective C/C++ compiler flags for building + a project. These flags are used in addition to QMAKE_CFLAGS and + QMAKE_CXXFLAGS. + \section1 QMAKE_POST_LINK Specifies the command to execute after linking the \l{TARGET} diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index 4450e619b9..1ba2587bd0 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -1839,7 +1839,7 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t) QString dep_cd_cmd; if (!tmp_dep_cmd.isEmpty()) { dep_cd_cmd = QLatin1String("cd ") - + escapeFilePath(Option::fixPathToLocalOS(Option::output_dir, false)) + + IoUtils::shellQuote(Option::fixPathToLocalOS(Option::output_dir, false)) + QLatin1String(" && "); } const ProStringList &vars = project->values(ProKey(*it + ".variables")); diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp index 382b10c37b..e3d76cd76e 100644 --- a/qmake/generators/win32/mingw_make.cpp +++ b/qmake/generators/win32/mingw_make.cpp @@ -308,7 +308,12 @@ void MingwMakefileGenerator::writeBuildRulesPart(QTextStream &t) { t << "first: all\n"; t << "all: " << escapeDependencyPath(fileFixify(Option::output.fileName())) - << ' ' << depVar("ALL_DEPS") << " $(DESTDIR_TARGET)\n\n"; + << ' ' << depVar("ALL_DEPS"); + if (project->first("TEMPLATE") == "aux") { + t << "\n\n"; + return; + } + t << " $(DESTDIR_TARGET)\n\n"; t << "$(DESTDIR_TARGET): " << depVar("PRE_TARGETDEPS") << " $(OBJECTS) " << depVar("POST_TARGETDEPS"); if(!project->isEmpty("QMAKE_PRE_LINK")) t << "\n\t" <<var("QMAKE_PRE_LINK"); @@ -318,7 +323,7 @@ void MingwMakefileGenerator::writeBuildRulesPart(QTextStream &t) } else { t << "\n\t" << objectsLinkLine << " " ; } - } else if (project->first("TEMPLATE") != "aux") { + } else { t << "\n\t$(LINKER) $(LFLAGS) " << var("QMAKE_LINK_O_FLAG") << "$(DESTDIR_TARGET) " << objectsLinkLine << " $(LIBS)"; } if(!project->isEmpty("QMAKE_POST_LINK")) diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp index 1739f66453..3a4f6242b2 100644 --- a/qmake/generators/win32/msvc_nmake.cpp +++ b/qmake/generators/win32/msvc_nmake.cpp @@ -517,7 +517,12 @@ void NmakeMakefileGenerator::writeBuildRulesPart(QTextStream &t) t << "first: all\n"; t << "all: " << escapeDependencyPath(fileFixify(Option::output.fileName())) - << ' ' << depVar("ALL_DEPS") << " $(DESTDIR_TARGET)\n\n"; + << ' ' << depVar("ALL_DEPS"); + if (templateName == "aux") { + t << "\n\n"; + return; + } + t << " $(DESTDIR_TARGET)\n\n"; t << "$(DESTDIR_TARGET): " << depVar("PRE_TARGETDEPS") << " $(OBJECTS) " << depVar("POST_TARGETDEPS"); if(!project->isEmpty("QMAKE_PRE_LINK")) @@ -526,7 +531,7 @@ void NmakeMakefileGenerator::writeBuildRulesPart(QTextStream &t) t << "\n\t$(LIBAPP) $(LIBFLAGS) " << var("QMAKE_LINK_O_FLAG") << "$(DESTDIR_TARGET) @<<\n\t " << "$(OBJECTS)" << "\n<<"; - } else if (templateName != "aux") { + } else { const bool embedManifest = ((templateName == "app" && project->isActiveConfig("embed_manifest_exe")) || (templateName == "lib" && project->isActiveConfig("embed_manifest_dll") && !(project->isActiveConfig("plugin") && project->isActiveConfig("no_plugin_manifest")) diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index f219130e18..1fb83d719e 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -29,9 +29,14 @@ #include "msvc_objectmodel.h" #include "msvc_vcproj.h" #include "msvc_vcxproj.h" + +#include <ioutils.h> + #include <qscopedpointer.h> #include <qfileinfo.h> +using namespace QMakeInternal; + QT_BEGIN_NAMESPACE static DotNET vsVersionFromString(const char *versionString) @@ -2173,7 +2178,6 @@ VCConfiguration::VCConfiguration() compiler.config = this; linker.config = this; idl.config = this; - custom.config = this; } // VCFilter --------------------------------------------------------- @@ -2347,7 +2351,7 @@ bool VCFilter::addExtraCompiler(const VCFilterFile &info) tmp_dep_cmd, inFile, out, MakefileGenerator::LocalShell); if(Project->canExecute(dep_cmd)) { dep_cmd.prepend(QLatin1String("cd ") - + Project->escapeFilePath(Option::fixPathToLocalOS(Option::output_dir, false)) + + IoUtils::shellQuote(Option::fixPathToLocalOS(Option::output_dir, false)) + QLatin1String(" && ")); if (FILE *proc = QT_POPEN(dep_cmd.toLatin1().constData(), QT_POPEN_READ)) { QString indeps; @@ -2896,7 +2900,6 @@ void VCProjectWriter::write(XmlOutput &xml, const VCConfiguration &tool) << attrE(_UseOfMfc, tool.UseOfMfc) << attrT(_WholeProgramOptimization, tool.WholeProgramOptimization); write(xml, tool.compiler); - write(xml, tool.custom); if (tool.ConfigurationType == typeStaticLibrary) write(xml, tool.librarian); else diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h index 35bc3913a8..025112701b 100644 --- a/qmake/generators/win32/msvc_objectmodel.h +++ b/qmake/generators/win32/msvc_objectmodel.h @@ -51,7 +51,8 @@ enum DotNET { NET2010 = 0xa0, NET2012 = 0xb0, NET2013 = 0xc0, - NET2015 = 0xd0 + NET2015 = 0xd0, + NET2017 = 0xe0 }; DotNET vsVersionFromString(const ProString &versionString); @@ -896,7 +897,6 @@ public: VCLinkerTool linker; VCLibrarianTool librarian; VCManifestTool manifestTool; - VCCustomBuildTool custom; VCMIDLTool idl; VCPostBuildEventTool postBuild; VCPreBuildEventTool preBuild; @@ -912,24 +912,15 @@ struct VCFilterFile { excludeFromBuild = false; } VCFilterFile(const QString &filename, bool exclude = false ) { file = filename; excludeFromBuild = exclude; } - VCFilterFile(const QString &filename, const QString &additional, bool exclude = false ) - { file = filename; excludeFromBuild = exclude; additionalFile = additional; } - bool operator==(const VCFilterFile &other){ - return file == other.file - && additionalFile == other.additionalFile - && excludeFromBuild == other.excludeFromBuild; - } bool excludeFromBuild; QString file; - QString additionalFile; // For tools like MOC }; #ifndef QT_NO_DEBUG_OUTPUT inline QDebug operator<<(QDebug dbg, const VCFilterFile &p) { dbg.nospace() << "VCFilterFile(file(" << p.file - << ") additionalFile(" << p.additionalFile << ") excludeFromBuild(" << p.excludeFromBuild << "))" << endl; return dbg.space(); } diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index 77cb554ec6..a5ee42a449 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -29,15 +29,21 @@ #include "msvc_vcproj.h" #include "option.h" #include "xmloutput.h" + +#include <ioutils.h> + #include <qdir.h> #include <qdiriterator.h> #include <qcryptographichash.h> #include <qhash.h> #include <quuid.h> + #include <stdlib.h> //#define DEBUG_SOLUTION_GEN +using namespace QMakeInternal; + QT_BEGIN_NAMESPACE // Filter GUIDs (Do NOT change these!) ------------------------------ const char _GUIDSourceFiles[] = "{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"; @@ -66,6 +72,8 @@ const char _slnHeader120[] = "Microsoft Visual Studio Solution File, Format "\n# Visual Studio 2013"; const char _slnHeader140[] = "Microsoft Visual Studio Solution File, Format Version 12.00" "\n# Visual Studio 2015"; +const char _slnHeader141[] = "Microsoft Visual Studio Solution File, Format Version 12.00" + "\n# Visual Studio 2017"; // The following UUID _may_ change for later servicepacks... // If so we need to search through the registry at // HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0\Projects @@ -294,6 +302,8 @@ QString VcprojGenerator::retrievePlatformToolSet() const return QStringLiteral("v120") + suffix; case NET2015: return QStringLiteral("v140") + suffix; + case NET2017: + return QStringLiteral("v141") + suffix; default: return QString(); } @@ -521,6 +531,9 @@ void VcprojGenerator::writeSubDirs(QTextStream &t) } switch (vcProject.Configuration.CompilerVersion) { + case NET2017: + t << _slnHeader141; + break; case NET2015: t << _slnHeader140; break; @@ -843,6 +856,9 @@ void VcprojGenerator::initProject() // Own elements ----------------------------- vcProject.Name = project->first("QMAKE_ORIG_TARGET").toQString(); switch (vcProject.Configuration.CompilerVersion) { + case NET2017: + vcProject.Version = "15.00"; + break; case NET2015: vcProject.Version = "14.00"; break; @@ -1448,7 +1464,7 @@ void VcprojGenerator::initResourceFiles() dep_cmd = Option::fixPathToLocalOS(dep_cmd, true, false); if(canExecute(dep_cmd)) { dep_cmd.prepend(QLatin1String("cd ") - + escapeFilePath(Option::fixPathToLocalOS(Option::output_dir, false)) + + IoUtils::shellQuote(Option::fixPathToLocalOS(Option::output_dir, false)) + QLatin1String(" && ")); if (FILE *proc = QT_POPEN(dep_cmd.toLatin1().constData(), QT_POPEN_READ)) { QString indeps; diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index af9fe520f1..48df4ff916 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -568,16 +568,18 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t) t << "####### Build rules\n\n"; writeBuildRulesPart(t); - if(project->isActiveConfig("shared") && !project->values("DLLDESTDIR").isEmpty()) { - const ProStringList &dlldirs = project->values("DLLDESTDIR"); - for (ProStringList::ConstIterator dlldir = dlldirs.begin(); dlldir != dlldirs.end(); ++dlldir) { - t << "\t-$(COPY_FILE) $(DESTDIR_TARGET) " - << escapeFilePath(Option::fixPathToTargetOS((*dlldir).toQString(), false)) << endl; + if (project->first("TEMPLATE") != "aux") { + if (project->isActiveConfig("shared") && !project->values("DLLDESTDIR").isEmpty()) { + const ProStringList &dlldirs = project->values("DLLDESTDIR"); + for (ProStringList::ConstIterator dlldir = dlldirs.begin(); dlldir != dlldirs.end(); ++dlldir) { + t << "\t-$(COPY_FILE) $(DESTDIR_TARGET) " + << escapeFilePath(Option::fixPathToTargetOS((*dlldir).toQString(), false)) << endl; + } } - } - t << endl; + t << endl; - writeRcFilePart(t); + writeRcFilePart(t); + } writeMakeQmake(t); @@ -601,8 +603,10 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t) const ProStringList &quc = project->values("QMAKE_EXTRA_COMPILERS"); for (ProStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) { const ProStringList &inputs = project->values(ProKey(*it + ".input")); - for (ProStringList::ConstIterator input = inputs.begin(); input != inputs.end(); ++input) - t << escapeFilePath(*input) << ' '; + for (ProStringList::ConstIterator input = inputs.begin(); input != inputs.end(); ++input) { + const ProStringList &val = project->values((*input).toKey()); + t << escapeFilePaths(val).join(' ') << ' '; + } } } t << endl << endl; diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp index dd10afa023..fd24cf209d 100644 --- a/qmake/library/qmakeevaluator.cpp +++ b/qmake/library/qmakeevaluator.cpp @@ -971,6 +971,13 @@ static ProString msvcBinDirToQMakeArch(QString subdir) subdir = subdir.toLower(); if (subdir == QLatin1String("amd64")) return ProString("x86_64"); + // Since 2017 the folder structure from here is HostX64|X86/x64|x86 + idx = subdir.indexOf(QLatin1Char('\\')); + if (idx == -1) + return ProString("x86"); + subdir.remove(0, idx + 1); + if (subdir == QLatin1String("x64")) + return ProString("x86_64"); return ProString(subdir); } @@ -1052,8 +1059,12 @@ void QMakeEvaluator::loadDefaults() vars[ProKey("QMAKE_HOST.arch")] << archStr; # if defined(Q_CC_MSVC) // ### bogus condition, but nobody x-builds for msvc with a different qmake + // Since VS 2017 we need VCToolsInstallDir instead of VCINSTALLDIR + QString vcInstallDir = m_option->getEnv(QLatin1String("VCToolsInstallDir")); + if (vcInstallDir.isEmpty()) + vcInstallDir = m_option->getEnv(QLatin1String("VCINSTALLDIR")); vars[ProKey("QMAKE_TARGET.arch")] = msvcArchitecture( - m_option->getEnv(QLatin1String("VCINSTALLDIR")), + vcInstallDir, m_option->getEnv(QLatin1String("PATH"))); # endif #elif defined(Q_OS_UNIX) diff --git a/qmake/qmake.pro b/qmake/qmake.pro index 74cefb07aa..1472aef3e4 100644 --- a/qmake/qmake.pro +++ b/qmake/qmake.pro @@ -27,7 +27,6 @@ INCLUDEPATH += . \ generators/unix \ generators/win32 \ generators/mac \ - generators/integrity \ ../tools/shared include(qmake.pri) |