summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-02-17 20:10:34 +0100
committerLiang Qi <liang.qi@qt.io>2017-02-17 20:10:34 +0100
commitbc4cd465dd5df82e13f3c7709166ee11289d219f (patch)
treed6323aaed6383e589fbefb6057648c22bb187c76 /qmake
parent43daefb0962794b2df256cae1098e889b9b36f12 (diff)
parent07745d7bfbf6c8d83e0243150d8ce934675dea87 (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: qmake/Makefile.unix Change-Id: Ia18e391198222eef34ffa2df6f683e052058d032
Diffstat (limited to 'qmake')
-rw-r--r--qmake/Makefile.unix7
-rw-r--r--qmake/Makefile.win321
-rw-r--r--qmake/doc/src/qmake-manual.qdoc18
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp41
-rw-r--r--qmake/generators/win32/msvc_nmake.h1
-rw-r--r--qmake/qmake.pri1
6 files changed, 39 insertions, 30 deletions
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix
index 4908ec2846..eb544724c5 100644
--- a/qmake/Makefile.unix
+++ b/qmake/Makefile.unix
@@ -14,7 +14,7 @@ OBJS=project.o option.o property.o main.o ioutils.o proitems.o \
QOBJS=qtextcodec.o qutfcodec.o qstring.o qstring_compat.o qstringbuilder.o qtextstream.o qiodevice.o \
qringbuffer.o qdebug.o qmalloc.o qglobal.o \
qarraydata.o qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfiledevice.o qfile.o \
- qfilesystementry.o qfilesystemengine.o qfsfileengine.o qfsfileengine_iterator.o qregexp.o qvector.o \
+ qfilesystementry.o qfilesystemengine.o qfsfileengine.o qfsfileengine_iterator.o qregexp.o \
qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o qfileinfo.o qdatetime.o qstringlist.o \
qabstractfileengine.o qtemporaryfile.o qmap.o qmetatype.o qsettings.o qsystemerror.o \
qvariant.o qvsnprintf.o qlocale.o qlocale_tools.o qlinkedlist.o qnumeric.o \
@@ -62,7 +62,7 @@ DEPEND_SRC = \
$(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp \
$(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp \
$(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp $(SOURCE_PATH)/src/corelib/tools/qlist.cpp \
- $(SOURCE_PATH)/src/corelib/tools/qvector.cpp $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp \
+ $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp \
$(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp \
$(SOURCE_PATH)/src/corelib/io/qdir.cpp $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp \
$(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp \
@@ -375,9 +375,6 @@ qtemporaryfile.o: $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp
qregexp.o: $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $<
-qvector.o: $(SOURCE_PATH)/src/corelib/tools/qvector.cpp
- $(CXX) -c -o $@ $(CXXFLAGS) $<
-
qbitarray.o: $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $<
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
index f2e9be5728..559870ff0e 100644
--- a/qmake/Makefile.win32
+++ b/qmake/Makefile.win32
@@ -108,7 +108,6 @@ QTOBJS= \
qtextstream.obj \
qdatastream.obj \
quuid.obj \
- qvector.obj \
qsettings.obj \
qvariant.obj \
qsettings_win.obj \
diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc
index a8ccd199b4..50733836f8 100644
--- a/qmake/doc/src/qmake-manual.qdoc
+++ b/qmake/doc/src/qmake-manual.qdoc
@@ -1230,10 +1230,6 @@
This variable is also used to specify which additional files will be
deployed to embedded devices.
- For Windows CE, the default deployment target path is
- \c{%CSIDL_PROGRAM_FILES%\target}, which usually gets expanded to
- \c{\Program Files\target}.
-
\target LEXIMPLS
\section1 LEXIMPLS
@@ -2354,16 +2350,6 @@
qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
needs to be modified.
- \target SIGNATURE_FILE
- \section1 SIGNATURE_FILE
-
- \note This variable is only used on Windows CE.
-
- Specifies which signature file should be used to sign the project target.
-
- \note This variable will overwrite the setting you have specified in configure,
- with the \c -signature option.
-
\target SOURCES
\section1 SOURCES
@@ -4483,8 +4469,8 @@
include the precompiled header file in \c HEADERS, as
qmake will do this if the configuration supports precompiled headers.
- The MSVC and g++ specs targeting Windows (and Windows CE) enable
- \c precompile_header by default.
+ The MSVC and g++ specs targeting Windows enable \c precompile_header
+ by default.
Using this option, you may trigger
conditional blocks in your project file to add settings when using
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index c19c101d43..0b0efe4acf 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -566,9 +566,9 @@ void NmakeMakefileGenerator::writeBuildRulesPart(QTextStream &t)
if(!project->isEmpty("QMAKE_PRE_LINK"))
t << "\n\t" <<var("QMAKE_PRE_LINK");
if(project->isActiveConfig("staticlib")) {
- t << "\n\t$(LIBAPP) $(LIBFLAGS) " << var("QMAKE_LINK_O_FLAG") << "$(DESTDIR_TARGET) @<<\n\t "
- << "$(OBJECTS)"
- << "\n<<";
+ t << "\n\t$(LIBAPP) $(LIBFLAGS) " << var("QMAKE_LINK_O_FLAG") << "$(DESTDIR_TARGET) @<<\n\t ";
+ writeResponseFileFiles(t, project->values("OBJECTS"));
+ t << "<<";
} else {
const bool embedManifest = ((templateName == "app" && project->isActiveConfig("embed_manifest_exe"))
|| (templateName == "lib" && project->isActiveConfig("embed_manifest_dll")
@@ -652,11 +652,38 @@ void NmakeMakefileGenerator::writeLinkCommand(QTextStream &t, const QString &ext
t << "$(LINKER) $(LFLAGS)";
if (!extraFlags.isEmpty())
t << ' ' << extraFlags;
- t << " " << var("QMAKE_LINK_O_FLAG") << "$(DESTDIR_TARGET) @<<\n"
- << "$(OBJECTS) $(LIBS)";
+ t << " " << var("QMAKE_LINK_O_FLAG") << "$(DESTDIR_TARGET) @<<\n";
+ writeResponseFileFiles(t, project->values("OBJECTS"));
+ t << "$(LIBS)\n";
if (!extraInlineFileContent.isEmpty())
- t << ' ' << extraInlineFileContent;
- t << "\n<<";
+ t << extraInlineFileContent << '\n';
+ t << "<<";
+}
+
+void NmakeMakefileGenerator::writeResponseFileFiles(QTextStream &t, const ProStringList &files)
+{
+ if (files.isEmpty())
+ return;
+ // Add line breaks in file lists in reponse files to work around LNK1170.
+ // The actual line length limit is 131070, but let's use a smaller limit
+ // in case other tools are similarly hampered.
+ const int maxLineLength = 1000;
+ int len = 0;
+ for (const ProString &file : files) {
+ const ProString escapedFilePath = escapeFilePath(file);
+ if (len) {
+ if (len + escapedFilePath.length() > maxLineLength) {
+ t << '\n';
+ len = 0;
+ } else {
+ t << ' ';
+ len++;
+ }
+ }
+ t << escapedFilePath;
+ len += escapedFilePath.length();
+ }
+ t << '\n';
}
int NmakeMakefileGenerator::msvcVersion() const
diff --git a/qmake/generators/win32/msvc_nmake.h b/qmake/generators/win32/msvc_nmake.h
index 9c88934e36..f782f9d734 100644
--- a/qmake/generators/win32/msvc_nmake.h
+++ b/qmake/generators/win32/msvc_nmake.h
@@ -40,6 +40,7 @@ class NmakeMakefileGenerator : public Win32MakefileGenerator
void writeImplicitRulesPart(QTextStream &t);
void writeBuildRulesPart(QTextStream &t);
void writeLinkCommand(QTextStream &t, const QString &extraFlags = QString(), const QString &extraInlineFileContent = QString());
+ void writeResponseFileFiles(QTextStream &t, const ProStringList &files);
int msvcVersion() const;
void init();
static QStringList sourceFilesForImplicitRulesFilter();
diff --git a/qmake/qmake.pri b/qmake/qmake.pri
index 288d99d8a2..c0f7250bcf 100644
--- a/qmake/qmake.pri
+++ b/qmake/qmake.pri
@@ -68,7 +68,6 @@ bootstrap { #Qt code
qlibraryinfo.cpp \
qsystemerror.cpp \
qvariant.cpp \
- qvector.cpp \
qvsnprintf.cpp \
qxmlstream.cpp \
qxmlutils.cpp \