diff options
author | Liang Qi <liang.qi@qt.io> | 2016-05-12 07:31:50 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-05-12 08:33:08 +0200 |
commit | 990969655c5fb4d03682e96df9b12101f5ee9815 (patch) | |
tree | b8fb5c50285105c8bc5a938fb50f93ff9f24889d /qmake/generators | |
parent | a213011a53f12f101d08a04afc8fdacd2d54a232 (diff) | |
parent | e64b2234e829cc47872225debcf80d6c06db18f0 (diff) |
Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
config_help.txt
configure
src/corelib/io/qprocess_wince.cpp
src/plugins/platforms/windows/qwindowstheme.cpp
src/plugins/platforms/xcb/qxcbbackingstore.cpp
tests/auto/corelib/tools/qtimezone/BLACKLIST
tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
Change-Id: I26644d1cb3b78412c8ff285e2a55bea1bd641c01
Diffstat (limited to 'qmake/generators')
-rw-r--r-- | qmake/generators/mac/pbuilder_pbx.cpp | 12 | ||||
-rw-r--r-- | qmake/generators/makefile.cpp | 14 | ||||
-rw-r--r-- | qmake/generators/makefiledeps.cpp | 79 | ||||
-rw-r--r-- | qmake/generators/metamakefile.cpp | 6 |
4 files changed, 67 insertions, 44 deletions
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp index 35df36cb55..147c03a92d 100644 --- a/qmake/generators/mac/pbuilder_pbx.cpp +++ b/qmake/generators/mac/pbuilder_pbx.cpp @@ -266,7 +266,7 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t) << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" << "\t\t\t" << writeSettings("children", grp_it.value(), SettingsAsList, 4) << ";\n" << "\t\t\t" << writeSettings("name", grp_it.key().section(Option::dir_sep, -1)) << ";\n" - << "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "<group>") << ";\n" << "\t\t};\n"; } @@ -694,7 +694,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" << "\t\t\t" << writeSettings("children", grp_it.value(), SettingsAsList, 4) << ";\n" << "\t\t\t" << writeSettings("name", grp_it.key().section(Option::dir_sep, -1)) << ";\n" - << "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "<group>") << ";\n" << "\t\t};\n"; } @@ -1032,7 +1032,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) << "\t\t\t" << writeSettings("children", project->values("QMAKE_PBX_LIBRARIES"), SettingsAsList, 4) << ";\n" << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" << "\t\t\t" << writeSettings("name", grp) << ";\n" - << "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "<group>") << ";\n" << "\t\t};\n"; } } @@ -1146,7 +1146,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) << "\t\t\t" << writeSettings("children", bundle_file_refs, SettingsAsList, 4) << ";\n" << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" << "\t\t\t" << writeSettings("name", "Bundle Data") << ";\n" - << "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "<group>") << ";\n" << "\t\t};\n"; } @@ -1231,7 +1231,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) << "\t\t\t" << writeSettings("children", project->values("QMAKE_PBX_PRODUCTS"), SettingsAsList, 4) << ";\n" << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" << "\t\t\t" << writeSettings("name", "Products") << ";\n" - << "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "<group>") << ";\n" << "\t\t};\n"; } @@ -1241,7 +1241,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) << "\t\t\t" << writeSettings("children", project->values("QMAKE_PBX_GROUPS"), SettingsAsList, 4) << ";\n" << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" << "\t\t\t" << writeSettings("name", project->first("QMAKE_ORIG_TARGET")) << ";\n" - << "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "<group>") << ";\n" << "\t\t};\n"; { diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index dffc3d6acb..12004c62c3 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -1612,7 +1612,7 @@ MakefileGenerator::replaceExtraCompilerVariables( const ProKey funcname = var.mid(19).toKey(); val += project->expand(funcname, QList<ProStringList>() << ProStringList(in)); } else if(var == QLatin1String("QMAKE_FILE_BASE") || var == QLatin1String("QMAKE_FILE_IN_BASE")) { - //filePath = true; + filePath = true; for(int i = 0; i < in.size(); ++i) { QFileInfo fi(fileInfo(Option::normalizePath(in.at(i)))); QString base = fi.completeBaseName(); @@ -1620,7 +1620,7 @@ MakefileGenerator::replaceExtraCompilerVariables( base = fi.fileName(); val += base; } - } else if(var == QLatin1String("QMAKE_FILE_EXT")) { + } else if (var == QLatin1String("QMAKE_FILE_EXT") || var == QLatin1String("QMAKE_FILE_IN_EXT")) { filePath = true; for(int i = 0; i < in.size(); ++i) { QFileInfo fi(fileInfo(Option::normalizePath(in.at(i)))); @@ -1633,6 +1633,10 @@ MakefileGenerator::replaceExtraCompilerVariables( ext = fi.fileName().remove(0, baseLen); val += ext; } + } else if (var == QLatin1String("QMAKE_FILE_IN_NAME")) { + filePath = true; + for (int i = 0; i < in.size(); ++i) + val += fileInfo(Option::normalizePath(in.at(i))).fileName(); } else if(var == QLatin1String("QMAKE_FILE_PATH") || var == QLatin1String("QMAKE_FILE_IN_PATH")) { filePath = true; for(int i = 0; i < in.size(); ++i) @@ -1649,12 +1653,16 @@ MakefileGenerator::replaceExtraCompilerVariables( filePath = true; const ProKey funcname = var.mid(20).toKey(); val += project->expand(funcname, QList<ProStringList>() << ProStringList(out)); + } else if (var == QLatin1String("QMAKE_FILE_OUT_PATH")) { + filePath = true; + for (int i = 0; i < out.size(); ++i) + val += fileInfo(Option::normalizePath(out.at(i))).path(); } else if(var == QLatin1String("QMAKE_FILE_OUT")) { filePath = true; for(int i = 0; i < out.size(); ++i) val += fileInfo(Option::normalizePath(out.at(i))).filePath(); } else if(var == QLatin1String("QMAKE_FILE_OUT_BASE")) { - //filePath = true; + filePath = true; for(int i = 0; i < out.size(); ++i) { QFileInfo fi(fileInfo(Option::normalizePath(out.at(i)))); QString base = fi.completeBaseName(); diff --git a/qmake/generators/makefiledeps.cpp b/qmake/generators/makefiledeps.cpp index 82110f24cf..57cb0ea854 100644 --- a/qmake/generators/makefiledeps.cpp +++ b/qmake/generators/makefiledeps.cpp @@ -405,9 +405,9 @@ static bool matchWhileUnsplitting(const char *buffer, int buffer_len, int start, int *matchlen, int *lines) { int x = start; - for (int n = 0; n < needle_len && x < buffer_len; + for (int n = 0; n < needle_len; n++, x = skipEscapedLineEnds(buffer, buffer_len, x + 1, lines)) { - if (buffer[x] != needle[n]) + if (x >= buffer_len || buffer[x] != needle[n]) return false; } // That also skipped any remaining BSNLs immediately after the match. @@ -550,7 +550,14 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file) InCode // after directive, parsing non-#include directive or in actual code } cpp_state = AtStart; - for(int x = 0; x < buffer_len; ++x) { + int x = 0; + if (buffer_len >= 3) { + const unsigned char *p = (unsigned char *)buffer; + // skip UTF-8 BOM, if present + if (p[0] == 0xEF && p[1] == 0xBB && p[2] == 0xBF) + x += 3; + } + for (; x < buffer_len; ++x) { bool try_local = true; char *inc = 0; if(file->type == QMakeSourceFileInfo::TYPE_UI) { @@ -561,24 +568,29 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file) ++x; if (buffer_len >= x + 12 && !strncmp(buffer + x, "includehint", 11) && (buffer[x + 11] == ' ' || buffer[x + 11] == '>')) { - for (x += 11; buffer[x] != '>'; ++x) {} // skip + for (x += 11; x < buffer_len && buffer[x] != '>'; ++x) {} // skip int inc_len = 0; - for (x += 1 ; buffer[x + inc_len] != '<'; ++inc_len) {} // skip - buffer[x + inc_len] = '\0'; - inc = buffer + x; + for (++x; x + inc_len < buffer_len && buffer[x + inc_len] != '<'; ++inc_len) {} // skip + if (x + inc_len < buffer_len) { + buffer[x + inc_len] = '\0'; + inc = buffer + x; + } } else if (buffer_len >= x + 13 && !strncmp(buffer + x, "customwidget", 12) && (buffer[x + 12] == ' ' || buffer[x + 12] == '>')) { - for (x += 13; buffer[x] != '>'; ++x) {} // skip up to > + for (x += 13; x < buffer_len && buffer[x] != '>'; ++x) {} // skip up to > while(x < buffer_len) { - for (x++; buffer[x] != '<'; ++x) {} // skip up to < + while (++x < buffer_len && buffer[x] != '<') {} // skip up to < x++; if(buffer_len >= x + 7 && !strncmp(buffer+x, "header", 6) && (buffer[x + 6] == ' ' || buffer[x + 6] == '>')) { - for (x += 7; buffer[x] != '>'; ++x) {} // skip up to > + for (x += 7; x < buffer_len && buffer[x] != '>'; ++x) {} // skip up to > int inc_len = 0; - for (x += 1 ; buffer[x + inc_len] != '<'; ++inc_len) {} // skip - buffer[x + inc_len] = '\0'; - inc = buffer + x; + for (++x; x + inc_len < buffer_len && buffer[x + inc_len] != '<'; + ++inc_len) {} // skip + if (x + inc_len < buffer_len) { + buffer[x + inc_len] = '\0'; + inc = buffer + x; + } break; } else if(buffer_len >= x + 14 && !strncmp(buffer+x, "/customwidget", 13) && (buffer[x + 13] == ' ' || buffer[x + 13] == '>')) { @@ -588,20 +600,18 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file) } } else if(buffer_len >= x + 8 && !strncmp(buffer + x, "include", 7) && (buffer[x + 7] == ' ' || buffer[x + 7] == '>')) { - for (x += 8; buffer[x] != '>'; ++x) { + for (x += 8; x < buffer_len && buffer[x] != '>'; ++x) { if (buffer_len >= x + 9 && buffer[x] == 'i' && !strncmp(buffer + x, "impldecl", 8)) { - for (x += 8; buffer[x] != '='; ++x) {} // skip - if (buffer[x] != '=') - continue; - for (++x; buffer[x] == '\t' || buffer[x] == ' '; ++x) {} // skip + for (x += 8; x < buffer_len && buffer[x] != '='; ++x) {} // skip + while (++x < buffer_len && (buffer[x] == '\t' || buffer[x] == ' ')) {} // skip char quote = 0; - if (buffer[x] == '\'' || buffer[x] == '"') { + if (x < buffer_len && (buffer[x] == '\'' || buffer[x] == '"')) { quote = buffer[x]; ++x; } int val_len; - for(val_len = 0; true; ++val_len) { + for (val_len = 0; x + val_len < buffer_len; ++val_len) { if(quote) { if (buffer[x + val_len] == quote) break; @@ -611,16 +621,22 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file) } } //? char saved = buffer[x + val_len]; - buffer[x + val_len] = '\0'; - if(!strcmp(buffer+x, "in implementation")) { - //### do this + if (x + val_len < buffer_len) { + buffer[x + val_len] = '\0'; + if (!strcmp(buffer + x, "in implementation")) { + //### do this + } } } } int inc_len = 0; - for (x += 1 ; buffer[x + inc_len] != '<'; ++inc_len) {} // skip - buffer[x + inc_len] = '\0'; - inc = buffer + x; + for (++x; x + inc_len < buffer_len && buffer[x + inc_len] != '<'; + ++inc_len) {} // skip + + if (x + inc_len < buffer_len) { + buffer[x + inc_len] = '\0'; + inc = buffer + x; + } } } //read past new line now.. @@ -634,14 +650,16 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file) #define SKIP_BSNL(pos) skipEscapedLineEnds(buffer, buffer_len, (pos), &line_count) // Seek code or directive, skipping comments and space: - for(; x < buffer_len; ++x) { - x = SKIP_BSNL(x); + for (; (x = SKIP_BSNL(x)) < buffer_len; ++x) { if (buffer[x] == ' ' || buffer[x] == '\t') { // keep going } else if (buffer[x] == '/') { int extralines = 0; int y = skipEscapedLineEnds(buffer, buffer_len, x + 1, &extralines); - if (buffer[y] == '/') { // C++-style comment + if (y >= buffer_len) { + x = y; + break; + } else if (buffer[y] == '/') { // C++-style comment line_count += extralines; x = SKIP_BSNL(y + 1); while (x < buffer_len && !qmake_endOfLine(buffer[x])) @@ -652,8 +670,7 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file) } else if (buffer[y] == '*') { // C-style comment line_count += extralines; x = y; - while (++x < buffer_len) { - x = SKIP_BSNL(x); + while ((x = SKIP_BSNL(++x)) < buffer_len) { if (buffer[x] == '*') { extralines = 0; y = skipEscapedLineEnds(buffer, buffer_len, diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp index b816fc21f8..874b4286bc 100644 --- a/qmake/generators/metamakefile.cpp +++ b/qmake/generators/metamakefile.cpp @@ -225,10 +225,8 @@ MakefileGenerator build_proj->setExtraVars(basevars); build_proj->setExtraConfigs(basecfgs); - build_proj->read(project->projectFile()); - - //done - return createMakefileGenerator(build_proj); + if (build_proj->read(project->projectFile())) + return createMakefileGenerator(build_proj); } return 0; } |