diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 649 |
1 files changed, 437 insertions, 212 deletions
@@ -2,7 +2,7 @@ ############################################################################# ## ## Copyright (C) 2015 The Qt Company Ltd. -## Copyright (C) 2013 Intel Corporation. +## Copyright (C) 2015 Intel Corporation. ## Contact: http://www.qt.io/licensing/ ## ## This file is the build configuration utility of the Qt Toolkit. @@ -318,7 +318,7 @@ macSDKify() val=$(echo $sdk_val $(echo $val | cut -s -d ' ' -f 2-)) echo "$var=$val" ;; - QMAKE_CFLAGS=*|QMAKE_CXXFLAGS=*|QMAKE_OBJECTIVE_CFLAGS=*) + QMAKE_CFLAGS=*|QMAKE_CXXFLAGS=*) echo "$line -isysroot $sysroot $version_min_flag" ;; QMAKE_LFLAGS=*) @@ -539,23 +539,16 @@ fi #----------------------------------------------------------------------------- # Qt version detection #----------------------------------------------------------------------------- -QT_VERSION=`grep '^# *define *QT_VERSION_STR' "$relpath"/src/corelib/global/qglobal.h` +QT_VERSION= QT_MAJOR_VERSION= QT_MINOR_VERSION=0 QT_PATCH_VERSION=0 -if [ -n "$QT_VERSION" ]; then - QT_VERSION=`echo $QT_VERSION | sed 's,^# *define *QT_VERSION_STR *"*\([^ ]*\)"$,\1,'` - MAJOR=`echo $QT_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\1,'` - if [ -n "$MAJOR" ]; then - MINOR=`echo $QT_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\2,'` - PATCH=`echo $QT_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\3,'` - QT_MAJOR_VERSION="$MAJOR" - [ -z "$MINOR" ] || QT_MINOR_VERSION="$MINOR" - [ -z "$PATCH" ] || QT_PATCH_VERSION="$PATCH" - fi -fi +eval `sed -n -e 's/^MODULE_VERSION = \(\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*\)$/QT_VERSION=\1\ + QT_MAJOR_VERSION=\2\ + QT_MINOR_VERSION=\3\ + QT_PATCH_VERSION=\4/p' < "$relpath"/.qmake.conf` if [ -z "$QT_MAJOR_VERSION" ]; then - echo "Cannot process version from qglobal.h: $QT_VERSION" + echo "Cannot process version from .qmake.conf" echo "Cannot proceed." exit 1 fi @@ -621,6 +614,7 @@ CFG_XFIXES=runtime CFG_ZLIB=auto CFG_MTDEV=auto CFG_JOURNALD=no +CFG_SYSLOG=no CFG_SQLITE=qt CFG_GIF=auto CFG_PNG=yes @@ -661,6 +655,7 @@ CFG_SYSTEM_PROXIES=no CFG_ANDROID_STYLE_ASSETS=yes CFG_GSTREAMER=auto CFG_GSTREAMER_VERSION="" +CFG_ATOMIC64=auto # Target architecture CFG_ARCH= @@ -683,11 +678,14 @@ CFG_XCB_XLIB=auto CFG_XCB_GLX=no CFG_EGLFS=auto CFG_EGLFS_BRCM=no +CFG_EGLFS_EGLDEVICE=no CFG_EGLFS_MALI=no CFG_EGLFS_VIV=no CFG_DIRECTFB=auto +CFG_GBM=auto CFG_LINUXFB=auto CFG_KMS=auto +CFG_MIRCLIENT=auto CFG_LIBUDEV=auto CFG_LIBINPUT=auto CFG_OBSOLETE_WAYLAND=no @@ -728,6 +726,7 @@ CFG_IPV6IFNAME=auto CFG_GETIFADDRS=auto CFG_INOTIFY=auto CFG_EVENTFD=auto +CFG_CLOEXEC=no CFG_RPATH=yes CFG_FRAMEWORK=auto CFG_USE_GOLD_LINKER=auto @@ -766,7 +765,7 @@ CFG_SANITIZE_MEMORY=no CFG_SANITIZE_UNDEFINED=no CFG_PCRE=auto QPA_PLATFORM_GUARD=yes -CFG_CXX11=auto +CFG_STDCXX=auto CFG_DIRECTWRITE=no CFG_WERROR=auto CFG_HEADERSCLEAN=auto @@ -932,6 +931,7 @@ while [ "$#" -gt 0 ]; do -sdk| \ -arch| \ -host-arch| \ + -c++std | \ -mysql_config| \ -psql_config| \ -qpa| \ @@ -1155,7 +1155,7 @@ while [ "$#" -gt 0 ]; do fi ;; force-pkg-config) - CFG_PKGCONFIG="force" + CFG_PKGCONFIG="yes" ;; docdir) QT_INSTALL_DOCS="$VAL" @@ -1400,18 +1400,6 @@ while [ "$#" -gt 0 ]; do unixware7-g++) PLATFORM=unixware-g++ ;; - macx-g++-64) - PLATFORM=macx-g++ - NATIVE_64_ARCH= - case `uname -p` in - i386) NATIVE_64_ARCH="x86_64" ;; - powerpc) NATIVE_64_ARCH="ppc64" ;; - *) echo "WARNING: Can't detect CPU architecture for macx-g++-64" ;; - esac - if [ ! -z "$NATIVE_64_ARCH" ]; then - QTCONFIG_CONFIG="$QTCONFIG_CONFIG $NATIVE_64_ARCH" - fi - ;; esac ;; xplatform) @@ -1699,6 +1687,13 @@ while [ "$#" -gt 0 ]; do UNKNOWN_OPT=yes fi ;; + syslog) + if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then + CFG_SYSLOG="$VAL" + else + UNKNOWN_OPT=yes + fi + ;; sqlite) if [ "$VAL" = "system" ]; then CFG_SQLITE=system @@ -1827,6 +1822,13 @@ while [ "$#" -gt 0 ]; do UNKNOWN_OPT=yes fi ;; + gbm) + if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then + CFG_GBM="$VAL" + else + UNKNOWN_OPT=yes + fi + ;; linuxfb) if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then CFG_LINUXFB="$VAL" @@ -1841,6 +1843,13 @@ while [ "$#" -gt 0 ]; do UNKNOWN_OPT=yes fi ;; + mirclient) + if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then + CFG_MIRCLIENT="$VAL" + else + UNKNOWN_OPT=yes + fi + ;; libudev) if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then CFG_LIBUDEV="$VAL" @@ -1979,7 +1988,8 @@ while [ "$#" -gt 0 ]; do if [ "$VAL" = "no" ] || [ "$VAL" = "linked" ] || [ "$VAL" = "runtime" ]; then CFG_DBUS="$VAL" elif [ "$VAL" = "yes" ]; then - CFG_DBUS="runtime" + # keep as auto, we'll auto-detect whether to go linked or runtime later + CFG_DBUS=auto else UNKNOWN_OPT=yes fi @@ -1991,6 +2001,13 @@ while [ "$#" -gt 0 ]; do UNKNOWN_OPT=yes fi ;; + dbus-runtime) + if [ "$VAL" = "yes" ]; then + CFG_DBUS="runtime" + else + UNKNOWN_OPT=yes + fi + ;; nis) if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then CFG_NIS="$VAL" @@ -2217,12 +2234,31 @@ while [ "$#" -gt 0 ]; do fi ;; c++11) - if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then - CFG_CXX11="$VAL" + if [ "$VAL" = "yes" ]; then + CFG_STDCXX="c++11" + elif [ "$VAL" = "no" ]; then + CFG_STDCXX="c++98" else UNKNOWN_OPT=yes fi ;; + c++std) + case "$VAL" in + c++98|c++11|c++14|c++1z|auto) + CFG_STDCXX="$VAL" + ;; + 98|11|14|1z) + CFG_STDCXX="c++$VAL" + ;; + 1y|c++1y) + CFG_STDCXX="c++14" + ;; + *) + echo >&2 "Invalid C++ edition: $VAL; valid options are: c++98 c++11 c++14 c++1z auto" + ERROR=yes + ;; + esac + ;; system-proxies) if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then CFG_SYSTEM_PROXIES="$VAL" @@ -2394,8 +2430,8 @@ Configure options: -confirm-license ... Automatically acknowledge the license (use with either -opensource or -commercial) - -no-c++11 .......... Do not compile Qt with C++11 support enabled. - + -c++11 ............. Compile Qt with C++11 support enabled. + -c++std <edition> .. Compile Qt with C++ standard edition (c++98, c++11, c++14, c++1z) + Default: highest supported * -shared ............ Create and use shared Qt libraries. -static ............ Create and use static Qt libraries. @@ -2471,6 +2507,9 @@ Third Party Libraries: + -no-journald ........ Do not send logging output to journald. -journald ........... Send logging output to journald. + + -no-syslog .......... Do not send logging output to syslog. + -syslog ............. Send logging output to syslog. + -no-gif ............. Do not compile GIF reading support. -no-libpng .......... Do not compile PNG support. @@ -2602,8 +2641,8 @@ Additional options: -pch ............... Use precompiled header support. -no-dbus ........... Do not compile the Qt D-Bus module. - + -dbus .............. Compile the Qt D-Bus module and dynamically load libdbus-1. - -dbus-linked ....... Compile the Qt D-Bus module and link to libdbus-1. + + -dbus-linked ....... Compile the Qt D-Bus module and link to libdbus-1. + -dbus-runtime ...... Compile the Qt D-Bus module and dynamically load libdbus-1. -reduce-relocations ..... Reduce relocations in the libraries through extra linker optimizations (Qt/X11 and Qt for Embedded Linux only; @@ -2629,14 +2668,20 @@ Additional options: -no-eglfs .......... Do not compile EGLFS (EGL Full Screen/Single Surface) support. * -eglfs ............. Compile EGLFS support. + -no-kms ............ Do not compile backends for KMS. + * -kms ............... Compile backends for KMS. + + -no-gbm ............ Do not compile backends for GBM. + * -gbm ............... Compile backends for GBM. + -no-directfb ....... Do not compile DirectFB support. * -directfb .......... Compile DirectFB support. -no-linuxfb ........ Do not compile Linux Framebuffer support. * -linuxfb ........... Compile Linux Framebuffer support. - -no-kms ............ Do not compile KMS support. - * -kms ............... Compile KMS support (Requires EGL). + * -no-mirclient....... Do not compile Mir client support. + -mirclient.......... Compile Mir client support. -qpa <name> ......... Sets the default QPA platform (e.g xcb, cocoa, windows). @@ -2667,7 +2712,7 @@ Additional options: -no-gstreamer ....... Do not support GStreamer. + -gstreamer <version> Enable GStreamer support With no parameter, this will attempt to auto-detect GStreamer 0.10 and - 1.0. GStreamer 0.10 is used by default when available. + 1.0. GStreamer 1.0 is used by default when available. Use 0.10 or 1.0 for <version> to override auto-detection. * -no-system-proxies .. Do not use system network proxies by default. @@ -2700,7 +2745,10 @@ MacOS/iOS options: link tools against those frameworks. -no-framework ...... Do not build Qt as a series of frameworks. - -securetransport ... Use SecureTransport instead of OpenSSL (requires -no-openssl) + * -securetransport ... Use SecureTransport instead of OpenSSL + + -no-securetransport Do not use SecureTransport, either use OpenSSL or do not use any SSL backend + at all (if combined with -no-openssl). -sdk <sdk> ......... Build Qt using Apple provided SDK <sdk>. The argument should be one of the available SDKs as listed by 'xcodebuild -showsdks'. @@ -3153,13 +3201,13 @@ if [ "$XPLATFORM_ANDROID" = "yes" ]; then ;; macx-*) CFG_DEFAULT_ANDROID_NDK_HOST=darwin-x86 - if [ ! -z "$NATIVE_64_ARCH" ] && [ -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/darwin-x86_64" ]; then + if [ -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/darwin-x86_64" ]; then CFG_DEFAULT_ANDROID_NDK_HOST=darwin-x86_64 fi ;; win32-*) CFG_DEFAULT_ANDROID_NDK_HOST=windows - if [ ! -z "$NATIVE_64_ARCH" ] && [ -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/windows-x86_64" ]; then + if [ -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/windows-x86_64" ]; then CFG_DEFAULT_ANDROID_NDK_HOST=windows-x86_64 fi ;; @@ -3304,6 +3352,8 @@ fi # tests that don't need qmake (must be run before displaying help) #------------------------------------------------------------------------------- +echo "Running configuration tests (phase 1)..." + # detect build style if [ "$CFG_DEBUG" = "auto" ]; then if [ "$XPLATFORM_MAC" = "yes" -o "$XPLATFORM_MINGW" = "yes" ]; then @@ -3576,6 +3626,8 @@ unset tty eval "`LC_ALL=C $TEST_COMPILER $SYSROOT_FLAG $TEST_COMPILER_CXXFLAGS -xc++ -E -v - < /dev/null 2>&1 > /dev/null | $AWK "$awkprog" | tee $tty`" unset tty +echo "Done running configuration tests." + #setup the build parts if [ -z "$CFG_BUILD_PARTS" ]; then CFG_BUILD_PARTS="$QT_DEFAULT_BUILD_PARTS" @@ -3610,9 +3662,6 @@ if [ -z "$QT_INSTALL_PREFIX" ]; then else QT_INSTALL_PREFIX="/usr/local/Qt-${QT_VERSION}" # the default install prefix is /usr/local/Qt-$QT_VERSION fi - HAVE_INSTALL_PATH=false -else - HAVE_INSTALL_PATH=true fi QT_INSTALL_PREFIX=`makeabs "$QT_INSTALL_PREFIX"` @@ -3896,7 +3945,7 @@ if [ -e "$relpath/.git" ]; then exit 1 fi - "$relpath/bin/syncqt.pl" -minimal -module QtCore "$relpath" || exit 1 + "$relpath/bin/syncqt.pl" -version $QT_VERSION -minimal -module QtCore "$relpath" || exit 1 fi # $1: input variable name (awk regexp) @@ -4038,6 +4087,9 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ]; fi echo "QMAKESPEC = $adjqmakespec" >> "$mkfile" echo "QT_VERSION = $QT_VERSION" >> "$mkfile" + echo "QT_MAJOR_VERSION = $QT_MAJOR_VERSION" >> "$mkfile" + echo "QT_MINOR_VERSION = $QT_MINOR_VERSION" >> "$mkfile" + echo "QT_PATCH_VERSION = $QT_PATCH_VERSION" >> "$mkfile" echo "EXTRA_CFLAGS = $EXTRA_CFLAGS" >> "$mkfile" echo "EXTRA_CXXFLAGS = $EXTRA_CXXFLAGS" >> "$mkfile" echo "QTOBJS =" $EXTRA_OBJS >> "$mkfile" @@ -4080,7 +4132,7 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ]; fi fi # Build qmake -echo "Running configuration tests..." +echo "Running configuration tests (phase 2)..." #------------------------------------------------------------------------------- # create a qt.conf for the Qt build tree itself @@ -4139,11 +4191,6 @@ fi if [ "$CFG_PKGCONFIG" = "no" ]; then PKG_CONFIG= [ "$OPT_VERBOSE" = "yes" ] && echo "pkg-config support disabled." -elif [ "$CFG_PKGCONFIG" = "force" ]; then - echo >&2 "" - echo >&2 "You have asked to use pkg-config. Please make sure you have" - echo >&2 "a correctly setup pkg-config environment!" - echo >&2 "" elif [ -n "$PKG_CONFIG" ]; then # found a pkg-config if [ "$QT_CROSS_COMPILE" = "yes" ]; then @@ -4156,16 +4203,13 @@ elif [ -n "$PKG_CONFIG" ]; then fi export PKG_CONFIG_LIBDIR echo >&2 "Note: PKG_CONFIG_LIBDIR automatically set to $PKG_CONFIG_LIBDIR" - elif [ "$CFG_PKGCONFIG" = "yes" ]; then - echo >&2 "Error: PKG_CONFIG_LIBDIR has not been set. This could mean" - echo >&2 "the host's .pc files will be used (even if you set PKG_CONFIG_PATH)." + elif [ "$CFG_PKGCONFIG" = "auto" ]; then + PKG_CONFIG= + echo >&2 "Warning: Disabling pkg-config since PKG_CONFIG_LIBDIR is not set and" + echo >&2 "the host's .pc files would be used (even if you set PKG_CONFIG_PATH)." echo >&2 "Set this variable to the directory that contains target .pc files" echo >&2 "for pkg-config to function correctly when cross-compiling or" - echo >&2 "use -force-pkg-config to override this test." - exit 101 - else - PKG_CONFIG= - echo >&2 "Warning: Disabling pkg-config since PKG_CONFIG_LIBDIR is not set." + echo >&2 "use -pkg-config to override this test." fi fi if [ -z "$PKG_CONFIG_SYSROOT_DIR" ]; then @@ -4173,17 +4217,19 @@ elif [ -n "$PKG_CONFIG" ]; then PKG_CONFIG_SYSROOT_DIR=$CFG_SYSROOT export PKG_CONFIG_SYSROOT_DIR echo >&2 "Note: PKG_CONFIG_SYSROOT_DIR automatically set to $PKG_CONFIG_SYSROOT_DIR" - elif [ "$CFG_PKGCONFIG" = "yes" ]; then - echo >&2 "Error: PKG_CONFIG_SYSROOT_DIR has not been set. Set this variable" - echo >&2 "to your sysroot for pkg-config to function correctly when cross-compiling" - echo >&2 "or use -force-pkg-config to override this test." - exit 101 - else + elif [ "$CFG_PKGCONFIG" = "auto" ]; then PKG_CONFIG= echo >&2 "Warning: Disabling pkg-config since PKG_CONFIG_SYSROOT_DIR is not set." + echo >&2 "Set this variable to your sysroot for pkg-config to function correctly when" + echo >&2 "cross-compiling or use -pkg-config to override this test." fi fi fi + if [ -n "$PKG_CONFIG" ]; then + CFG_PKGCONFIG=yes + else + CFG_PKGCONFIG=no + fi elif [ "$CFG_PKGCONFIG" = "yes" ]; then echo >&2 "Could not detect pkg-config from mkspec or PATH." exit 101 @@ -4306,26 +4352,73 @@ if [ "$CFG_SEPARATE_DEBUG_INFO" = "yes" ]; then fi fi -# Detect C++11 support -if [ "$CFG_CXX11" != "no" ]; then - # Configure detects compiler features based on cross compiler, so we need - # to explicitly disable C++11 on Mac to avoid breaking builds where the - # host compiler does not support it. - if [ "$BUILD_ON_MAC" = "yes" ] && [ "$XPLATFORM_ANDROID" = "yes" ]; then - CFG_CXX11="no" - elif compileTest common/c++11 "C++11"; then - CFG_CXX11="yes" - elif [ "$CFG_CXX11" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then - echo "C++11 support cannot be enabled due to functionality tests!" - echo " Turn on verbose messaging (-v) to $0 to see the final report." - echo " If you believe this message is in error you may use the continue" - echo " switch (-continue) to $0 to continue." - exit 101 +# Detect C++11 & up support +# Configure detects compiler features based on cross compiler, so we need +# to explicitly disable C++11 on Mac to avoid breaking builds where the +# host compiler does not support it. +stdcxx_error=false +if [ "$BUILD_ON_MAC" = "yes" ] && [ "$XPLATFORM_ANDROID" = "yes" ]; then + CFG_STDCXX="c++98" +elif [ "$CFG_STDCXX" = "c++98" ]; then + : # CFG_STDCXX is correct +elif ! compileTest common/c++11 "C++11"; then + if [ "$CFG_STDCXX" != "auto" ]; then + stdcxx_error=true + else + CFG_STDCXX="c++98" + fi +elif [ "$CFG_STDCXX" = "c++11" ]; then + : # CFG_STDCXX is correct +elif ! compileTest common/c++14 "C++14"; then + if [ "$CFG_STDCXX" != "auto" ]; then + stdcxx_error=true + else + CFG_STDCXX="c++11" + fi +elif [ "$CFG_STDCXX" = "c++14" ]; then + : # CFG_STDCXX is correct +elif ! compileTest common/c++1z "C++1z"; then + if [ "$CFG_STDCXX" != "auto" ]; then + stdcxx_error=true + else + CFG_STDCXX="c++14" + fi +else + CFG_STDCXX="c++1z" +fi + +if $stdcxx_error && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then + echo "$CFG_STDCXX support cannot be enabled due to functionality tests!" + echo " Turn on verbose messaging (-v) to $0 to see the final report." + echo " If you believe this message is in error you may use the continue" + echo " switch (-continue) to $0 to continue." + exit 101 +fi + +# Detect which edition of the C++ standard the compiler defaults to +CFG_STDCXX_DEFAULT=199711 +if compileTest common/c++default "default C++ standard edition"; then + if [ -e "$outpath/config.tests/common/c++default/c++default.ii" ]; then + CFG_STDCXX_DEFAULT=`sed -n '/^[0-9]/s/L//p' "$outpath/config.tests/common/c++default/c++default.ii"` else - CFG_CXX11="no" + if [ "$OPT_VERBOSE" = "yes" ]; then + echo "Failed to run the preprocessor, something is wrong with your compiler" + fi + if [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then + exit 101 + fi fi fi +# Detect whether 64-bit std::atomic works -- some 32-bit platforms require extra library support +if compileTest common/atomic64 "64-bit std::atomic"; then + CFG_ATOMIC64=yes +elif compileTest common/atomic64 "64-bit std::atomic in -latomic" -latomic; then + CFG_ATOMIC64=libatomic +else + CFG_ATOMIC64=no +fi + # detect sse2 support if [ "${CFG_SSE2}" = "auto" ]; then if compileTest common/sse2 "sse2"; then @@ -4562,6 +4655,23 @@ if [ "$CFG_JOURNALD" != "no" ]; then fi fi +if [ "$CFG_SYSLOG" != "no" ]; then + if compileTest unix/syslog "syslog"; then + CFG_SYSLOG=yes + QMAKE_CONFIG="$QMAKE_CONFIG syslog" + else + if [ "$CFG_SYSLOG" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then + echo "syslog support cannot be enabled due to functionality tests!" + echo " Turn on verbose messaging (-v) to $0 to see the final report." + echo " If you believe this message is in error you may use the continue" + echo " switch (-continue) to $0 to continue." + exit 101 + else + CFG_SYSLOG=no + fi + fi +fi + if [ "$CFG_LARGEFILE" = "auto" ]; then #Large files should be enabled for all Linux systems CFG_LARGEFILE=yes @@ -4614,13 +4724,6 @@ if [ "$CFG_EGLFS" = "yes" ]; then CFG_EGL=yes fi -if [ "$CFG_KMS" = "yes" ]; then - if [ "$CFG_EGL" = "no" ]; then - echo "The KMS plugin requires EGL support and cannot be built" - exit 101 - fi -fi - # auto-detect SQL-modules support for _SQLDR in $CFG_SQL_AVAILABLE; do case $_SQLDR in @@ -4933,10 +5036,10 @@ if [ "$CFG_ICONV" != "no" ]; then fi # auto-detect libdbus-1 support -if [ "$CFG_DBUS" = "auto" ]; then - CFG_DBUS="runtime" -fi -if [ "$CFG_DBUS" = "linked" ]; then +# auto: detect if libdbus-1 is present; if so, link to it +# linked: fail if libdbus-1 is not present; otherwise link to it +# runtime: no detection (cannot fail), load libdbus-1 at runtime +if [ "$CFG_DBUS" = "auto" ] || [ "$CFG_DBUS" = "linked" ]; then if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --atleast-version="$MIN_DBUS_1_VERSION" dbus-1 2>/dev/null; then QT_CFLAGS_DBUS=`$PKG_CONFIG --cflags dbus-1 2>/dev/null` QT_LIBS_DBUS=`$PKG_CONFIG --libs dbus-1 2>/dev/null` @@ -4952,14 +5055,19 @@ if [ "$CFG_DBUS" = "linked" ]; then QT_CFLAGS_DBUS=`env -i PATH="$PATH" pkg-config --cflags dbus-1 2>/dev/null` fi QMakeVar set QT_HOST_CFLAGS_DBUS "$QT_CFLAGS_DBUS" + CFG_DBUS=linked else - if [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then + # Failed to compile the test, so it's an error if CFG_DBUS is "linked" + if [ "$CFG_DBUS" = "linked" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then echo "The Qt D-Bus module cannot be enabled because libdbus-1 version $MIN_DBUS_1_VERSION was not found." - [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -force-pkg-config?" + [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?" echo " Turn on verbose messaging (-v) to $0 to see the final report." echo " If you believe this message is in error you may use the continue" echo " switch (-continue) to $0 to continue." exit 101 + else + # CFG_DBUS is "auto" here + CFG_DBUS=runtime fi fi fi @@ -4995,7 +5103,7 @@ if [ "$CFG_GLIB" != "no" ]; then else if [ "$CFG_GLIB" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then echo "Glib support cannot be enabled due to functionality tests!" - [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -force-pkg-config?" + [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?" echo " Turn on verbose messaging (-v) to $0 to see the final report." echo " If you believe this message is in error you may use the continue" echo " switch (-continue) to $0 to continue." @@ -5023,7 +5131,7 @@ if [ "$CFG_GLIB" = "yes" -a "$CFG_QGTKSTYLE" != "no" ]; then else if [ "$CFG_QGTKSTYLE" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then echo "GTK theme support cannot be enabled due to functionality tests!" - [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -force-pkg-config?" + [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?" echo " Turn on verbose messaging (-v) to $0 to see the fin al report." echo " If you believe this message is in error you may use the continue" echo " switch (-continue) to $0 to continue." @@ -5068,7 +5176,7 @@ if [ "$CFG_PULSEAUDIO" != "no" ]; then else if [ "$CFG_PULSEAUDIO" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then echo "PulseAudio support cannot be enabled due to functionality tests!" - [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -force-pkg-config?" + [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?" echo " Turn on verbose messaging (-v) to $0 to see the final report." echo " If you believe this message is in error you may use the continue" echo " switch (-continue) to $0 to continue." @@ -5186,7 +5294,7 @@ elif [ "$CFG_OPENGL" = "es2" ]; then compileTestWithPkgConfig glesv2 unix/opengles2 "OpenGL ES 2.0" OPENGL_ES2 if [ $? != "0" ]; then echo "The OpenGL ES 2.0 functionality test failed!" - [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -force-pkg-config?" + [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?" echo " You might need to modify the include and library search paths by editing" echo " QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in" echo " ${XQMAKESPEC}." @@ -5245,7 +5353,7 @@ ORIG_CFG_XCB="$CFG_XCB" ORIG_CFG_EGLFS="$CFG_EGLFS" ORIG_CFG_DIRECTFB="$CFG_DIRECTFB" ORIG_CFG_LINUXFB="$CFG_LINUXFB" -ORIG_CFG_KMS="$CFG_KMS" +ORIG_CFG_MIRCLIENT="$CFG_MIRCLIENT" if [ "$CFG_LIBUDEV" != "no" ]; then if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists libudev 2>/dev/null; then @@ -5260,7 +5368,7 @@ if [ "$CFG_LIBUDEV" != "no" ]; then QT_CONFIG="$QT_CONFIG libudev" elif [ "$CFG_LIBUDEV" = "yes" ]; then echo "The libudev functionality test failed!" - [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -force-pkg-config?" + [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?" exit 1 else CFG_LIBUDEV=no @@ -5470,7 +5578,7 @@ if [ "$CFG_XCB" != "no" ]; then else if [ "$CFG_XCB" != "auto" ]; then echo "The test for linking against libxcb failed!" - [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -force-pkg-config?" + [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?" echo " You might need to install dependency packages for libxcb." echo " See src/plugins/platforms/xcb/README." exit 1 @@ -5487,7 +5595,7 @@ if [ "$CFG_DIRECTFB" != "no" ]; then CFG_DIRECTFB=yes elif [ "$CFG_DIRECTFB" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then echo " DirectFB support cannot be enabled due to functionality tests!" - [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -force-pkg-config?" + [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?" echo " Turn on verbose messaging (-v) to $0 to see the final report." echo " If you believe this message is in error you may use the continue" echo " switch (-continue) to $0 to continue." @@ -5500,6 +5608,20 @@ if [ "$CFG_DIRECTFB" != "no" ]; then fi fi +if [ "$CFG_GBM" != "no" ]; then + if compileTest qpa/gbm "GBM"; then + CFG_GBM=yes + elif [ "$CFG_GBM" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then + echo " GBM support cannot be enabled due to functionality tests!" + echo " Turn on verbose messaging (-v) to $0 to see the final report." + echo " If you believe this message is in error you may use the continue" + echo " switch (-continue) to $0 to continue." + exit 101 + else + CFG_GBM=no + fi +fi + if [ "$CFG_LINUXFB" != "no" ]; then if compileTest qpa/linuxfb "LinuxFB"; then CFG_LINUXFB=yes @@ -5528,6 +5650,20 @@ if [ "$CFG_KMS" != "no" ]; then fi fi +if [ "$CFG_MIRCLIENT" != "no" ]; then + if compileTest qpa/mirclient "Mir client"; then + CFG_MIRCLIENT=yes + elif [ "$CFG_MIRCLIENT" = "yes" ]; then + echo " Mir client support cannot be enabled due to functionality tests!" + echo " Turn on verbose messaging (-v) to $0 to see the final report." + echo " If you believe this message is in error you may use the continue" + echo " switch (-continue) to $0 to continue." + exit 101 + else + CFG_MIRCLIENT=no + fi +fi + # Detect libxkbcommon MIN_REQ_XKBCOMMON="0.4.1" # currently only xcb platform plugin supports building xkbcommon @@ -5544,7 +5680,7 @@ if [ "$CFG_XCB" != "no" ]; then elif [ "$CFG_XKBCOMMON" = "system" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then echo " xkbcommon support cannot be enabled because either xkbcommon or " echo " xkbcommon-x11 >= $MIN_REQ_XKBCOMMON was not found via pkg-config!" - [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -force-pkg-config?" + [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?" echo " Turn on verbose messaging (-v) to $0 to see the final report." echo " If you believe this message is in error you may use the continue" echo " switch (-continue) to $0 to continue." @@ -5605,7 +5741,7 @@ if [ "$CFG_EGL" != "no" ]; then fi elif [ "$CFG_EGL" = "yes" ]; then echo " The EGL functionality test failed; EGL is required by some QPA plugins to manage contexts & surfaces." - [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -force-pkg-config?" + [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?" echo " You might need to modify the include and library search paths by editing" echo " QMAKE_INCDIR_EGL, QMAKE_LIBDIR_EGL and QMAKE_LIBS_EGL in ${XQMAKESPEC}." exit 1 @@ -5624,7 +5760,13 @@ if [ "$CFG_EGLFS" != "no" ]; then else CFG_EGLFS_BRCM=no fi - if compileTest qpa/eglfs-mali "eglfs-mali"; then + if compileTest qpa/eglfs-egldevice "eglfs-egldevice"; then + CFG_EGLFS_EGLDEVICE=yes + else + CFG_EGLFS_EGLDEVICE=no + fi + if compileTest qpa/eglfs-mali "eglfs-mali" \ + || compileTest qpa/eglfs-mali-2 "eglfs-mali-2"; then CFG_EGLFS_MALI=yes else CFG_EGLFS_MALI=no @@ -5639,14 +5781,6 @@ if [ "$CFG_EGLFS" != "no" ]; then fi fi -if [ "$CFG_KMS" = "yes" ]; then - if [ "$CFG_EGL" = "yes" ]; then - CFG_KMS="yes" - else - CFG_KMS="no" - fi -fi - # Detect accessibility support if [ "$CFG_ACCESSIBILITY" = "no" ]; then echo >&2 "Warning: Disabling Accessibility. This version of Qt is unsupported." @@ -5692,17 +5826,23 @@ if [ "$CFG_DIRECTFB" = "yes" ]; then QMakeVar set QMAKE_CFLAGS_DIRECTFB "$QMAKE_CFLAGS_DIRECTFB" QMakeVar set QMAKE_LIBS_DIRECTFB "$QMAKE_LIBS_DIRECTFB" fi +if [ "$CFG_GBM" = "yes" ]; then + QT_CONFIG="$QT_CONFIG gbm" +fi if [ "$CFG_LINUXFB" = "yes" ]; then QT_CONFIG="$QT_CONFIG linuxfb" fi if [ "$CFG_KMS" = "yes" ]; then QT_CONFIG="$QT_CONFIG kms" fi +if [ "$CFG_MIRCLIENT" = "yes" ]; then + QT_CONFIG="$QT_CONFIG mirclient" +fi if [ "$XPLATFORM_MAC" = "no" ] && [ "$XPLATFORM_MINGW" = "no" ] && [ "$XPLATFORM_QNX" = "no" ] && [ "$XPLATFORM_ANDROID" = "no" ] && [ "$XPLATFORM_HAIKU" = "no" ]; then - if [ "$CFG_XCB" = "no" ] && [ "$CFG_EGLFS" = "no" ] && [ "$CFG_DIRECTFB" = "no" ] && [ "$CFG_LINUXFB" = "no" ] && [ "$CFG_KMS" = "no" ]; then + if [ "$CFG_XCB" = "no" ] && [ "$CFG_EGLFS" = "no" ] && [ "$CFG_DIRECTFB" = "no" ] && [ "$CFG_LINUXFB" = "no" ] && [ "$CFG_MIRCLIENT" = "no" ]; then if [ "$QPA_PLATFORM_GUARD" = "yes" ] && - ( [ "$ORIG_CFG_XCB" = "auto" ] || [ "$ORIG_CFG_EGLFS" = "auto" ] || [ "$ORIG_CFG_DIRECTFB" = "auto" ] || [ "$ORIG_CFG_LINUXFB" = "auto" ] || [ "$ORIG_CFG_KMS" = "auto" ] ); then + ( [ "$ORIG_CFG_XCB" = "auto" ] || [ "$ORIG_CFG_EGLFS" = "auto" ] || [ "$ORIG_CFG_DIRECTFB" = "auto" ] || [ "$ORIG_CFG_LINUXFB" = "auto" ] || [ "$ORIG_CFG_MIRCLIENT" = "auto" ] ); then echo "No QPA platform plugin enabled!" echo " If you really want to build without a QPA platform plugin you must pass" echo " -no-qpa-platform-guard to configure. Doing this will" @@ -5875,6 +6015,18 @@ if [ "$CFG_GETIFADDRS" != "no" ]; then fi fi +# find if the platform provides thread-safe CLOEXEC support +if compileTest unix/cloexec "cloexec"; then + CFG_CLOEXEC=yes +fi + +if [ "$XPLATFORM_MAC" = "yes" ] && [ "$CFG_SECURETRANSPORT" != "no" ] && ([ "$CFG_OPENSSL" = "no" ] || [ "$CFG_OPENSSL" = "auto" ]); then + CFG_SECURETRANSPORT=yes + CFG_OPENSSL=no +else + CFG_SECURETRANSPORT=no +fi + # detect OpenSSL if [ "$CFG_OPENSSL" != "no" ]; then if compileTest unix/openssl "OpenSSL"; then @@ -5894,11 +6046,6 @@ if [ "$CFG_OPENSSL" != "no" ]; then fi fi -if [ "$CFG_SECURETRANSPORT" != "no" ] && [ "$CFG_OPENSSL" = "no" ] && [ "$XPLATFORM_MAC" = "yes" ]; then - CFG_SECURETRANSPORT=yes -else - CFG_SECURETRANSPORT=no -fi # detect PCRE if [ "$CFG_PCRE" != "qt" ]; then @@ -5969,12 +6116,12 @@ fi # detect GStreamer support if [ "$CFG_GSTREAMER" = "auto" ] || [ "$CFG_GSTREAMER" = "yes" ]; then - if compileTest unix/gstreamer "GStreamer 0.10" -config gst-0.10; then - CFG_GSTREAMER=yes - CFG_GSTREAMER_VERSION=0.10 - elif compileTest unix/gstreamer "GStreamer 1.0" -config gst-1.0; then + if compileTest unix/gstreamer "GStreamer 1.0" -config gst-1.0; then CFG_GSTREAMER=yes CFG_GSTREAMER_VERSION=1.0 + elif compileTest unix/gstreamer "GStreamer 0.10" -config gst-0.10; then + CFG_GSTREAMER=yes + CFG_GSTREAMER_VERSION=0.10 else if [ "$CFG_GSTREAMER" = "yes" ]; then echo "GStreamer support cannot be enabled due to functionality tests!" @@ -6012,7 +6159,19 @@ fi # ask for all that hasn't been auto-detected or specified in the arguments #------------------------------------------------------------------------------- -[ "$CFG_CXX11" = "yes" ] && QT_CONFIG="$QT_CONFIG c++11" +if [ "$CFG_STDCXX" != "c++98" ]; then + QT_CONFIG="$QT_CONFIG c++11" + if [ "$CFG_STDCXX" != "c++11" ]; then + QT_CONFIG="$QT_CONFIG c++14" + if [ "$CFG_STDCXX" != "c++14" ]; then + QT_CONFIG="$QT_CONFIG c++1z" + fi + fi +fi + +if [ "$CFG_ATOMIC64" = "libatomic" ]; then + QMAKE_CONFIG="$QMAKE_CONFIG atomic64-libatomic" +fi if [ "$CFG_SILENT" = "yes" ]; then QMAKE_CONFIG="$QMAKE_CONFIG silent" @@ -6049,6 +6208,15 @@ fi if [ "$CFG_EGLFS_BRCM" = "yes" ]; then QT_CONFIG="$QT_CONFIG eglfs_brcm" fi +if [ "$CFG_EGLFS_EGLDEVICE" = "yes" ]; then + QT_CONFIG="$QT_CONFIG eglfs_egldevice" +fi +if [ "$CFG_EGLFS" = "yes" ] && [ "$CFG_KMS" = "yes" ] && [ "$CFG_GBM" = "yes" ]; then + QT_CONFIG="$QT_CONFIG eglfs_gbm" + CFG_EGLFS_GBM="yes" +else + CFG_EGLFS_GBM="no" +fi if [ "$CFG_EGLFS_MALI" = "yes" ]; then QT_CONFIG="$QT_CONFIG eglfs_mali" fi @@ -6153,6 +6321,9 @@ fi if [ "$CFG_EVENTFD" = "yes" ]; then QT_CONFIG="$QT_CONFIG eventfd" fi +if [ "$CFG_CLOEXEC" = "yes" ]; then + QT_CONFIG="$QT_CONFIG threadsafe-cloexec" +fi if [ "$CFG_LIBJPEG" = "no" ]; then CFG_JPEG="no" elif [ "$CFG_LIBJPEG" = "system" ]; then @@ -6265,7 +6436,6 @@ if [ '!' -z "$W_FLAGS" ]; then # add the user defined warning flags QMakeVar add QMAKE_CFLAGS_WARN_ON "$W_FLAGS" QMakeVar add QMAKE_CXXFLAGS_WARN_ON "$W_FLAGS" - QMakeVar add QMAKE_OBJECTIVE_CFLAGS_WARN_ON "$W_FLAGS" fi if [ "$XPLATFORM_MINGW" = "yes" ]; then @@ -6466,7 +6636,7 @@ fi # ### Vestige if [ "$CFG_QML_DEBUG" = "no" ]; then - QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_QML_DEBUGGER" + QT_CONFIG="$QT_CONFIG no-qml-debug" fi case "$QMAKE_CONF_COMPILER" in @@ -6510,27 +6680,43 @@ s/icpc version \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\) .*$/QT_ICC_MAJOR_VERSION=\1; Q ;; esac +echo "Done running configuration tests." + +# Save stdout in fd 3 +exec 3>&1 + #------------------------------------------------------------------------------- # part of configuration information goes into qconfig.h #------------------------------------------------------------------------------- +# Open qconfig.h.new +exec > "$outpath/src/corelib/global/qconfig.h.new" + +# start with Qt's version number +cat <<EOF +#define QT_VERSION_MAJOR $QT_MAJOR_VERSION +#define QT_VERSION_MINOR $QT_MINOR_VERSION +#define QT_VERSION_PATCH $QT_PATCH_VERSION +#define QT_VERSION_STR "$QT_VERSION" + +EOF + case "$CFG_QCONFIG" in full) - echo "/* Everything */" >"$outpath/src/corelib/global/qconfig.h.new" + echo "/* Everything */" ;; *) - tmpconfig="$outpath/src/corelib/global/qconfig.h.new" - echo "#ifndef QT_BOOTSTRAPPED" >"$tmpconfig" - cat "$CFG_QCONFIG_PATH" >>"$tmpconfig" - echo "#endif" >>"$tmpconfig" + echo "#ifndef QT_BOOTSTRAPPED" + cat "$CFG_QCONFIG_PATH" + echo "#endif" ;; esac -echo '/* Compile time features */' >>"$outpath/src/corelib/global/qconfig.h.new" -[ '!' -z "$LicenseKeyExt" ] && echo "#define QT_PRODUCT_LICENSEKEY \"$LicenseKeyExt\"" >>"$outpath/src/corelib/global/qconfig.h.new" +echo '/* Compile time features */' +[ '!' -z "$LicenseKeyExt" ] && echo "#define QT_PRODUCT_LICENSEKEY \"$LicenseKeyExt\"" if [ "$CFG_SHARED" = "no" ]; then - cat >>"$outpath/src/corelib/global/qconfig.h.new" <<EOF + cat <<EOF /* Qt was configured for a static build */ #if !defined(QT_SHARED) && !defined(QT_STATIC) # define QT_STATIC @@ -6540,20 +6726,20 @@ EOF fi if [ "$CFG_LARGEFILE" = "yes" ] && [ "$XPLATFORM_MINGW" != "yes" ]; then - echo "#define QT_LARGEFILE_SUPPORT 64" >>"$outpath/src/corelib/global/qconfig.h.new" + echo "#define QT_LARGEFILE_SUPPORT 64" fi if [ "$CFG_QREAL" != double ]; then - echo "#define QT_COORD_TYPE $CFG_QREAL" >>"$outpath/src/corelib/global/qconfig.h.new" - echo "#define QT_COORD_TYPE_STRING $CFG_QREAL_STRING" >>"$outpath/src/corelib/global/qconfig.h.new" + echo "#define QT_COORD_TYPE $CFG_QREAL" + echo "#define QT_COORD_TYPE_STRING $CFG_QREAL_STRING" fi if [ "$CFG_FRAMEWORK" = "yes" ]; then - echo "#define QT_MAC_FRAMEWORK_BUILD" >>"$outpath/src/corelib/global/qconfig.h.new" + echo "#define QT_MAC_FRAMEWORK_BUILD" fi if [ "$XPLATFORM_MAC" = "yes" ]; then - cat >>"$outpath/src/corelib/global/qconfig.h.new" <<EOF + cat <<EOF #if defined(__LP64__) # define QT_POINTER_SIZE 8 #else @@ -6561,33 +6747,37 @@ if [ "$XPLATFORM_MAC" = "yes" ]; then #endif EOF else - "$unixtests/ptrsize.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" - echo "#define QT_POINTER_SIZE $?" >>"$outpath/src/corelib/global/qconfig.h.new" + "$unixtests/ptrsize.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" >&3 + echo "#define QT_POINTER_SIZE $?" +fi + +if [ "$CFG_ATOMIC64" = "no" ]; then + echo "#define QT_NO_STD_ATOMIC64" fi #REDUCE_RELOCATIONS is a elf/unix only thing, so not in windows configure.exe if [ "$CFG_REDUCE_RELOCATIONS" = "yes" ]; then - echo "#define QT_REDUCE_RELOCATIONS" >>"$outpath/src/corelib/global/qconfig.h.new" + echo "#define QT_REDUCE_RELOCATIONS" fi # Add compiler sub-architecture support -echo "" >>"$outpath/src/corelib/global/qconfig.h.new" -echo "// Compiler sub-arch support" >>"$outpath/src/corelib/global/qconfig.h.new" +echo "" +echo "// Compiler sub-arch support" for SUBARCH in SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 AVX AVX2 \ MIPS_DSP MIPS_DSPR2; do eval "VAL=\$CFG_$SUBARCH" case "$VAL" in yes) echo "#define QT_COMPILER_SUPPORTS_$SUBARCH 1" \ - >>"$outpath/src/corelib/global/qconfig.h.new" + ;; esac done -echo "" >>"$outpath/src/corelib/global/qconfig.h.new" +echo "" if [ "$CFG_DEV" = "yes" ]; then - echo "#define QT_BUILD_INTERNAL" >>"$outpath/src/corelib/global/qconfig.h.new" + echo "#define QT_BUILD_INTERNAL" fi # Add QPA to config.h @@ -6633,6 +6823,7 @@ QMakeVar set sql-plugins "$SQL_PLUGINS" [ "$CFG_GETIFADDRS" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_GETIFADDRS" [ "$CFG_INOTIFY" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_INOTIFY" [ "$CFG_EVENTFD" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EVENTFD" +[ "$CFG_CLOEXEC" = "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_THREADSAFE_CLOEXEC=1" [ "$CFG_NIS" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_NIS" [ "$CFG_OPENSSL" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_OPENSSL" [ "$CFG_OPENSSL" = "linked" ]&& QCONFIG_FLAGS="$QCONFIG_FLAGS QT_LINKED_OPENSSL" @@ -6668,7 +6859,7 @@ QMakeVar set sql-plugins "$SQL_PLUGINS" QCONFIG_FLAGS=`echo $QCONFIG_FLAGS` if [ -n "$QCONFIG_FLAGS" ]; then -cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF +cat << EOF #ifndef QT_BOOTSTRAPPED EOF @@ -6687,14 +6878,14 @@ EOF fi if [ -z $cfgdNeg ]; then -cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF +cat << EOF #ifndef $cfgd # define $cfg #endif EOF else -cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF +cat << EOF #if defined($cfgd) && defined($cfgdNeg) # undef $cfgd #elif !defined($cfgd) && !defined($cfgdNeg) @@ -6704,27 +6895,30 @@ cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF EOF fi done -cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF +cat << EOF #endif // QT_BOOTSTRAPPED EOF fi if [ "$CFG_REDUCE_EXPORTS" = "yes" ]; then -cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF +cat << EOF #define QT_VISIBILITY_AVAILABLE EOF fi if [ -n "$QT_LIBINFIX" ]; then -cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF +cat << EOF #define QT_LIBINFIX "$QT_LIBINFIX" EOF fi -echo "#define QT_QPA_DEFAULT_PLATFORM_NAME \"$QT_QPA_DEFAULT_PLATFORM\"" >>"$outpath/src/corelib/global/qconfig.h.new" +echo "#define QT_QPA_DEFAULT_PLATFORM_NAME \"$QT_QPA_DEFAULT_PLATFORM\"" + +# Close qconfig.h.new (by restoring the original stdout) +exec >&3 # avoid unecessary rebuilds by copying only if qconfig.h has changed if cmp -s "$outpath/src/corelib/global/qconfig.h" "$outpath/src/corelib/global/qconfig.h.new"; then @@ -6736,9 +6930,12 @@ fi #------------------------------------------------------------------------------- # save configuration into qconfig.pri #------------------------------------------------------------------------------- + +# open qconfig.pri QTCONFIG="$outpath/mkspecs/qconfig.pri" +exec > "$QTCONFIG.tmp" + QTCONFIG_CONFIG="$QTCONFIG_CONFIG no_mocdepend" -[ -f "$QTCONFIG.tmp" ] && rm -f "$QTCONFIG.tmp" if [ "$CFG_DEBUG" = "yes" ]; then QTCONFIG_CONFIG="$QTCONFIG_CONFIG debug" if [ "$CFG_DEBUG_RELEASE" = "yes" ]; then @@ -6775,7 +6972,7 @@ else fi fi -cat >>"$QTCONFIG.tmp" <<EOF +cat <<EOF #configuration CONFIG += $QTCONFIG_CONFIG host_build { @@ -6802,59 +6999,63 @@ QT_EDITION = $Edition EOF if [ "$Edition" != "OpenSource" ] && [ "$Edition" != "Preview" ]; then - echo "QT_LICHECK = $Licheck" >> "$QTCONFIG.tmp" - echo "QT_RELEASE_DATE = $ReleaseDate" >> "$QTCONFIG.tmp" + echo "QT_LICHECK = $Licheck" + echo "QT_RELEASE_DATE = $ReleaseDate" fi -echo >> "$QTCONFIG.tmp" +echo if [ "$CFG_SHARED" = "no" ]; then - echo "QT_DEFAULT_QPA_PLUGIN = q$QT_QPA_DEFAULT_PLATFORM" >> "$QTCONFIG.tmp" - echo >> "$QTCONFIG.tmp" + echo "QT_DEFAULT_QPA_PLUGIN = q$QT_QPA_DEFAULT_PLATFORM" + echo fi if [ -n "$PKG_CONFIG_SYSROOT_DIR" ] || [ -n "$PKG_CONFIG_LIBDIR" ]; then - echo "# pkgconfig" >> "$QTCONFIG.tmp" - echo "PKG_CONFIG_SYSROOT_DIR = $PKG_CONFIG_SYSROOT_DIR" >> "$QTCONFIG.tmp" - echo "PKG_CONFIG_LIBDIR = $PKG_CONFIG_LIBDIR" >> "$QTCONFIG.tmp" - echo >> "$QTCONFIG.tmp" + echo "# pkgconfig" + echo "PKG_CONFIG_SYSROOT_DIR = $PKG_CONFIG_SYSROOT_DIR" + echo "PKG_CONFIG_LIBDIR = $PKG_CONFIG_LIBDIR" + echo fi if [ -n "$CFG_SYSROOT" ] && [ "$CFG_GCC_SYSROOT" = "yes" ]; then - echo "# sysroot" >>"$QTCONFIG.tmp" - echo "!host_build {" >>"$QTCONFIG.tmp" - echo " QMAKE_CFLAGS += --sysroot=\$\$[QT_SYSROOT]" >>"$QTCONFIG.tmp" - echo " QMAKE_CXXFLAGS += --sysroot=\$\$[QT_SYSROOT]" >>"$QTCONFIG.tmp" - echo " QMAKE_LFLAGS += --sysroot=\$\$[QT_SYSROOT]" >>"$QTCONFIG.tmp" - echo "}" >> "$QTCONFIG.tmp" - echo >> "$QTCONFIG.tmp" + echo "# sysroot" + echo "!host_build {" + echo " QMAKE_CFLAGS += --sysroot=\$\$[QT_SYSROOT]" + echo " QMAKE_CXXFLAGS += --sysroot=\$\$[QT_SYSROOT]" + echo " QMAKE_LFLAGS += --sysroot=\$\$[QT_SYSROOT]" + echo "}" + echo fi if [ -n "$RPATH_FLAGS" ]; then - echo "QMAKE_RPATHDIR += $RPATH_FLAGS" >> "$QTCONFIG.tmp" + echo "QMAKE_RPATHDIR += $RPATH_FLAGS" fi +echo "QT_COMPILER_STDCXX = $CFG_STDCXX_DEFAULT" if [ -n "$QT_GCC_MAJOR_VERSION" ]; then - echo "QT_GCC_MAJOR_VERSION = $QT_GCC_MAJOR_VERSION" >> "$QTCONFIG.tmp" - echo "QT_GCC_MINOR_VERSION = $QT_GCC_MINOR_VERSION" >> "$QTCONFIG.tmp" - echo "QT_GCC_PATCH_VERSION = $QT_GCC_PATCH_VERSION" >> "$QTCONFIG.tmp" + echo "QT_GCC_MAJOR_VERSION = $QT_GCC_MAJOR_VERSION" + echo "QT_GCC_MINOR_VERSION = $QT_GCC_MINOR_VERSION" + echo "QT_GCC_PATCH_VERSION = $QT_GCC_PATCH_VERSION" fi if [ -n "$QT_ICC_MAJOR_VERSION" ]; then - echo "QT_ICC_MAJOR_VERSION = $QT_ICC_MAJOR_VERSION" >> "$QTCONFIG.tmp" - echo "QT_ICC_MINOR_VERSION = $QT_ICC_MINOR_VERSION" >> "$QTCONFIG.tmp" - echo "QT_ICC_PATCH_VERSION = $QT_ICC_PATCH_VERSION" >> "$QTCONFIG.tmp" + echo "QT_ICC_MAJOR_VERSION = $QT_ICC_MAJOR_VERSION" + echo "QT_ICC_MINOR_VERSION = $QT_ICC_MINOR_VERSION" + echo "QT_ICC_PATCH_VERSION = $QT_ICC_PATCH_VERSION" fi if [ -n "$QT_CLANG_MAJOR_VERSION" ]; then - echo "QT_CLANG_MAJOR_VERSION = $QT_CLANG_MAJOR_VERSION" >> "$QTCONFIG.tmp" - echo "QT_CLANG_MINOR_VERSION = $QT_CLANG_MINOR_VERSION" >> "$QTCONFIG.tmp" + echo "QT_CLANG_MAJOR_VERSION = $QT_CLANG_MAJOR_VERSION" + echo "QT_CLANG_MINOR_VERSION = $QT_CLANG_MINOR_VERSION" fi if [ -n "$QT_APPLE_CLANG_MAJOR_VERSION" ]; then - echo "QT_APPLE_CLANG_MAJOR_VERSION = $QT_APPLE_CLANG_MAJOR_VERSION" >> "$QTCONFIG.tmp" - echo "QT_APPLE_CLANG_MINOR_VERSION = $QT_APPLE_CLANG_MINOR_VERSION" >> "$QTCONFIG.tmp" + echo "QT_APPLE_CLANG_MAJOR_VERSION = $QT_APPLE_CLANG_MAJOR_VERSION" + echo "QT_APPLE_CLANG_MINOR_VERSION = $QT_APPLE_CLANG_MINOR_VERSION" fi if [ -n "$QMAKE_INCDIR_OPENGL_ES2" ]; then - echo "#Qt opengl include path" >> "$QTCONFIG.tmp" - echo "QMAKE_INCDIR_OPENGL_ES2 = `shellArgumentListToQMakeList "$QMAKE_INCDIR_OPENGL_ES2"`" >> "$QTCONFIG.tmp" + echo "#Qt opengl include path" + echo "QMAKE_INCDIR_OPENGL_ES2 = `shellArgumentListToQMakeList "$QMAKE_INCDIR_OPENGL_ES2"`" fi +# Close qconfig.pri.tmp (by restoring the original stdout) +exec >&3 + # replace qconfig.pri if it differs from the newly created temp file if cmp -s "$QTCONFIG.tmp" "$QTCONFIG"; then rm -f "$QTCONFIG.tmp" @@ -6865,12 +7066,15 @@ fi #------------------------------------------------------------------------------- # save configuration into qmodule.pri #------------------------------------------------------------------------------- + +# open qmodule.pri QTMODULE="$outpath/mkspecs/qmodule.pri" +exec > "$QTMODULE.tmp" -echo "CONFIG += $QMAKE_CONFIG" >> "$QTMODULE.tmp" -echo "QT_BUILD_PARTS += $CFG_BUILD_PARTS" >> "$QTMODULE.tmp" +echo "CONFIG += $QMAKE_CONFIG" +echo "QT_BUILD_PARTS += $CFG_BUILD_PARTS" if [ -n "$CFG_SKIP_MODULES" ]; then - echo "QT_SKIP_MODULES += $CFG_SKIP_MODULES" >> "$QTMODULE.tmp" + echo "QT_SKIP_MODULES += $CFG_SKIP_MODULES" fi DISABLED_FEATURES= for cfg in $QCONFIG_FLAGS; do @@ -6880,9 +7084,9 @@ for cfg in $QCONFIG_FLAGS; do fi done if [ -n "$DISABLED_FEATURES" ]; then - echo "QT_NO_DEFINES = $DISABLED_FEATURES" >> "$QTMODULE.tmp" + echo "QT_NO_DEFINES = $DISABLED_FEATURES" fi -echo "QT_QCONFIG_PATH = ${CFG_QCONFIG_PATH#$relpath/src/corelib/global/}" >> "$QTMODULE.tmp" +echo "QT_QCONFIG_PATH = ${CFG_QCONFIG_PATH#$relpath/src/corelib/global/}" cat >>"$QTMODULE.tmp" <<EOF host_build { @@ -6891,44 +7095,47 @@ host_build { QT_CPU_FEATURES.$CFG_ARCH = $CFG_CPUFEATURES } EOF -echo "QT_COORD_TYPE = $CFG_QREAL" >> "$QTMODULE.tmp" +echo "QT_COORD_TYPE = $CFG_QREAL" if [ -n "$QT_CFLAGS_PSQL" ]; then - echo "QT_CFLAGS_PSQL = $QT_CFLAGS_PSQL" >> "$QTMODULE.tmp" + echo "QT_CFLAGS_PSQL = $QT_CFLAGS_PSQL" fi if [ -n "$QT_LFLAGS_PSQL" ]; then - echo "QT_LFLAGS_PSQL = $QT_LFLAGS_PSQL" >> "$QTMODULE.tmp" + echo "QT_LFLAGS_PSQL = $QT_LFLAGS_PSQL" fi if [ -n "$QT_CFLAGS_MYSQL" ]; then - echo "QT_CFLAGS_MYSQL = $QT_CFLAGS_MYSQL" >> "$QTMODULE.tmp" + echo "QT_CFLAGS_MYSQL = $QT_CFLAGS_MYSQL" fi if [ -n "$QT_LFLAGS_MYSQL" ]; then - echo "QT_LFLAGS_MYSQL = $QT_LFLAGS_MYSQL" >> "$QTMODULE.tmp" + echo "QT_LFLAGS_MYSQL = $QT_LFLAGS_MYSQL" fi if [ -n "$QT_CFLAGS_SQLITE" ]; then - echo "QT_CFLAGS_SQLITE = $QT_CFLAGS_SQLITE" >> "$QTMODULE.tmp" + echo "QT_CFLAGS_SQLITE = $QT_CFLAGS_SQLITE" fi if [ -n "$QT_LFLAGS_SQLITE" ]; then - echo "QT_LFLAGS_SQLITE = $QT_LFLAGS_SQLITE" >> "$QTMODULE.tmp" + echo "QT_LFLAGS_SQLITE = $QT_LFLAGS_SQLITE" fi if [ -n "$QT_LFLAGS_ODBC" ]; then - echo "QT_LFLAGS_ODBC = $QT_LFLAGS_ODBC" >> "$QTMODULE.tmp" + echo "QT_LFLAGS_ODBC = $QT_LFLAGS_ODBC" fi if [ -n "$QT_LFLAGS_TDS" ]; then - echo "QT_LFLAGS_TDS = $QT_LFLAGS_TDS" >> "$QTMODULE.tmp" + echo "QT_LFLAGS_TDS = $QT_LFLAGS_TDS" fi #dump in the OPENSSL_LIBS info if [ '!' -z "$OPENSSL_LIBS" ]; then - echo "OPENSSL_LIBS = $OPENSSL_LIBS" >> "$QTMODULE.tmp" + echo "OPENSSL_LIBS = $OPENSSL_LIBS" elif [ "$CFG_OPENSSL" = "linked" ]; then - echo "OPENSSL_LIBS = -lssl -lcrypto" >> "$QTMODULE.tmp" + echo "OPENSSL_LIBS = -lssl -lcrypto" fi # cmdline args -cat "$QMAKE_VARS_FILE" >> "$QTMODULE.tmp" +cat "$QMAKE_VARS_FILE" # QMAKE_VARS_FILE will be still needed for a status message. +# Close qmodule.pri.tmp (by restoring the original stdout) +exec >&3 + # replace qmodule.pri if it differs from the newly created temp file if cmp -s "$QTMODULE.tmp" "$QTMODULE"; then rm -f "$QTMODULE.tmp" @@ -6939,7 +7146,7 @@ fi #------------------------------------------------------------------------------- # give feedback on configuration #------------------------------------------------------------------------------- -exec 3>&1 1>$outpath/config.summary # redirect output temporarily to config.summary +exec 1>$outpath/config.summary # redirect output temporarily to config.summary report_support() { @@ -7025,7 +7232,7 @@ else fi unset build_mode release echo " Using sanitizer(s)...... $CFG_SANITIZERS" -echo " Using C++11 ............ $CFG_CXX11" +echo " Using C++ standard ..... $CFG_STDCXX" echo " Using gold linker....... $CFG_USE_GOLD_LINKER" echo " Using new DTAGS ........ $CFG_ENABLE_NEW_DTAGS" echo " Using PCH .............. $CFG_PRECOMPILE" @@ -7074,8 +7281,10 @@ report_support " Image formats:" report_support_plugin " GIF .................." "$CFG_GIF" qt QtGui report_support_plugin " JPEG ................." "$CFG_JPEG" "$CFG_LIBJPEG" QtGui report_support_plugin " PNG .................." "$CFG_PNG" "$CFG_LIBPNG" QtGui -report_support " journald ..............." "$CFG_JOURNALD" report_support " libinput................" "$CFG_LIBINPUT" +report_support " Logging backends:" +report_support " journald ..............." "$CFG_JOURNALD" +report_support " syslog ..............." "$CFG_SYSLOG" report_support " mtdev .................." "$CFG_MTDEV" yes "system library" report_support " Networking:" [ "$XPLATFORM_MAC" = "yes" ] && \ @@ -7102,12 +7311,14 @@ report_support " PulseAudio ............." "$CFG_PULSEAUDIO" report_support " QPA backends:" report_support " DirectFB ............." "$CFG_DIRECTFB" report_support " EGLFS ................" "$CFG_EGLFS" -report_support " EGLFS i.MX6....... ." "$CFG_EGLFS_VIV" -report_support " EGLFS KMS .........." "$CFG_KMS" +report_support " EGLFS i.MX6 ........" "$CFG_EGLFS_VIV" +report_support " EGLFS EGLDevice ...." "$CFG_EGLFS_EGLDEVICE" +report_support " EGLFS GBM .........." "$CFG_EGLFS_GBM" report_support " EGLFS Mali ........." "$CFG_EGLFS_MALI" report_support " EGLFS Raspberry Pi ." "$CFG_EGLFS_BRCM" report_support " EGLFS X11 .........." "$CFG_EGL_X" report_support " LinuxFB .............." "$CFG_LINUXFB" +report_support " Mir client............" "$CFG_MIRCLIENT" report_support " XCB .................." "$CFG_XCB" system "system library" qt "bundled copy" if [ "$CFG_XCB" != "no" ]; then report_support " EGL on X ..........." "$CFG_EGL_X" @@ -7165,12 +7376,12 @@ if [ "$CFG_OPENSSL" = "linked" ] && [ "$OPENSSL_LIBS" = "" ]; then echo "For example:" echo " OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' ./configure -openssl-linked" fi -if [ "$CFG_JOURNALD" = "yes" ] || [ "$CFG_SLOG2" = "yes" ]; then +if [ "$CFG_JOURNALD" = "yes" ] || [ "$CFG_SYSLOG" = "yes" ] || [ "$CFG_SLOG2" = "yes" ]; then echo - echo "NOTE: journald or slog2 integration is enabled." + echo "NOTE: journald, syslog or slog2 integration is enabled." echo "If your users intend on developing applications against this build," echo "ensure that the IDEs they use either set QT_LOGGING_TO_CONSOLE to 1" - echo "or the IDE is able to read the logged output from journald or slog2." + echo "or the IDE is able to read the logged output from journald, syslog or slog2." fi if [ "$CFG_XKBCOMMON" = "qt" ] && [ "$CFG_XKB_CONFIG_ROOT" = "not found" ]; then echo @@ -7287,6 +7498,20 @@ EOF fi #------------------------------------------------------------------------------- +# check if the user passed the deprecated -no-c++11 / --c++-level=c++98 option +#------------------------------------------------------------------------------- +if [ "$CFG_STDCXX" = "c++98" ]; then +cat <<EOF + + NOTICE: The -no-c++11 / --c++-level=c++98 option is deprecated. + + Qt 5.7 will require C++11 support. The options are in effect for this + Qt 5.6 build, but you should update your build scripts to remove the + option and, if necessary, upgrade your compiler. +EOF +fi + +#------------------------------------------------------------------------------- # finally save the executed command to another script #------------------------------------------------------------------------------- if [ `basename $0` != "config.status" ]; then |