diff --git a/configure b/configure index d79e5b1a19..ab1f81c2cf 100755 --- a/configure +++ b/configure @@ -5068,6 +5068,11 @@ if [ "$CFG_TSLIB" != "no" ]; then fi fi +# Check we actually have X11 :-) +if compileTest x11/xlib "XLib"; then + QT_CONFIG="$QT_CONFIG xlib" +fi + if [ "$CFG_XCB" != "no" ]; then if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists "xcb >= 1.5" 2>/dev/null; then QMAKE_CFLAGS_XCB="`$PKG_CONFIG --cflags xcb 2>/dev/null`" @@ -5113,17 +5118,6 @@ if [ "$CFG_XCB" != "no" ]; then fi fi - # Check for X11. Eventually we should port everything to XCB, - # but for now the port is incomplete and Xlib is a requirement. - if compileTest x11/xlib "XLib"; then - QT_CONFIG="$QT_CONFIG xlib" - else - echo "The test for linking against Xlib failed!" - echo " You might need to install dependency packages." - echo " See src/plugins/platforms/xcb/README." - exit 1 - fi - if [ "$CFG_XCB_XLIB" != "no" ]; then if compileTest qpa/xcb-xlib "xcb-xlib" $QMAKE_CFLAGS_XCB $QMAKE_LIBS_XCB; then QT_CONFIG="$QT_CONFIG xcb-xlib" diff --git a/dist/changes-5.2.0 b/dist/changes-5.2.0 index a51cc91f98..4dd1604fcc 100644 --- a/dist/changes-5.2.0 +++ b/dist/changes-5.2.0 @@ -52,6 +52,29 @@ information about a particular change. zero delta() in order to indicate beginning and end of transient scrolling. + - Mac OS X framework builds of Qt no longer contain a Unix-like include/ + directory; all headers are located in the frameworks. This may affect + 3rd party build systems not based on qmake or cmake. + +**************************************************************************** +* Platform deprecation notice * +**************************************************************************** + + - The support for the old implementation of QAtomicInt and + QAtomicPointer is deprecated in Qt 5.2 and will be removed in Qt + 5.3. Building with the following compilers or environments will not + be possible in Qt 5.3 or the build will suffer greatly in + performance, unless support is revived by writing new atomics code. + * Green Hills compiler for INTEGRITY + * Sun Studio compiler suite for Solaris + * IBM Visual Age compiler suite for AIX + * Kernel-mode VxWorks + + Developers interested in picking up support should contact the + development mailing list at development@qt-project.org for more + information. Note that those platforms are currently not tested. Most + likely, they have further problems than just the atomics code. + **************************************************************************** * Library * **************************************************************************** @@ -700,3 +723,44 @@ X11 - [QTBUG-31762] Fix position of system tray icon (except Unity) - [QTBUG-27349] Reintroduced command line argument for positioning windows (-geometry) + +**************************************************************************** +* Tools * +**************************************************************************** + +- configure + + * Added option to disable the QtMultimedia WMF backend + * [Unix] Added option to build with gcov support + * Added -extprefix option to support Qt installing into a different + location than the on-device -prefix within the -sysroot. + * [QTBUG-33584][Unix] Fixed parsing of -device-option with equal signs. + +- cmake config files + + * [QTBUG-33145] Fixed usage of non-QtBase modules with Qt compiled from + source tarballs. + * [QTBUG-33223] Fixed header file location on multi-arch systems. + * Added support for automatic packaging of Qt plugins with cpack. + +- qmake + + * [QTBUG-491] Added saner approach to debug/release path rewriting. + * Added the parseJson() function. + * Added "osx" scope as an alias for "macx". Note that matching on the + makespec is generally deprecated - use "linux", "gcc", etc. + * Added support for .qmake.stash files which are really *just* caches. + * [Xcode] Added support for QMAKE_PRE_LINK and QMAKE_POST_LINK. + * [QTBUG-31129] Added installation of PDB files for dlltarget. + * [QTBUG-28102] Added support for querying disabled Qt features. + * Removed macx-clang-libc++* makespecs. libc++ is now handled automatically. + * [QTBUG-32912][MSVS] Fixed moc not being run in case of DBUS_ADAPTORS or + DBUS_INTERFACES being present. + * [QTBUG-30644] Fixed unsatisfied requires() breaking recursive targets. + * [QTBUG-31204] Fixed extra compilers not finding their inputs. + * [QTBUG-32885][MSVS] Made it possible to disable debug information. + * [QTBUG-33446][MSVS] Fixed generation of VS2010+ solution files. + * [QTBUG-32375][MSVS] Fixed output directory of nested projects. + * [QTBUG-34392][MSVS] Fixed /SAFESEH:NO with VS2010+. + * [QTBUG-34357][MSVS] Fixed breakage with multiple VS versions in PATH. + * [MSVS] Fixed sub-project dependency generation. diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 5068f7028f..11509eeb40 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -131,30 +131,33 @@ android: CONFIG += qt_android_deps #install directives load(qt_installs) +!isEmpty(_QMAKE_SUPER_CACHE_): \ + rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]* +else: \ + rplbase = $$MODULE_BASE_OUTDIR +include_replace.match = $$rplbase/include +include_replace.replace = $$[QT_INSTALL_HEADERS/raw] +include_replace.CONFIG = path +lib_replace.match = $$rplbase/lib +host_build: \ + lib_replace.replace = $$[QT_HOST_LIBS] +else: \ + lib_replace.replace = $$[QT_INSTALL_LIBS/raw] +lib_replace.CONFIG = path +QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace + unix|win32-g++* { CONFIG += create_pc - host_build: \ - QMAKE_PKGCONFIG_LIBDIR = $$[QT_HOST_LIBS] - else: \ - QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw] - QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw] + QMAKE_PKGCONFIG_LIBDIR = $$lib_replace.replace + QMAKE_PKGCONFIG_INCDIR = $$include_replace.replace QMAKE_PKGCONFIG_CFLAGS = -I${includedir}/$$MODULE_INCNAME QMAKE_PKGCONFIG_DESTDIR = pkgconfig - !isEmpty(_QMAKE_SUPER_CACHE_): \ - rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]* - else: \ - rplbase = $$MODULE_BASE_OUTDIR - include_replace.match = $$rplbase/include - include_replace.replace = $$[QT_INSTALL_HEADERS/raw] - lib_replace.match = $$rplbase/lib - lib_replace.replace = $$QMAKE_PKGCONFIG_LIBDIR QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace - QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace } unix { CONFIG += create_libtool explicitlib - QMAKE_LIBTOOL_LIBDIR = $$QMAKE_PKGCONFIG_LIBDIR + QMAKE_LIBTOOL_LIBDIR = $$lib_replace.replace QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace } diff --git a/mkspecs/macx-ios-clang/features/default_post.prf b/mkspecs/macx-ios-clang/features/default_post.prf index 8d46f35201..3428823624 100644 --- a/mkspecs/macx-ios-clang/features/default_post.prf +++ b/mkspecs/macx-ios-clang/features/default_post.prf @@ -192,6 +192,22 @@ macx-xcode { QMAKE_CXXFLAGS += -stdlib=libstdc++ QMAKE_LFLAGS += -stdlib=libstdc++ } + + # Make the default debug information format for debug builds + # DWARF instead of DWARF with dSYM. This cuts down build times + # for application debug builds significantly, as Xcode doesn't + # have to pull out all the DWARF info from our static libraries + # and put it into a dSYM file. We don't need that dSYM file in + # the first place, since the information is available in the + # object files inside the archives (static libraries). The only + # unfortunate side effect of this is that the user won't be + # able to break on specific lines of main(). This is due to + # using ld to rename the main-function, and will go away once + # we implement a separate tool to do the symbol renaming. + debug_information_format.name = DEBUG_INFORMATION_FORMAT + debug_information_format.value = dwarf + debug_information_format.build = debug + QMAKE_MAC_XCODE_SETTINGS += debug_information_format } macx-xcode { diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp index 2674f31d03..fa4a844a5d 100644 --- a/qmake/generators/mac/pbuilder_pbx.cpp +++ b/qmake/generators/mac/pbuilder_pbx.cpp @@ -1140,7 +1140,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) //### } - project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES").append(phase_key); + project->values("QMAKE_PBX_BUILDPHASES").append(phase_key); t << "\t\t" << phase_key << " = {\n" << "\t\t\t" << writeSettings("name", "Copy '" + bundle_data[i] + "' Files to Bundle") << ";\n" << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index 3dd63b4590..946a1ee986 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -3336,6 +3336,13 @@ MakefileGenerator::writePkgConfigFile() t << endl; } +static QString windowsifyPath(const QString &str) +{ + // The paths are escaped in prl files, so every slash needs to turn into two backslashes. + // Then each backslash needs to be escaped for sed. And another level for C quoting here. + return QString(str).replace('/', "\\\\\\\\"); +} + QString MakefileGenerator::installMetaFile(const ProKey &replace_rule, const QString &src, const QString &dst) { QString ret; @@ -3348,8 +3355,12 @@ QString MakefileGenerator::installMetaFile(const ProKey &replace_rule, const QSt for (int r = 0; r < replace_rules.size(); ++r) { const ProString match = project->first(ProKey(replace_rules.at(r) + ".match")), replace = project->first(ProKey(replace_rules.at(r) + ".replace")); - if (!match.isEmpty() /*&& match != replace*/) + if (!match.isEmpty() /*&& match != replace*/) { ret += " -e " + shellQuote("s," + match + "," + replace + ",g"); + if (isWindowsShell() && project->first(ProKey(replace_rules.at(r) + ".CONFIG")).contains("path")) + ret += " -e " + shellQuote("s," + windowsifyPath(match.toQString()) + + "," + windowsifyPath(replace.toQString()) + ",gi"); + } } ret += " \"" + src + "\" >\"" + dst + "\""; } diff --git a/qmake/main.cpp b/qmake/main.cpp index 79e3739f56..f5116ba752 100644 --- a/qmake/main.cpp +++ b/qmake/main.cpp @@ -85,6 +85,7 @@ static int doSed(int argc, char **argv) return 3; } QChar sep = ++j < cmd.length() ? cmd.at(j) : QChar(); + Qt::CaseSensitivity matchcase = Qt::CaseSensitive; bool escaped = false; int phase = 1; QStringList phases; @@ -126,12 +127,16 @@ static int doSed(int argc, char **argv) fprintf(stderr, "Error: sed s command requires three arguments (%d, %c, %s)\n", phase, sep.toLatin1(), qPrintable(curr)); return 3; } + if (curr.contains(QLatin1Char('i'))) { + curr.remove(QLatin1Char('i')); + matchcase = Qt::CaseInsensitive; + } if (curr != QLatin1String("g")) { - fprintf(stderr, "Error: sed s command must be used with the g option (only)\n"); + fprintf(stderr, "Error: sed s command supports only g & i options; g is required\n"); return 3; } SedSubst subst; - subst.from = QRegExp(phases.at(0)); + subst.from = QRegExp(phases.at(0), matchcase); subst.to = phases.at(1); subst.to.replace("\\\\", "\\"); // QString::replace(rx, sub) groks \1, but not \\. substs << subst; diff --git a/qtbase.pro b/qtbase.pro index 9091fba4e0..140a137099 100644 --- a/qtbase.pro +++ b/qtbase.pro @@ -181,7 +181,7 @@ mkspecs.path = $$[QT_HOST_DATA]/mkspecs mkspecs.files = \ $$OUT_PWD/mkspecs/qconfig.pri $$OUT_PWD/mkspecs/qmodule.pri $$OUT_PWD/mkspecs/qdevice.pri $$OUT_PWD/mkspecs/qfeatures.pri \ $$files($$PWD/mkspecs/*) -mkspecs.files -= $$PWD/mkspecs/modules +mkspecs.files -= $$PWD/mkspecs/modules $$PWD/mkspecs/modules-inst INSTALLS += mkspecs global_docs.files = $$PWD/doc/global diff --git a/src/android/java/res/values/libs.xml b/src/android/java/res/values/libs.xml index 231406d224..797e6bb8c4 100644 --- a/src/android/java/res/values/libs.xml +++ b/src/android/java/res/values/libs.xml @@ -1,7 +1,7 @@ - https://download.qt-project.org/ministro/android/qt5/latest + https://download.qt-project.org/ministro/android/qt5/qt-5.2