Fixed compile error in eglfs plugin due to narrowing conversion.
[profile/ivi/qtbase.git] / configure
1 #!/bin/sh
2 #############################################################################
3 ##
4 ## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
5 ## Contact: http://www.qt-project.org/
6 ##
7 ## This file is the build configuration utility of the Qt Toolkit.
8 ##
9 ## $QT_BEGIN_LICENSE:LGPL$
10 ## GNU Lesser General Public License Usage
11 ## This file may be used under the terms of the GNU Lesser General Public
12 ## License version 2.1 as published by the Free Software Foundation and
13 ## appearing in the file LICENSE.LGPL included in the packaging of this
14 ## file. Please review the following information to ensure the GNU Lesser
15 ## General Public License version 2.1 requirements will be met:
16 ## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
17 ##
18 ## In addition, as a special exception, Nokia gives you certain additional
19 ## rights. These rights are described in the Nokia Qt LGPL Exception
20 ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
21 ##
22 ## GNU General Public License Usage
23 ## Alternatively, this file may be used under the terms of the GNU General
24 ## Public License version 3.0 as published by the Free Software Foundation
25 ## and appearing in the file LICENSE.GPL included in the packaging of this
26 ## file. Please review the following information to ensure the GNU General
27 ## Public License version 3.0 requirements will be met:
28 ## http://www.gnu.org/copyleft/gpl.html.
29 ##
30 ## Other Usage
31 ## Alternatively, this file may be used in accordance with the terms and
32 ## conditions contained in a signed written agreement between you and Nokia.
33 ##
34 ##
35 ##
36 ##
37 ##
38 ##
39 ## $QT_END_LICENSE$
40 ##
41 #############################################################################
42
43 #-------------------------------------------------------------------------------
44 # script initialization
45 #-------------------------------------------------------------------------------
46
47 # the name of this script
48 relconf=`basename $0`
49 # the directory of this script is the "source tree"
50 relpath=`dirname $0`
51 relpath=`(cd "$relpath"; /bin/pwd)`
52 # the current directory is the "build tree" or "object tree"
53 outpath=`/bin/pwd`
54
55 #license file location
56 LICENSE_FILE="$QT_LICENSE_FILE"
57 [ -z "$LICENSE_FILE" ] && LICENSE_FILE="$HOME/.qt-license"
58 if [ -f "$LICENSE_FILE" ]; then
59     tr -d '\r' <"$LICENSE_FILE" >"${LICENSE_FILE}.tmp"
60     diff "${LICENSE_FILE}.tmp" "${LICENSE_FILE}" >/dev/null 2>&1 || LICENSE_FILE="${LICENSE_FILE}.tmp"
61 fi
62
63 # later cache the command line in config.status
64 OPT_CMDLINE=`echo $@ | sed "s,-v ,,g; s,-v$,,g"`
65
66 # initialize global variables
67 QMAKE_SWITCHES=
68 QMAKE_VARS=
69 QMAKE_CONFIG=
70 QTCONFIG_CONFIG=
71 QT_CONFIG=
72 SUPPORTED=
73 QMAKE_VARS_FILE=.qmake.vars
74 DEVICE_VARS_FILE=.device.vars
75
76 :> "$QMAKE_VARS_FILE"
77 :> "$DEVICE_VARS_FILE"
78
79 #-------------------------------------------------------------------------------
80 # utility functions
81 #-------------------------------------------------------------------------------
82
83 shellEscape()
84 {
85     echo "$@" | sed 's/ /\ /g'
86 }
87
88 # Adds a new qmake variable to the cache
89 # Usage: QMakeVar mode varname contents
90 #   where mode is one of: set, add, del
91 QMakeVar()
92 {
93     case "$1" in
94         set)
95             eq="="
96             ;;
97         add)
98             eq="+="
99             ;;
100         del)
101             eq="-="
102             ;;
103         *)
104             echo >&2 "BUG: wrong command to QMakeVar: $1"
105             ;;
106     esac
107
108     echo "$2" "$eq" "$3" >> "$QMAKE_VARS_FILE"
109 }
110
111 # Helper function for getQMakeConf. It parses include statements in
112 # qmake.conf and prints out the expanded file
113 getQMakeConf1()
114 {
115     while read line; do case "$line" in
116         include*)
117             inc_file=`echo "$line" | sed -n -e "/^include.*(.*)/s/include.*(\(.*\)).*$/\1/p"`
118             current_dir=`dirname "$1"`
119             conf_file="$current_dir/$inc_file"
120             if [ ! -f  "$conf_file" ]; then
121                 echo "WARNING: Unable to find file $conf_file" >&2
122                 continue
123             fi
124             getQMakeConf1 "$conf_file"
125         ;;
126         *load\(device_config\)*)
127             conf_file="$DEVICE_VARS_FILE"
128             if [ ! -f  "$conf_file" ]; then
129                 echo "WARNING: Unable to find file $conf_file" >&2
130                 continue
131             fi
132             getQMakeConf1 "$conf_file"
133         ;;
134         *)
135             echo "$line"
136         ;;
137     esac; done < "$1"
138 }
139
140 getQMakeConf2()
141 {
142     $AWK '
143 BEGIN {
144     values["LITERAL_WHITESPACE"] = " "
145     values["LITERAL_DOLLAR"] = "$"
146 }
147 /^[_A-Z0-9.]+[ \t]*\+?=/ {
148     valStart = index($0, "=") + 1
149
150     append = 0
151     if (substr($0, valStart - 2, 1) == "+") {
152         append = 1
153     }
154
155     variable = substr($0, 0, valStart - 2 - append)
156     value = substr($0, valStart)
157     gsub("[ \t]+", "", variable)
158     gsub("^[ \t]+", "", value)
159     gsub("[ \t]+$", "", value)
160
161     ovalue = ""
162     while (match(value, /\$\$(\{[_A-Z0-9.]+\}|[_A-Z0-9.]+)/)) {
163         ovalue = ovalue substr(value, 1, RSTART - 1)
164         var = substr(value, RSTART + 2, RLENGTH - 2)
165         value = substr(value, RSTART + RLENGTH)
166         if (var ~ /^\{/) {
167             var = substr(var, 2, length(var) - 2)
168         }
169         ovalue = ovalue values[var]
170     }
171     ovalue = ovalue value
172
173     combinedValue = values[variable]
174     if (append == 1 && length(combinedValue) > 0) {
175         combinedValue = combinedValue " " ovalue
176     } else {
177         combinedValue = ovalue
178     }
179     values[variable] = combinedValue
180 }
181 END {
182     for (var in values) {
183         print var "=" values[var]
184     }
185 }
186 '
187 }
188
189 getQMakeConf3()
190 {
191     echo "$2" | $AWK "/^($1)=/ { print substr(\$0, index(\$0, \"=\") + 1) }"
192 }
193
194 # relies on $QMAKESPEC being set correctly. parses include statements in
195 # qmake.conf and prints out the expanded file
196 getQMakeConf()
197 {
198     if [ -z "$specvals" ]; then
199         specvals=`getQMakeConf1 "$QMAKESPEC/qmake.conf" | getQMakeConf2`
200     fi
201     getQMakeConf3 "$1" "$specvals"
202 }
203
204 getXQMakeConf()
205 {
206     if [ -z "$xspecvals" ]; then
207         xspecvals=`getQMakeConf1 "$XQMAKESPEC/qmake.conf" | getQMakeConf2`
208     fi
209     getQMakeConf3 "$1" "$xspecvals"
210 }
211
212 # relies on $TEST_COMPILER being set correctly
213 compilerSupportsFlag()
214 {
215     cat >conftest.cpp <<EOF
216 int main() { return 0; }
217 EOF
218     "$TEST_COMPILER" "$@" -o conftest.o conftest.cpp
219     ret=$?
220     rm -f conftest.cpp conftest.o
221     return $ret
222 }
223
224 # relies on $TEST_COMPILER being set correctly
225 linkerSupportsFlag()
226 {
227     lflags=-Wl
228     for flag
229     do
230         safe_flag=`shellEscape "$flag"`
231         lflags=$lflags,$safe_flag
232     done
233     compilerSupportsFlag "$lflags" >/dev/null 2>&1
234 }
235
236 #-------------------------------------------------------------------------------
237 # device options
238 #-------------------------------------------------------------------------------
239 DeviceVar()
240 {
241     case "$1" in
242         set)
243             eq="="
244             ;;
245         *)
246             echo >&2 "BUG: wrong command to QMakeVar: $1"
247             ;;
248     esac
249
250     echo "$2" "$eq" "$3" >> "$DEVICE_VARS_FILE"
251 }
252
253 resolveDeviceMkspec()
254 {
255     result=$(find "$relpath/mkspecs/devices/" -type d -name "*$VAL*" | sed "s,^$relpath/mkspecs/,,")
256     match_count=$(echo "$result" | wc -w)
257     if [ "$match_count" -gt 1 ]; then
258         echo >&2 "Error: Multiple matches for device '$VAL'. Candidates are:"
259         tabbed_result=$(echo "$result" | sed "s,^,    ,")
260         echo >&2 "$tabbed_result"
261         echo "undefined"
262     elif [ "$match_count" -eq 0 ]; then
263         echo >&2 "Error: No device matching '$VAL'"
264         echo "undefined"
265     else
266         echo "$result"
267     fi
268 }
269
270 #-------------------------------------------------------------------------------
271 # operating system detection
272 #-------------------------------------------------------------------------------
273
274 # need that throughout the script
275 UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
276 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
277 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
278 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
279
280 # detect the "echo without newline" style. usage: echo $ECHO_N "<string>$ECHO_C"
281 if echo '\c' | grep '\c' >/dev/null; then
282     ECHO_N=-n
283 else
284     ECHO_C='\c'
285 fi
286
287 #-------------------------------------------------------------------------------
288 # window system detection
289 #-------------------------------------------------------------------------------
290
291 BUILD_ON_MAC=no
292 PLATFORM_MAC=no
293 if [ -d /System/Library/Frameworks/Carbon.framework ]; then
294     BUILD_ON_MAC=yes
295     PLATFORM_MAC=maybe
296 fi
297
298 #-----------------------------------------------------------------------------
299 # Qt version detection
300 #-----------------------------------------------------------------------------
301 QT_VERSION=`grep '^# *define *QT_VERSION_STR' "$relpath"/src/corelib/global/qglobal.h`
302 QT_MAJOR_VERSION=
303 QT_MINOR_VERSION=0
304 QT_PATCH_VERSION=0
305 if [ -n "$QT_VERSION" ]; then
306    QT_VERSION=`echo $QT_VERSION | sed 's,^# *define *QT_VERSION_STR *"*\([^ ]*\)"$,\1,'`
307    MAJOR=`echo $QT_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\1,'`
308    if [ -n "$MAJOR" ]; then
309      MINOR=`echo $QT_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\2,'`
310       PATCH=`echo $QT_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\3,'`
311       QT_MAJOR_VERSION="$MAJOR"
312       [ -z "$MINOR" ] || QT_MINOR_VERSION="$MINOR"
313       [ -z "$PATCH" ] || QT_PATCH_VERSION="$PATCH"
314    fi
315 fi
316 if [ -z "$QT_MAJOR_VERSION" ]; then
317    echo "Cannot process version from qglobal.h: $QT_VERSION"
318    echo "Cannot proceed."
319    exit 1
320 fi
321
322 QT_PACKAGEDATE=`grep '^# *define *QT_PACKAGEDATE_STR' "$relpath"/src/corelib/global/qglobal.h | sed -e 's,^# *define *QT_PACKAGEDATE_STR *"\([^ ]*\)"$,\1,' -e s,-,,g`
323 if [ -z "$QT_PACKAGEDATE" ]; then
324    echo "Unable to determine package date from qglobal.h: '$QT_PACKAGEDATE'"
325    echo "Cannot proceed"
326    exit 1
327 fi
328
329 #-------------------------------------------------------------------------------
330 # check the license
331 #-------------------------------------------------------------------------------
332 COMMERCIAL_USER=ask
333 CFG_DEV=no
334 CFG_RTOS_ENABLED=yes
335 EditionString=Commercial
336
337 earlyArgParse()
338 {
339     # parse the arguments, setting things to "yes" or "no"
340     while [ "$#" -gt 0 ]; do
341         CURRENT_OPT="$1"
342         UNKNOWN_ARG=no
343         case "$1" in
344         #Autoconf style options
345         --enable-*)
346             VAR=`echo $1 | sed "s,^--enable-\(.*\),\1,"`
347             VAL=yes
348             ;;
349         --disable-*)
350             VAR=`echo $1 | sed "s,^--disable-\(.*\),\1,"`
351             VAL=no
352             ;;
353         --*=*)
354             VAR=`echo $1 | sed "s,^--\(.*\)=.*,\1,"`
355             VAL=`echo $1 | sed "s,^--.*=\(.*\),\1,"`
356             ;;
357         --no-*)
358             VAR=`echo $1 | sed "s,^--no-\(.*\),\1,"`
359             VAL=no
360             ;;
361         -h|help|--help|-help)
362             if [ "$VAL" = "yes" ]; then
363                 OPT_HELP="$VAL"
364                 COMMERCIAL_USER="no" #doesn't matter we will display the help
365             else
366                 UNKNOWN_OPT=yes
367                 COMMERCIAL_USER="no" #doesn't matter we will display the help
368             fi
369             ;;
370         --*)
371             VAR=`echo $1 | sed "s,^--\(.*\),\1,"`
372             VAL=yes
373             ;;
374         -*)
375             VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
376             VAL="unknown"
377             ;;
378         *)
379             UNKNOWN_ARG=yes
380             ;;
381         esac
382         if [ "$UNKNOWN_ARG" = "yes" ]; then
383             shift
384             continue
385         fi
386         shift
387
388         UNKNOWN_OPT=no
389         case "$VAR" in
390         developer-build)
391             CFG_DEV="yes"
392             ;;
393         commercial)
394             COMMERCIAL_USER="yes"
395             ;;
396         opensource)
397             COMMERCIAL_USER="no"
398             ;;
399         *)
400             UNKNOWN_OPT=yes
401             ;;
402         esac
403     done
404 }
405
406 earlyArgParse "$@"
407
408 if [ "$COMMERCIAL_USER" = "ask" ]; then
409     while true; do
410         echo "Which edition of Qt do you want to use ?"
411         echo
412         echo "Type 'c' if you want to use the Commercial Edition."
413         echo "Type 'o' if you want to use the Open Source Edition."
414         echo
415         read commercial
416         echo
417         if [ "$commercial" = "c" ]; then
418             COMMERCIAL_USER="yes"
419             break
420         elif [ "$commercial" = "o" ]; then
421             COMMERCIAL_USER="no"
422             break
423         fi
424     done
425 fi
426
427 if [ -f "$relpath"/LICENSE.PREVIEW.COMMERCIAL ] && [ $COMMERCIAL_USER = "yes" ]; then
428     # Commercial preview release
429     [ "$PLATFORM_MAC" = "maybe" ] && PLATFORM_MAC=yes
430     Licensee="Preview"
431     Edition="Preview"
432     QT_EDITION="QT_EDITION_DESKTOP"
433     LicenseType="Technology Preview"
434 elif [ $COMMERCIAL_USER = "yes" ]; then
435     # one of commercial editions
436     [ "$PLATFORM_MAC" = "maybe" ] && PLATFORM_MAC=yes
437
438     # read in the license file
439     if [ -f "$LICENSE_FILE" ]; then
440         . "$LICENSE_FILE" >/dev/null 2>&1
441         if [ -z "$LicenseKeyExt" ]; then
442             echo
443             echo "You are using an old license file."
444             echo
445             echo "Please install the license file supplied by Nokia,"
446             echo "or install the Qt Open Source Edition if you intend to"
447             echo "develop free software."
448             exit 1
449         fi
450         if [ -z "$Licensee" ]; then
451             echo
452             echo "Invalid license key. Please check the license key."
453             exit 1
454         fi
455     else
456         if [ -z "$LicenseKeyExt" ]; then
457             echo
458             echo $ECHO_N "Please enter your license key: $ECHO_C"
459             read LicenseKeyExt
460             Licensee="Unknown user"
461         fi
462     fi
463
464     # Key verification
465     echo "$LicenseKeyExt" | grep ".....*-....*-....*-....*-.....*-.....*-...." >/dev/null 2>&1 \
466         && LicenseValid="yes" \
467         || LicenseValid="no"
468     if [ "$LicenseValid" != "yes" ]; then
469         echo
470         echo "Invalid license key. Please check the license key."
471         exit 1
472     fi
473     ProductCode=`echo $LicenseKeyExt | cut -f 1 -d - | cut -b 1`
474     PlatformCode=`echo $LicenseKeyExt | cut -f 2 -d -`
475     LicenseTypeCode=`echo $LicenseKeyExt | cut -f 3 -d -`
476     LicenseFeatureCode=`echo $LicenseKeyExt | cut -f 4 -d - | cut -b 1`
477
478     # determine which edition we are licensed to use
479     case "$LicenseTypeCode" in
480     F4M)
481         LicenseType="Commercial"
482         case $ProductCode in
483         F)
484             Edition="Universal"
485             QT_EDITION="QT_EDITION_UNIVERSAL"
486             ;;
487         B)
488             Edition="FullFramework"
489             EditionString="Full Framework"
490             QT_EDITION="QT_EDITION_DESKTOP"
491             ;;
492         L)
493             Edition="GUIFramework"
494             EditionString="GUI Framework"
495             QT_EDITION="QT_EDITION_DESKTOPLIGHT"
496             ;;
497         esac
498         ;;
499     Z4M|R4M|Q4M)
500         LicenseType="Evaluation"
501         QMakeVar add DEFINES QT_EVAL
502         case $ProductCode in
503          B)
504             Edition="Evaluation"
505             QT_EDITION="QT_EDITION_EVALUATION"
506             ;;
507         esac
508         ;;
509     esac
510     if [ -z "$LicenseType" -o -z "$Edition" -o -z "$QT_EDITION" ]; then
511         echo
512         echo "Invalid license key. Please check the license key."
513         exit 1
514     fi
515
516     # verify that we are licensed to use Qt on this platform
517     LICENSE_EXTENSION=
518     case "$PlatformCode" in
519         *L)
520             CFG_RTOS_ENABLED=yes
521             PlatformCode=`echo "$PlatformCode" | sed 'h;y/8NPQRTZ/UCWX9M7/;x;G;s/\(.\)....\(.\)./\1\2/'`
522             ;;
523         *)
524             CFG_RTOS_ENABLED=no
525             PlatformCode=`echo "$PlatformCode" | sed 's/.$//'`
526             ;;
527     esac
528     ### EMBEDDED_QPA logic missing ###
529     case "$PlatformCode,$PLATFORM_MAC" in
530         X9,* | XC,* | XU,* | XW,* | XM,*)
531             # Qt All-OS
532             LICENSE_EXTENSION="-ALLOS"
533             ;;
534         8M,* | KM,* | S9,* | SC,* | SM,* | SU,* | SW,* | X9,* | XC,* | XU,* | XW,*)
535             # Qt for Embedded Linux
536             LICENSE_EXTENSION="-EMBEDDED"
537             ;;
538         6M,* | N7,* | N9,* | NX,*)
539             # Embedded no-deploy
540             LICENSE_EXTENSION="-EMBEDDED"
541             ;;
542         FM,* | LM,yes | ZM,no)
543             # Desktop
544             LICENSE_EXTENSION="-DESKTOP"
545             ;;
546         *)
547             Platform=Linux/X11
548             [ "$PLATFORM_MAC" = "yes" ] && Platform='Mac OS X'
549             echo
550             echo "You are not licensed for the $Platform platform."
551             echo
552             echo "Please contact qt-info@nokia.com to upgrade your license to"
553             echo "include the $Platform platform, or install the Qt Open Source Edition"
554             echo "if you intend to develop free software."
555             exit 1
556             ;;
557     esac
558
559     if test -r "$relpath/.LICENSE"; then
560         # Generic, non-final license
561         LICENSE_EXTENSION=""
562         line=`sed 'y/a-z/A-Z/;q' "$relpath"/.LICENSE`
563         case "$line" in
564             *BETA*)
565                 Edition=Beta
566                 ;;
567             *TECHNOLOGY?PREVIEW*)
568                 Edition=Preview
569                 ;;
570             *EVALUATION*)
571                 Edition=Evaluation
572                 ;;
573             *)
574                 echo >&2 "Invalid license files; cannot continue"
575                 exit 1
576                 ;;
577         esac
578         Licensee="$Edition"
579         EditionString="$Edition"
580         QT_EDITION="QT_EDITION_DESKTOP"
581     fi
582
583     case "$LicenseFeatureCode" in
584     B|G|L|Y)
585         # US
586         case "$LicenseType" in
587         Commercial)
588             cp -f "$relpath/.LICENSE${LICENSE_EXTENSION}-US" "$outpath/LICENSE"
589             ;;
590         Evaluation)
591             cp -f "$relpath/.LICENSE-EVALUATION-US" "$outpath/LICENSE"
592             ;;
593         esac
594         ;;
595     2|4|5|F)
596         # non-US
597         case "$LicenseType" in
598         Commercial)
599             cp -f "$relpath/.LICENSE${LICENSE_EXTENSION}" "$outpath/LICENSE"
600             ;;
601         Evaluation)
602             cp -f "$relpath/.LICENSE-EVALUATION" "$outpath/LICENSE"
603             ;;
604         esac
605         ;;
606     *)
607         echo
608         echo "Invalid license key. Please check the license key."
609         exit 1
610         ;;
611     esac
612     case "$LicenseFeatureCode" in
613         4|B|F|Y)
614             CFG_RTOS_ENABLED=yes
615             ;;
616         2|5|G|L)
617             CFG_RTOS_ENABLED=no
618             ;;
619     esac
620     if [ '!' -f "$outpath/LICENSE" ]; then
621         echo "The LICENSE, LICENSE.GPL3 LICENSE.LGPL file shipped with"
622         echo "this software has disappeared."
623         echo
624         echo "Sorry, you are not licensed to use this software."
625         echo "Try re-installing."
626         echo
627         exit 1
628     fi
629 elif [ $COMMERCIAL_USER = "no" ]; then
630     # Open Source edition - may only be used under the terms of the GPL or LGPL.
631     [ "$PLATFORM_MAC" = "maybe" ] && PLATFORM_MAC=yes
632     Licensee="Open Source"
633     Edition="OpenSource"
634     EditionString="Open Source"
635     QT_EDITION="QT_EDITION_OPENSOURCE"
636 fi
637
638 #-------------------------------------------------------------------------------
639 # initalize variables
640 #-------------------------------------------------------------------------------
641
642 SYSTEM_VARIABLES="RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS"
643 for varname in $SYSTEM_VARIABLES; do
644     qmakevarname="${varname}"
645     # use LDFLAGS for autoconf compat, but qmake uses QMAKE_LFLAGS
646     if [ "${varname}" = "LDFLAGS" ]; then
647         qmakevarname="LFLAGS"
648     elif [ "${varname}" = "LD" ]; then
649         qmakevarname="LINK"
650     fi
651     cmd=`echo \
652 'if [ -n "\$'${varname}'" ]; then
653     QMakeVar set QMAKE_'${qmakevarname}' "\$'${varname}'"
654 fi'`
655     eval "$cmd"
656 done
657 # Use CC/CXX to run config.tests
658 mkdir -p "$outpath/config.tests"
659 rm -f "$outpath/config.tests/.qmake.cache"
660 cp "$QMAKE_VARS_FILE" "$outpath/config.tests/.qmake.cache"
661
662 QMakeVar add styles "cde mac motif plastique cleanlooks windows"
663
664 # QTDIR may be set and point to an old or system-wide Qt installation
665 unset QTDIR
666
667 # the minimum version of libdbus-1 that we require:
668 MIN_DBUS_1_VERSION=0.93
669
670 # initalize internal variables
671 CFG_CONFIGURE_EXIT_ON_ERROR=yes
672 CFG_PROFILE=no
673 CFG_GUI=auto # (yes|no|auto)
674 CFG_WIDGETS=yes
675 CFG_QCONFIG=full
676 CFG_DEBUG=auto
677 CFG_MYSQL_CONFIG=
678 CFG_DEBUG_RELEASE=no
679 CFG_SHARED=yes
680 CFG_SM=auto
681 CFG_XSHAPE=auto
682 CFG_XSYNC=auto
683 CFG_XVIDEO=auto
684 CFG_XINERAMA=runtime
685 CFG_XFIXES=runtime
686 CFG_ZLIB=auto
687 CFG_SQLITE=qt
688 CFG_GIF=auto
689 CFG_PNG=yes
690 CFG_LIBPNG=auto
691 CFG_JPEG=auto
692 CFG_LIBJPEG=auto
693 CFG_XCURSOR=runtime
694 CFG_XRANDR=runtime
695 CFG_XRENDER=auto
696 CFG_MITSHM=auto
697 CFG_OPENGL=auto
698 CFG_OPENVG=auto
699 CFG_OPENVG_LC_INCLUDES=no
700 CFG_OPENVG_SHIVA=auto
701 CFG_OPENVG_ON_OPENGL=auto
702 CFG_EGL=auto
703 CFG_SSE=auto
704 CFG_FONTCONFIG=auto
705 CFG_LIBFREETYPE=auto
706 CFG_SQL_AVAILABLE=
707 QT_DEFAULT_BUILD_PARTS="libs examples"
708 CFG_BUILD_PARTS=""
709 CFG_NOBUILD_PARTS=""
710 CFG_RELEASE_QMAKE=no
711 CFG_AUDIO_BACKEND=auto
712 CFG_V8SNAPSHOT=auto
713 CFG_QML_DEBUG=yes
714 CFG_JAVASCRIPTCORE_JIT=auto
715 CFG_PKGCONFIG=auto
716
717 # Target architecture
718 CFG_ARCH=
719 CFG_CPUFEATURES=
720 # Host architecture, same as CFG_ARCH when not cross-compiling
721 CFG_HOST_ARCH=
722 CFG_HOST_CPUFEATURES=
723 # Set when the -arch or -host-arch arguments are used
724 OPT_OBSOLETE_HOST_ARG=no
725
726 CFG_USE_GNUMAKE=no
727 CFG_IM=yes
728 CFG_XINPUT2=auto
729 CFG_XINPUT=runtime
730 CFG_XKB=auto
731 CFG_XCB=auto
732 CFG_XCB_LIMITED=yes
733 CFG_EGLFS=auto
734 CFG_DIRECTFB=auto
735 CFG_LIBUDEV=auto
736 CFG_OBSOLETE_WAYLAND=no
737 CFG_EVDEV=auto
738 CFG_NIS=auto
739 CFG_CUPS=auto
740 CFG_ICONV=auto
741 CFG_DBUS=auto
742 CFG_GLIB=auto
743 CFG_GSTREAMER=auto
744 CFG_QGTKSTYLE=auto
745 CFG_LARGEFILE=auto
746 CFG_OPENSSL=auto
747 CFG_PRECOMPILE=auto
748 CFG_SEPARATE_DEBUG_INFO=no
749 CFG_SEPARATE_DEBUG_INFO_NOCOPY=no
750 CFG_REDUCE_EXPORTS=auto
751 CFG_SSE2=auto
752 CFG_SSE3=auto
753 CFG_SSSE3=auto
754 CFG_SSE4_1=auto
755 CFG_SSE4_2=auto
756 CFG_AVX=auto
757 CFG_AVX2=auto
758 CFG_REDUCE_RELOCATIONS=auto
759 CFG_ACCESSIBILITY=auto
760 CFG_IWMMXT=no
761 CFG_NEON=auto
762 CFG_MIPS_DSP=yes
763 CFG_MIPS_DSPR2=yes
764 CFG_CLOCK_GETTIME=auto
765 CFG_CLOCK_MONOTONIC=auto
766 CFG_MREMAP=auto
767 CFG_GETADDRINFO=auto
768 CFG_IPV6IFNAME=auto
769 CFG_GETIFADDRS=auto
770 CFG_INOTIFY=auto
771 CFG_RPATH=yes
772 CFG_FRAMEWORK=auto
773 MAC_CONFIG_TEST_COMMANDLINE=  # used to make the configure tests run with the correct arch's and SDK settings
774 CFG_MAC_HARFBUZZ=no
775 CFG_SXE=no
776 CFG_PREFIX_INSTALL=yes
777 CFG_SDK=
778 DEFINES=
779 D_FLAGS=
780 I_FLAGS=
781 L_FLAGS=
782 RPATH_FLAGS=
783 l_FLAGS=
784 W_FLAGS=
785 QCONFIG_FLAGS=
786 XPLATFORM=              # This seems to be the QMAKESPEC, like "linux-g++"
787 XPLATFORM_MINGW=no      # Whether target platform is MinGW (win32-g++*)
788 XPLATFORM_MAEMO=no
789 PLATFORM=$QMAKESPEC
790 QT_CROSS_COMPILE=no
791 OPT_CONFIRM_LICENSE=no
792 OPT_SHADOW=maybe
793 OPT_FAST=auto
794 OPT_VERBOSE=no
795 OPT_HELP=
796 CFG_SILENT=no
797 CFG_ALSA=auto
798 CFG_PULSEAUDIO=auto
799 CFG_COREWLAN=auto
800 CFG_NOPROCESS=no
801 CFG_ICU=auto
802 CFG_FORCE_ASSERTS=no
803 CFG_PCRE=auto
804 QPA_PLATFORM_GUARD=yes
805 CFG_CXX11=auto
806
807 # initalize variables used for installation
808 QT_INSTALL_PREFIX=
809 QT_INSTALL_DOCS=
810 QT_INSTALL_HEADERS=
811 QT_INSTALL_LIBS=
812 QT_INSTALL_BINS=
813 QT_INSTALL_PLUGINS=
814 QT_INSTALL_IMPORTS=
815 QT_INSTALL_DATA=
816 QT_INSTALL_TRANSLATIONS=
817 QT_INSTALL_SETTINGS=
818 QT_INSTALL_EXAMPLES=
819 QT_INSTALL_TESTS=
820 CFG_SYSROOT=
821 QT_HOST_PREFIX=
822 QT_HOST_BINS=
823 QT_HOST_DATA=
824
825 #flags for SQL drivers
826 QT_CFLAGS_PSQL=
827 QT_LFLAGS_PSQL=
828 QT_CFLAGS_MYSQL=
829 QT_LFLAGS_MYSQL=
830 QT_LFLAGS_MYSQL_R=
831 QT_CFLAGS_SQLITE=
832 QT_LFLAGS_SQLITE=
833 QT_LFLAGS_ODBC="-lodbc"
834 QT_LFLAGS_TDS=
835
836 # flags for libdbus-1
837 QT_CFLAGS_DBUS=
838 QT_LIBS_DBUS=
839
840 # flags for Glib (X11 only)
841 QT_CFLAGS_GLIB=
842 QT_LIBS_GLIB=
843
844 # flags for GStreamer (X11 only)
845 QT_CFLAGS_GSTREAMER=
846 QT_LIBS_GSTREAMER=
847
848 # default qpa platform
849 QT_QPA_DEFAULT_PLATFORM=
850
851 #-------------------------------------------------------------------------------
852 # check SQL drivers available in this package
853 #-------------------------------------------------------------------------------
854
855 # opensource version removes some drivers, so force them to be off
856 CFG_SQL_tds=no
857 CFG_SQL_oci=no
858 CFG_SQL_db2=no
859
860 CFG_SQL_AVAILABLE=
861 if [ -d "$relpath/src/plugins/sqldrivers" ]; then
862   for a in "$relpath/src/plugins/sqldrivers/"*; do
863      if [ -d "$a" ]; then
864          base_a=`basename "$a"`
865          CFG_SQL_AVAILABLE="${CFG_SQL_AVAILABLE} ${base_a}"
866          eval "CFG_SQL_${base_a}=auto"
867      fi
868   done
869 fi
870
871 CFG_IMAGEFORMAT_PLUGIN_AVAILABLE=
872 if [ -d "$relpath/src/plugins/imageformats" ]; then
873     for a in "$relpath/src/plugins/imageformats/"*; do
874         if [ -d "$a" ]; then
875             base_a=`basename "$a"`
876             CFG_IMAGEFORMAT_PLUGIN_AVAILABLE="${CFG_IMAGEFORMAT_PLUGIN_AVAILABLE} ${base_a}"
877         fi
878     done
879 fi
880
881 #-------------------------------------------------------------------------------
882 # parse command line arguments
883 #-------------------------------------------------------------------------------
884
885 # parse the arguments, setting things to "yes" or "no"
886 while [ "$#" -gt 0 ]; do
887     CURRENT_OPT="$1"
888     UNKNOWN_ARG=no
889     case "$1" in
890     #Autoconf style options
891     --enable-*)
892         VAR=`echo $1 | sed "s,^--enable-\(.*\),\1,"`
893         VAL=yes
894         ;;
895     --disable-*)
896         VAR=`echo $1 | sed "s,^--disable-\(.*\),\1,"`
897         VAL=no
898         ;;
899     --*=*)
900         VAR=`echo $1 | sed "s,^--\(.*\)=.*,\1,"`
901         VAL=`echo $1 | sed "s,^--.*=\(.*\),\1,"`
902         ;;
903     --no-*)
904         VAR=`echo $1 | sed "s,^--no-\(.*\),\1,"`
905         VAL=no
906         ;;
907     --*)
908         VAR=`echo $1 | sed "s,^--\(.*\),\1,"`
909         VAL=yes
910         ;;
911     #Qt plugin options
912     -no-*-*|-plugin-*-*|-qt-*-*)
913         VAR=`echo $1 | sed "s,^-[^-]*-\(.*\),\1,"`
914         VAL=`echo $1 | sed "s,^-\([^-]*\).*,\1,"`
915         ;;
916     #Qt style no options
917     -no-*)
918         VAR=`echo $1 | sed "s,^-no-\(.*\),\1,"`
919         VAL=no
920         ;;
921     #Qt style yes options
922     -profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-xinput2|-egl|-reduce-exports|-pch|-separate-debug-info|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-xcb|-eglfs|-directfb|-nis|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-debug-and-release|-harfbuzz|-prefix-install|-silent|-optimized-qmake|-reduce-relocations|-sse|-openssl|-openssl-linked|-phonon-backend|-audio-backend|-qml-debug|-javascript-jit|-rpath|-pkg-config|-force-pkg-config|-icu|-force-asserts|-testcocoon|-c++11)
923         VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
924         VAL=yes
925         ;;
926     #Qt style options that pass an argument
927     -qconfig)
928         CFG_QCONFIG="$VAL"
929         VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
930         shift
931         VAL=$1
932         ;;
933     -prefix|-docdir|-headerdir|-plugindir|-importdir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-testsdir|-depths|-make|-nomake|-platform|-xplatform|-device|-device-option|-sdk|-arch|-host-arch|-mysql_config|-sysroot|-hostdatadir|-hostbindir|-qpa)
934         VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
935         shift
936         VAL="$1"
937         ;;
938     #Qt style complex options in one command
939     -enable-*|-disable-*)
940         VAR=`echo $1 | sed "s,^-\([^-]*\)-.*,\1,"`
941         VAL=`echo $1 | sed "s,^-[^-]*-\(.*\),\1,"`
942         ;;
943     #Qt Builtin/System style options
944     -no-*|-system-*|-qt-*)
945         VAR=`echo $1 | sed "s,^-[^-]*-\(.*\),\1,"`
946         VAL=`echo $1 | sed "s,^-\([^-]*\)-.*,\1,"`
947         ;;
948     #Options that cannot be generalized
949     -k|-continue)
950         VAR=fatal_error
951         VAL=no
952         ;;
953     -opengl)
954         VAR=opengl
955         # this option may or may not be followed by an argument
956         if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
957             VAL=yes
958         else
959             shift;
960             VAL=$1
961         fi
962         ;;
963     -openvg)
964         VAR=openvg
965         # this option may or may not be followed by an argument
966         if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
967             VAL=yes
968         else
969             shift;
970             VAL=$1
971         fi
972         ;;
973     -hostprefix)
974         VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
975         # this option may or may not be followed by an argument
976         if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
977             VAL=$outpath
978         else
979             shift;
980             VAL=$1
981         fi
982         ;;
983     -qtnamespace)
984         VAR="qtnamespace"
985         shift
986         VAL="$1"
987         ;;
988     -qtlibinfix)
989         VAR="qtlibinfix"
990         shift
991         VAL="$1"
992         ;;
993     -D?*|-D)
994         VAR="add_define"
995         if [ "$1" = "-D" ]; then
996             shift
997             VAL="$1"
998         else
999             VAL=`echo $1 | sed 's,-D,,'`
1000         fi
1001         ;;
1002     -fpu)
1003         VAR="fpu"
1004         # this option may or may not be followed by an argument
1005         if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
1006             VAL=no
1007         else
1008             shift
1009             VAL=$1
1010         fi
1011         ;;
1012     -I?*|-I)
1013         VAR="add_ipath"
1014         if [ "$1" = "-I" ]; then
1015             shift
1016             VAL="$1"
1017         else
1018             VAL=`echo $1 | sed 's,-I,,'`
1019         fi
1020         ;;
1021     -L?*|-L)
1022         VAR="add_lpath"
1023         if [ "$1" = "-L" ]; then
1024             shift
1025             VAL="$1"
1026         else
1027             VAL=`echo $1 | sed 's,-L,,'`
1028         fi
1029         ;;
1030     -R?*|-R)
1031         VAR="add_rpath"
1032         if [ "$1" = "-R" ]; then
1033             shift
1034             VAL="$1"
1035         else
1036             VAL=`echo $1 | sed 's,-R,,'`
1037         fi
1038         ;;
1039     -l?*|-l)
1040         VAR="add_link"
1041         if [ "$1" = "-l" ]; then
1042             shift
1043             VAL="$1"
1044         else
1045             VAL=`echo $1 | sed 's,-l,,'`
1046         fi
1047         ;;
1048     -F?*|-F)
1049         VAR="add_fpath"
1050         if [ "$1" = "-F" ]; then
1051             shift
1052             VAL="$1"
1053         else
1054             VAL=`echo $1 | sed 's,-F,,'`
1055         fi
1056         ;;
1057     -fw?*|-fw)
1058         VAR="add_framework"
1059         if [ "$1" = "-fw" ]; then
1060             shift
1061             VAL="$1"
1062         else
1063             VAL=`echo $1 | sed 's,-fw,,'`
1064         fi
1065         ;;
1066     -W*)
1067         VAR="add_warn"
1068         VAL="$1"
1069         ;;
1070     -*)
1071         VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
1072         VAL="unknown"
1073         ;;
1074     *)
1075         UNKNOWN_ARG=yes
1076         ;;
1077     esac
1078     if [ "$UNKNOWN_ARG" = "yes" ]; then
1079         echo "$1: unknown argument"
1080         OPT_HELP=yes
1081         ERROR=yes
1082         shift
1083         continue
1084      fi
1085     shift
1086
1087     UNKNOWN_OPT=no
1088     case "$VAR" in
1089     accessibility)
1090         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1091             CFG_ACCESSIBILITY="$VAL"
1092         else
1093             UNKNOWN_OPT=yes
1094         fi
1095         ;;
1096     license)
1097         LICENSE_FILE="$VAL"
1098         ;;
1099     gnumake)
1100         CFG_USE_GNUMAKE="$VAL"
1101         ;;
1102     mysql_config)
1103         CFG_MYSQL_CONFIG="$VAL"
1104         ;;
1105     prefix)
1106         QT_INSTALL_PREFIX="$VAL"
1107         ;;
1108     hostprefix)
1109         QT_HOST_PREFIX="$VAL"
1110         ;;
1111     hostdatadir)
1112         QT_HOST_DATA="$VAL"
1113         ;;
1114     hostbindir)
1115         QT_HOST_BINS="$VAL"
1116         ;;
1117     pkg-config)
1118         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1119             CFG_PKGCONFIG="$VAL"
1120         else
1121             UNKNOWN_OPT=yes
1122         fi
1123         ;;
1124     force-pkg-config)
1125         CFG_PKGCONFIG="force"
1126         ;;
1127     docdir)
1128         QT_INSTALL_DOCS="$VAL"
1129         ;;
1130     headerdir)
1131         QT_INSTALL_HEADERS="$VAL"
1132         ;;
1133     plugindir)
1134         QT_INSTALL_PLUGINS="$VAL"
1135         ;;
1136     importdir)
1137         QT_INSTALL_IMPORTS="$VAL"
1138         ;;
1139     datadir)
1140         QT_INSTALL_DATA="$VAL"
1141         ;;
1142     libdir)
1143         QT_INSTALL_LIBS="$VAL"
1144         ;;
1145     qtnamespace)
1146         QT_NAMESPACE="$VAL"
1147         ;;
1148     qtlibinfix)
1149         QT_LIBINFIX="$VAL"
1150         ;;
1151     translationdir)
1152         QT_INSTALL_TRANSLATIONS="$VAL"
1153         ;;
1154     sysconfdir|settingsdir)
1155         QT_INSTALL_SETTINGS="$VAL"
1156         ;;
1157     examplesdir)
1158         QT_INSTALL_EXAMPLES="$VAL"
1159         ;;
1160     testsdir)
1161         QT_INSTALL_TESTS="$VAL"
1162         ;;
1163     qconfig)
1164         CFG_QCONFIG="$VAL"
1165         ;;
1166     sysroot)
1167         CFG_SYSROOT="$VAL"
1168         ;;
1169     bindir)
1170         QT_INSTALL_BINS="$VAL"
1171         ;;
1172     sxe)
1173         CFG_SXE="$VAL"
1174         ;;
1175     sse)
1176         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1177             CFG_SSE="$VAL"
1178         else
1179             UNKNOWN_OPT=yes
1180         fi
1181         ;;
1182     opengl)
1183         if  [ "$VAL" = "auto" ] || [ "$VAL" = "desktop" ] ||
1184             [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] ||
1185             [ "$VAL" = "es2" ]; then
1186             CFG_OPENGL="$VAL"
1187         else
1188             UNKNOWN_OPT=yes
1189         fi
1190         ;;
1191     openvg)
1192         if [ "$VAL" = "auto" ] || [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1193             CFG_OPENVG="$VAL"
1194         else
1195             UNKNOWN_OPT=yes
1196         fi
1197         ;;
1198     nomake)
1199         CFG_NOBUILD_PARTS="$CFG_NOBUILD_PARTS $VAL"
1200         ;;
1201     make)
1202         CFG_BUILD_PARTS="$CFG_BUILD_PARTS $VAL"
1203         ;;
1204     sdk)
1205         if [ "$BUILD_ON_MAC" = "yes" ]; then
1206             CFG_SDK="$VAL"
1207         else
1208             UNKNOWN_OPT=yes
1209         fi
1210         ;;
1211     arch|host-arch)
1212         OPT_OBSOLETE_HOST_ARG=yes
1213         ;;
1214     harfbuzz)
1215         if [ "$BUILD_ON_MAC" = "yes" ] && [ "$VAL" = "yes" ]; then
1216             CFG_MAC_HARFBUZZ="$VAL"
1217         else
1218             UNKNOWN_OPT=yes
1219         fi
1220         ;;
1221
1222     framework)
1223         if [ "$BUILD_ON_MAC" = "yes" ]; then
1224             CFG_FRAMEWORK="$VAL"
1225         else
1226             UNKNOWN_OPT=yes
1227         fi
1228         ;;
1229     profile)
1230         if [ "$VAL" = "yes" ]; then
1231             CFG_PROFILE=yes
1232             QMakeVar add QMAKE_CFLAGS -pg
1233             QMakeVar add QMAKE_CXXFLAGS -pg
1234             QMakeVar add QMAKE_LFLAGS -pg
1235             QMAKE_VARS="$QMAKE_VARS CONFIG+=nostrip"
1236         else
1237             UNKNOWN_OPT=yes
1238         fi
1239         ;;
1240     testcocoon)
1241         if [ "$VAL" = "yes" ]; then
1242             QTCONFIG_CONFIG="$QTCONFIG_CONFIG testcocoon"
1243         fi
1244         ;;
1245     platform)
1246         PLATFORM="$VAL"
1247         # keep compatibility with old platform names
1248         case $PLATFORM in
1249         aix-64)
1250             PLATFORM=aix-xlc-64
1251             ;;
1252         hpux-o64)
1253             PLATFORM=hpux-acc-o64
1254             ;;
1255         hpux-n64)
1256             PLATFORM=hpux-acc-64
1257             ;;
1258         hpux-acc-n64)
1259             PLATFORM=hpux-acc-64
1260             ;;
1261         irix-n32)
1262             PLATFORM=irix-cc
1263             ;;
1264         irix-64)
1265             PLATFORM=irix-cc-64
1266             ;;
1267         irix-cc-n64)
1268             PLATFORM=irix-cc-64
1269             ;;
1270         reliant-64)
1271             PLATFORM=reliant-cds-64
1272             ;;
1273         solaris-64)
1274             PLATFORM=solaris-cc-64
1275             ;;
1276         openunix-cc)
1277             PLATFORM=unixware-cc
1278             ;;
1279         openunix-g++)
1280             PLATFORM=unixware-g++
1281             ;;
1282         unixware7-cc)
1283             PLATFORM=unixware-cc
1284             ;;
1285         unixware7-g++)
1286             PLATFORM=unixware-g++
1287             ;;
1288         macx-g++-64)
1289             PLATFORM=macx-g++
1290             NATIVE_64_ARCH=
1291             case `uname -p` in
1292             i386) NATIVE_64_ARCH="x86_64" ;;
1293             powerpc) NATIVE_64_ARCH="ppc64" ;;
1294             *)   echo "WARNING: Can't detect CPU architecture for macx-g++-64" ;;
1295             esac
1296             if [ ! -z "$NATIVE_64_ARCH" ]; then
1297                 QTCONFIG_CONFIG="$QTCONFIG_CONFIG $NATIVE_64_ARCH"
1298             fi
1299             ;;
1300         esac
1301         ;;
1302     xplatform)
1303         XPLATFORM="$VAL"
1304         case `basename "$XPLATFORM"` in win32-g++*) XPLATFORM_MINGW=yes;; esac
1305         ;;
1306     device)
1307         XPLATFORM=`resolveDeviceMkspec $VAL`
1308         [ "$XPLATFORM" = "undefined" ] && exit 101
1309         ;;
1310     device-option)
1311         DEV_VAR=`echo $VAL | sed "s,^\(.*\)=.*,\1,"`
1312         DEV_VAL=`echo $VAL | sed "s,^.*=\(.*\),\1,"`
1313         DeviceVar set $DEV_VAR $DEV_VAL
1314         ;;
1315     qpa)
1316         QT_QPA_DEFAULT_PLATFORM="$VAL"
1317         ;;
1318     debug-and-release)
1319         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1320             CFG_DEBUG_RELEASE="$VAL"
1321         else
1322             UNKNOWN_OPT=yes
1323         fi
1324         ;;
1325     optimized-qmake)
1326         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1327             CFG_RELEASE_QMAKE="$VAL"
1328         else
1329             UNKNOWN_OPT=yes
1330         fi
1331         ;;
1332     release)
1333         if [ "$VAL" = "yes" ]; then
1334             CFG_DEBUG=no
1335         elif [ "$VAL" = "no" ]; then
1336             CFG_DEBUG=yes
1337         else
1338             UNKNOWN_OPT=yes
1339         fi
1340         ;;
1341     prefix-install)
1342         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1343             CFG_PREFIX_INSTALL="$VAL"
1344         else
1345             UNKNOWN_OPT=yes
1346         fi
1347         ;;
1348     debug)
1349         CFG_DEBUG="$VAL"
1350         ;;
1351     developer-build|commercial|opensource)
1352         # These switches have been dealt with already
1353         ;;
1354     static)
1355         if [ "$VAL" = "yes" ]; then
1356             CFG_SHARED=no
1357         elif [ "$VAL" = "no" ]; then
1358             CFG_SHARED=yes
1359         else
1360             UNKNOWN_OPT=yes
1361         fi
1362         ;;
1363     fatal_error)
1364         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1365             CFG_CONFIGURE_EXIT_ON_ERROR="$VAL"
1366         else
1367             UNKNOWN_OPT=yes
1368         fi
1369         ;;
1370     feature-*)
1371             FEATURE=`echo $VAR | sed "s,^[^-]*-\([^-]*\),\1," | tr 'abcdefghijklmnopqrstuvwxyz-' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
1372             if [ "$VAL" = "no" ]; then
1373                 QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_$FEATURE"
1374             elif [ "$VAL" = "yes" ] || [ "$VAL" = "unknown" ]; then
1375                 QCONFIG_FLAGS="$QCONFIG_FLAGS QT_$FEATURE"
1376             else
1377                 UNKNOWN_OPT=yes
1378             fi
1379         ;;
1380     shared)
1381         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1382             CFG_SHARED="$VAL"
1383         else
1384             UNKNOWN_OPT=yes
1385         fi
1386         ;;
1387     gif)
1388         if [ "$VAL" = "no" ]; then
1389             CFG_GIF="$VAL"
1390         else
1391             UNKNOWN_OPT=yes
1392         fi
1393         ;;
1394     sm)
1395         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1396             CFG_SM="$VAL"
1397         else
1398             UNKNOWN_OPT=yes
1399         fi
1400
1401         ;;
1402     xinerama)
1403         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] || [ "$VAL" = "runtime" ]; then
1404             CFG_XINERAMA="$VAL"
1405         else
1406             UNKNOWN_OPT=yes
1407         fi
1408         ;;
1409     xshape)
1410         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1411             CFG_XSHAPE="$VAL"
1412         else
1413             UNKNOWN_OPT=yes
1414         fi
1415         ;;
1416     xvideo)
1417         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1418             CFG_XVIDEO="$VAL"
1419         else
1420             UNKNOWN_OPT=yes
1421         fi
1422         ;;
1423     xsync)
1424         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1425             CFG_XSYNC="$VAL"
1426         else
1427             UNKNOWN_OPT=yes
1428         fi
1429         ;;
1430      xinput2)
1431         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1432             CFG_XINPUT2="$VAL"
1433         else
1434             UNKNOWN_OPT=yes
1435         fi
1436         ;;
1437     xinput)
1438         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] || [ "$VAL" = "runtime" ]; then
1439             CFG_XINPUT="$VAL"
1440         else
1441             UNKNOWN_OPT=yes
1442         fi
1443         ;;
1444     egl)
1445         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1446             CFG_EGL="$VAL"
1447         else
1448             UNKNOWN_OPT=yes
1449         fi
1450         ;;
1451     pch)
1452         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1453             CFG_PRECOMPILE="$VAL"
1454         else
1455             UNKNOWN_OPT=yes
1456         fi
1457         ;;
1458     separate-debug-info)
1459         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1460             CFG_SEPARATE_DEBUG_INFO="$VAL"
1461         elif [ "$VAL" = "nocopy" ] ; then
1462             CFG_SEPARATE_DEBUG_INFO="yes"
1463             CFG_SEPARATE_DEBUG_INFO_NOCOPY="yes"
1464         else
1465             UNKNOWN_OPT=yes
1466         fi
1467         ;;
1468     reduce-exports)
1469         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1470             CFG_REDUCE_EXPORTS="$VAL"
1471         else
1472             UNKNOWN_OPT=yes
1473         fi
1474         ;;
1475     sse2)
1476         if [ "$VAL" = "no" ]; then
1477             CFG_SSE2="$VAL"
1478         else
1479             UNKNOWN_OPT=yes
1480         fi
1481         ;;
1482     sse3)
1483         if [ "$VAL" = "no" ]; then
1484             CFG_SSE3="$VAL"
1485         else
1486             UNKNOWN_OPT=yes
1487         fi
1488         ;;
1489     ssse3)
1490         if [ "$VAL" = "no" ]; then
1491             CFG_SSSE3="$VAL"
1492         else
1493             UNKNOWN_OPT=yes
1494         fi
1495         ;;
1496     sse4.1)
1497         if [ "$VAL" = "no" ]; then
1498             CFG_SSE4_1="$VAL"
1499         else
1500             UNKNOWN_OPT=yes
1501         fi
1502         ;;
1503     sse4.2)
1504         if [ "$VAL" = "no" ]; then
1505             CFG_SSE4_2="$VAL"
1506         else
1507             UNKNOWN_OPT=yes
1508         fi
1509         ;;
1510     avx)
1511         if [ "$VAL" = "no" ]; then
1512             CFG_AVX="$VAL"
1513         else
1514             UNKNOWN_OPT=yes
1515         fi
1516         ;;
1517     avx2)
1518         if [ "$VAL" = "no" ]; then
1519             CFG_AVX2="$VAL"
1520         else
1521             UNKNOWN_OPT=yes
1522         fi
1523         ;;
1524     iwmmxt)
1525         CFG_IWMMXT="yes"
1526         ;;
1527     neon)
1528         if [ "$VAL" = "no" ]; then
1529             CFG_NEON="$VAL"
1530         else
1531             UNKNOWN_OPT=yes
1532         fi
1533         ;;
1534     mips_dsp)
1535         if [ "$VAL" = "no" ]; then
1536             CFG_MIPS_DSP="$VAL"
1537         else
1538             UNKNOWN_OPT=yes
1539         fi
1540         ;;
1541     mips_dspr2)
1542         if [ "$VAL" = "no" ]; then
1543             CFG_MIPS_DSPR2="$VAL"
1544         else
1545             UNKNOWN_OPT=yes
1546         fi
1547         ;;
1548     reduce-relocations)
1549         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1550             CFG_REDUCE_RELOCATIONS="$VAL"
1551         else
1552             UNKNOWN_OPT=yes
1553         fi
1554         ;;
1555     zlib)
1556         [ "$VAL" = "qt" ] && VAL=yes
1557         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] || [ "$VAL" = "system" ]; then
1558             CFG_ZLIB="$VAL"
1559         else
1560             UNKNOWN_OPT=yes
1561         fi
1562         # No longer supported:
1563         #[ "$VAL" = "no" ] && CFG_LIBPNG=no
1564         ;;
1565     sqlite)
1566         if [ "$VAL" = "system" ]; then
1567             CFG_SQLITE=system
1568         else
1569             UNKNOWN_OPT=yes
1570         fi
1571         ;;
1572     libpng)
1573         [ "$VAL" = "yes" ] && VAL=qt
1574         if [ "$VAL" = "qt" ] || [ "$VAL" = "no" ] || [ "$VAL" = "system" ]; then
1575             CFG_LIBPNG="$VAL"
1576         else
1577             UNKNOWN_OPT=yes
1578         fi
1579         ;;
1580     libjpeg)
1581         [ "$VAL" = "yes" ] && VAL=qt
1582         if [ "$VAL" = "qt" ] || [ "$VAL" = "no" ] || [ "$VAL" = "system" ]; then
1583             CFG_LIBJPEG="$VAL"
1584         else
1585             UNKNOWN_OPT=yes
1586         fi
1587         ;;
1588     xcursor)
1589         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] || [ "$VAL" = "runtime" ]; then
1590             CFG_XCURSOR="$VAL"
1591         else
1592             UNKNOWN_OPT=yes
1593         fi
1594         ;;
1595     xfixes)
1596         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] || [ "$VAL" = "runtime" ]; then
1597             CFG_XFIXES="$VAL"
1598         else
1599             UNKNOWN_OPT=yes
1600         fi
1601         ;;
1602     xrandr)
1603         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] || [ "$VAL" = "runtime" ]; then
1604             CFG_XRANDR="$VAL"
1605         else
1606             UNKNOWN_OPT=yes
1607         fi
1608         ;;
1609     xrender)
1610         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1611             CFG_XRENDER="$VAL"
1612         else
1613             UNKNOWN_OPT=yes
1614         fi
1615         ;;
1616     mitshm)
1617         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1618             CFG_MITSHM="$VAL"
1619         else
1620             UNKNOWN_OPT=yes
1621         fi
1622         ;;
1623     fontconfig)
1624         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1625             CFG_FONTCONFIG="$VAL"
1626         else
1627             UNKNOWN_OPT=yes
1628         fi
1629         ;;
1630     xkb)
1631         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1632             CFG_XKB="$VAL"
1633         else
1634             UNKNOWN_OPT=yes
1635         fi
1636         ;;
1637     xcb)
1638         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1639             CFG_XCB="$VAL"
1640         else
1641             UNKNOWN_OPT=yes
1642         fi
1643         ;;
1644     wayland)
1645         CFG_OBSOLETE_WAYLAND=yes
1646         ;;
1647     eglfs)
1648         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1649             CFG_EGLFS="$VAL"
1650         else
1651             UNKNOWN_OPT=yes
1652         fi
1653         ;;
1654     directfb)
1655         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1656             CFG_DIRECTFB="$VAL"
1657         else
1658             UNKNOWN_OPT=yes
1659         fi
1660         ;;
1661     libudev)
1662         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1663             CFG_LIBUDEV="$VAL"
1664         else
1665             UNKNOWN_OPT=yes
1666         fi
1667         ;;
1668     evdev)
1669         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1670             CFG_EVDEV="$VAL"
1671         else
1672             UNKNOWN_OPT=yes
1673         fi
1674         ;;
1675     cups)
1676         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1677             CFG_CUPS="$VAL"
1678         else
1679             UNKNOWN_OPT=yes
1680         fi
1681         ;;
1682     iconv)
1683         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1684             CFG_ICONV="$VAL"
1685         else
1686             UNKNOWN_OPT=yes
1687         fi
1688         ;;
1689     glib)
1690         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1691             CFG_GLIB="$VAL"
1692         else
1693             UNKNOWN_OPT=yes
1694         fi
1695         ;;
1696     gstreamer)
1697         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1698             CFG_GSTREAMER="$VAL"
1699         else
1700             UNKNOWN_OPT=yes
1701         fi
1702         ;;
1703     gtkstyle)
1704         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1705             CFG_QGTKSTYLE="$VAL"
1706         else
1707             UNKNOWN_OPT=yes
1708         fi
1709         ;;
1710     gui)
1711         if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ]; then
1712             CFG_GUI="yes"
1713         else
1714             if [ "$VAL" = "no" ]; then
1715                 CFG_GUI="no"
1716             else
1717                 UNKNOWN_OPT=yes
1718             fi
1719         fi
1720         ;;
1721     widgets)
1722         if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ]; then
1723             CFG_WIDGETS="yes"
1724         elif [ "$VAL" = "no" ]; then
1725             CFG_WIDGETS="no"
1726         else
1727             UNKNOWN_OPT=yes
1728         fi
1729         ;;
1730     qpa-platform-guard)
1731         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1732             QPA_PLATFORM_GUARD="$VAL"
1733         else
1734             UNKNOWN_OPT=yes
1735         fi
1736         ;;
1737     dbus)
1738         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] || [ "$VAL" = "linked" ]; then
1739             CFG_DBUS="$VAL"
1740         elif [ "$VAL" = "runtime" ]; then
1741             CFG_DBUS="yes"
1742         else
1743             UNKNOWN_OPT=yes
1744         fi
1745         ;;
1746     dbus-linked)
1747         if [ "$VAL" = "yes" ]; then
1748             CFG_DBUS="linked"
1749         else
1750             UNKNOWN_OPT=yes
1751         fi
1752         ;;
1753     nis)
1754         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1755             CFG_NIS="$VAL"
1756         else
1757             UNKNOWN_OPT=yes
1758         fi
1759         ;;
1760     largefile)
1761         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1762             CFG_LARGEFILE="$VAL"
1763         else
1764             UNKNOWN_OPT=yes
1765         fi
1766         ;;
1767     openssl)
1768         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1769             CFG_OPENSSL="$VAL"
1770         else
1771             UNKNOWN_OPT=yes
1772         fi
1773         ;;
1774     openssl-linked)
1775         if [ "$VAL" = "yes" ]; then
1776             CFG_OPENSSL="linked"
1777         else
1778             UNKNOWN_OPT=yes
1779         fi
1780         ;;
1781     qml-debug)
1782         if [ "$VAL" = "yes" ]; then
1783             CFG_QML_DEBUG="yes"
1784         else
1785             if [ "$VAL" = "no" ]; then
1786                 CFG_QML_DEBUG="no"
1787             else
1788                 UNKNOWN_OPT=yes
1789             fi
1790         fi
1791         ;;
1792     javascript-jit)
1793         if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ] || [ "$VAL" = "no" ]; then 
1794             CFG_JAVASCRIPTCORE_JIT="$VAL"
1795         else
1796             UNKNOWN_OPT=yes
1797         fi
1798         ;;
1799     confirm-license)
1800         if [ "$VAL" = "yes" ]; then
1801             OPT_CONFIRM_LICENSE="$VAL"
1802         else
1803             UNKNOWN_OPT=yes
1804         fi
1805         ;;
1806     h|help)
1807         if [ "$VAL" = "yes" ]; then
1808             OPT_HELP="$VAL"
1809         else
1810             UNKNOWN_OPT=yes
1811         fi
1812         ;;
1813     sql-*|imageformat-*)
1814         # if Qt style options were used, $VAL can be "no", "qt", or "plugin"
1815         # if autoconf style options were used, $VAL can be "yes" or "no"
1816         [ "$VAL" = "yes" ] && VAL=qt
1817         # now $VAL should be "no", "qt", or "plugin"... double-check
1818         if [ "$VAL" != "no" ] && [ "$VAL" != "qt" ] && [ "$VAL" != "plugin" ]; then
1819             UNKNOWN_OPT=yes
1820         fi
1821         # now $VAL is "no", "qt", or "plugin"
1822         OPT="$VAL"
1823         VAL=`echo $VAR | sed "s,^[^-]*-\([^-]*\).*,\1,"`
1824         VAR=`echo $VAR | sed "s,^\([^-]*\).*,\1,"`
1825
1826         # Grab the available values
1827         case "$VAR" in
1828         sql)
1829             avail="$CFG_SQL_AVAILABLE"
1830             ;;
1831         imageformat)
1832             avail="$CFG_IMAGEFORMAT_PLUGIN_AVAILABLE"
1833             if [ "$OPT" != "plugin" ]; then
1834                 # png is always built in
1835                 avail="$avail png"
1836             fi
1837             ;;
1838         *)
1839             avail=""
1840             echo "BUG: Unhandled type $VAR used in $CURRENT_OPT"
1841             ;;
1842         esac
1843
1844         # Check that that user's value is available.
1845         found=no
1846         for d in $avail; do
1847             if [ "$VAL" = "$d" ]; then
1848                 found=yes
1849                 break
1850             fi
1851         done
1852         [ "$found" = yes ] || ERROR=yes
1853
1854         if [ "$VAR" = "sql" ]; then
1855             # set the CFG_SQL_driver
1856             eval "CFG_SQL_$VAL=\$OPT"
1857             continue
1858         elif [ "$VAR" = "imageformat" ]; then
1859             [ "$OPT" = "qt" ] && OPT=yes
1860             VAL="`echo $VAL |tr a-z A-Z`"
1861             eval "CFG_$VAL=$OPT"
1862             continue
1863         fi
1864
1865         if [ "$OPT" = "plugin" ] || [ "$OPT" = "qt" ]; then
1866             if [ "$OPT" = "plugin" ]; then
1867                 VAR="${VAR}-${OPT}"
1868             fi
1869             QMakeVar add "${VAR}s" "${VAL}"
1870         elif [ "$OPT" = "no" ]; then
1871             PLUG_VAR="${VAR}-plugin"
1872             IN_VAR="${VAR}"
1873             QMakeVar del "${IN_VAR}s" "$VAL"
1874             QMakeVar del "${PLUG_VAR}s" "$VAL"
1875         fi
1876         if [ "$ERROR" = "yes" ]; then
1877            echo "$CURRENT_OPT: unknown argument"
1878            OPT_HELP=yes
1879         fi
1880         ;;
1881     v|verbose)
1882         if [ "$VAL" = "yes" ]; then
1883             if [ "$OPT_VERBOSE" = "$VAL" ]; then            # takes two verboses to turn on qmake debugs
1884                 QMAKE_SWITCHES="$QMAKE_SWITCHES -d"
1885             else
1886                 OPT_VERBOSE=yes
1887             fi
1888         elif [ "$VAL" = "no" ]; then
1889             if [ "$OPT_VERBOSE" = "$VAL" ] && echo "$QMAKE_SWITCHES" | grep ' -d' >/dev/null 2>&1; then
1890                 QMAKE_SWITCHES=`echo $QMAKE_SWITCHES | sed "s, -d,,"`
1891             else
1892                 OPT_VERBOSE=no
1893             fi
1894         else
1895             UNKNOWN_OPT=yes
1896         fi
1897         ;;
1898     fast)
1899         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1900             OPT_FAST="$VAL"
1901         else
1902             UNKNOWN_OPT=yes
1903         fi
1904         ;;
1905     rpath)
1906         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1907             CFG_RPATH="$VAL"
1908         else
1909             UNKNOWN_OPT=yes
1910         fi
1911         ;;
1912     add_define)
1913         DEFINES="$DEFINES \"$VAL\""
1914         D_FLAGS="$D_FLAGS -D\"$VAL\""
1915         ;;
1916     add_ipath)
1917         I_FLAGS="$I_FLAGS -I\"${VAL}\""
1918         ;;
1919     add_lpath)
1920         L_FLAGS="$L_FLAGS -L\"${VAL}\""
1921         ;;
1922     add_rpath)
1923         RPATH_FLAGS="$RPATH_FLAGS \"${VAL}\""
1924         ;;
1925     add_link)
1926         l_FLAGS="$l_FLAGS -l\"${VAL}\""
1927         ;;
1928     add_fpath)
1929         if [ "$BUILD_ON_MAC" = "yes" ]; then
1930             L_FLAGS="$L_FLAGS -F\"${VAL}\""
1931             I_FLAGS="$I_FLAGS -F\"${VAL}\""
1932         else
1933             UNKNOWN_OPT=yes
1934         fi
1935         ;;
1936     add_framework)
1937         if [ "$BUILD_ON_MAC" = "yes" ]; then
1938             l_FLAGS="$l_FLAGS -framework \"${VAL}\""
1939         else
1940             UNKNOWN_OPT=yes
1941         fi
1942         ;;
1943     add_warn)
1944         W_FLAGS="$W_FLAGS \"${VAL}\""
1945         ;;
1946     silent)
1947         CFG_SILENT="$VAL"
1948         ;;
1949     phonon-backend)
1950         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1951             CFG_PHONON_BACKEND="$VAL"
1952         else
1953             UNKNOWN_OPT=yes
1954         fi
1955         ;;
1956     dont-process)
1957         CFG_NOPROCESS=yes
1958         ;;
1959     process)
1960         CFG_NOPROCESS=no
1961         ;;
1962     audio-backend)
1963         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1964             CFG_AUDIO_BACKEND="$VAL"
1965         else
1966             UNKNOWN_OPT=yes
1967         fi
1968         ;;
1969     icu)
1970         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1971             CFG_ICU="$VAL"
1972         else
1973             UNKNOWN_OPT=yes
1974         fi
1975         ;;
1976     force-asserts)
1977         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1978             CFG_FORCE_ASSERTS="$VAL"
1979         else
1980             UNKNOWN_OPT=yes
1981         fi
1982         ;;
1983     pcre)
1984         if [ "$VAL" = "qt" ] || [ "$VAL" = "system" ]; then
1985             CFG_PCRE="$VAL"
1986         else
1987             UNKNOWN_OPT=yes
1988         fi
1989         ;;
1990     c++11)
1991         if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1992             CFG_CXX11="$VAL"
1993         else
1994             UNKNOWN_OPT=yes
1995         fi
1996         ;;
1997     *)
1998         UNKNOWN_OPT=yes
1999         ;;
2000     esac
2001     if [ "$UNKNOWN_OPT" = "yes" ]; then
2002         echo "${CURRENT_OPT}: invalid command-line switch"
2003         OPT_HELP=yes
2004         ERROR=yes
2005     fi
2006 done
2007
2008 # update QT_CONFIG to show our current predefined configuration
2009 case "$CFG_QCONFIG" in
2010 minimal|small|medium|large|full)
2011     # these are a sequence of increasing functionality
2012     for c in minimal small medium large full; do
2013         QT_CONFIG="$QT_CONFIG $c-config"
2014         [ "$CFG_QCONFIG" = $c ] && break
2015     done
2016     ;;
2017 *)
2018     # not known to be sufficient for anything
2019     if [ '!' -f "$relpath/src/corelib/global/qconfig-${CFG_QCONFIG}.h" ] && [ '!' -f `"$relpath/config.tests/unix/makeabs" "${CFG_QCONFIG}"` ]; then
2020         echo >&2 "Error: configuration file not found:"
2021         echo >&2 "  $relpath/src/corelib/global/qconfig-${CFG_QCONFIG}.h"
2022         echo >&2 "  or"
2023         echo >&2 "  `"$relpath/config.tests/unix/makeabs" "${CFG_QCONFIG}"`"
2024         OPT_HELP=yes
2025     fi
2026 esac
2027
2028 #-------------------------------------------------------------------------------
2029 # build tree initialization
2030 #-------------------------------------------------------------------------------
2031
2032 # where to find which..
2033 unixtests="$relpath/config.tests/unix"
2034 mactests="$relpath/config.tests/mac"
2035 WHICH="$unixtests/which.test"
2036
2037 PERL=`$WHICH perl 2>/dev/null`
2038
2039 # find out which awk we want to use, prefer gawk, then nawk, then regular awk
2040 AWK=
2041 for e in gawk nawk awk; do
2042     if "$WHICH" $e >/dev/null 2>&1 && ( $e -f /dev/null /dev/null ) >/dev/null 2>&1; then
2043         AWK=$e
2044         break
2045     fi
2046 done
2047
2048 # find perl
2049 PERL="/usr/bin/perl"
2050 if "$WHICH" perl >/dev/null 2>&1 && ( perl /dev/null ) >/dev/null 2>&1; then
2051     PERL=`$WHICH perl`
2052 fi
2053
2054 ### skip this if the user just needs help...
2055 if [ "$OPT_HELP" != "yes" ]; then
2056
2057 # is this a shadow build?
2058 if [ "$OPT_SHADOW" = "maybe" ]; then
2059     OPT_SHADOW=no
2060     if [ "$relpath" != "$outpath" ] && [ '!' -f "$outpath/configure" ]; then
2061         if [ -h "$outpath" ]; then
2062             [ "$relpath" -ef "$outpath" ] || OPT_SHADOW=yes
2063         else
2064             OPT_SHADOW=yes
2065         fi
2066     fi
2067 fi
2068 if [ "$OPT_SHADOW" = "yes" ]; then
2069     if [ -f "$relpath/.qmake.cache" -o -f "$relpath/src/corelib/global/qconfig.h" -o -f "$relpath/src/corelib/global/qconfig.cpp" ]; then
2070         echo >&2 "You cannot make a shadow build from a source tree containing a previous build."
2071         echo >&2 "Cannot proceed."
2072         exit 1
2073     fi
2074     [ "$OPT_VERBOSE" = "yes" ] && echo "Performing shadow build..."
2075 fi
2076
2077 if [ "$PLATFORM_MAC" = "no" -a "$CFG_DEBUG_RELEASE" = "yes" ]; then
2078     echo
2079     echo "WARNING: -debug-and-release is not supported outside of Mac OS X."
2080     echo "Qt can be built in release mode with separate debug information, so"
2081     echo "-debug-and-release is not necessary anymore"
2082     echo
2083 fi
2084
2085 if [ "$CFG_SILENT" = "yes" ]; then
2086     QMAKE_CONFIG="$QMAKE_CONFIG silent"
2087 fi
2088
2089 # if the source tree is different from the build tree,
2090 # symlink or copy part of the sources
2091 if [ "$OPT_SHADOW" = "yes" ]; then
2092     echo "Preparing build tree..."
2093
2094     if [ -z "$PERL" ]; then
2095         echo
2096         echo "You need perl in your PATH to make a shadow build."
2097         echo "Cannot proceed."
2098         exit 1
2099     fi
2100
2101     [ -d "$outpath/bin" ] || mkdir -p "$outpath/bin"
2102
2103     # make a syncqt script that can be used in the shadow
2104     rm -f "$outpath/bin/syncqt"
2105     if [ -x "$relpath/bin/syncqt" ]; then
2106         mkdir -p "$outpath/bin"
2107         echo "#!/bin/sh" >"$outpath/bin/syncqt"
2108         echo "perl \"$relpath/bin/syncqt\" -qtdir \"$outpath\" \"\$@\"" >>"$outpath/bin/syncqt"
2109         chmod 755 "$outpath/bin/syncqt"
2110     fi
2111
2112     for i in elf2e32_qtwrapper createpackage patch_capabilities qtmodule-configtests; do
2113         rm -f "$outpath/bin/$i"
2114         if [ -x "$relpath/bin/$i" ]; then
2115             mkdir -p "$outpath/bin"
2116             echo "#!/bin/sh" >"$outpath/bin/$i"
2117             echo "QTDIR=\"$relpath\"; export QTDIR" >>"$outpath/bin/$i"
2118             echo "\"$relpath/bin/$i\" \"\$@\"" >>"$outpath/bin/$i"
2119             chmod 755 "$outpath/bin/$i"
2120         fi
2121     done
2122
2123     # save a pre-existing mkspecs/modules dir
2124     test -d "$outpath/mkspecs/modules" && \
2125         mv "$outpath/mkspecs/modules" "$outpath/mkspecs-modules"
2126
2127     # symlink the mkspecs directory
2128     mkdir -p "$outpath/mkspecs"
2129     rm -rf "$outpath"/mkspecs/*
2130     ln -s "$relpath"/mkspecs/* "$outpath/mkspecs"
2131     rm -f "$outpath/mkspecs/default"
2132
2133     ShadowMkspecs()
2134     {
2135         rm -rf "$outpath/mkspecs/$1"
2136         find "$relpath/mkspecs/$1" -type d | sed "s,^$relpath,$outpath," | xargs mkdir -p
2137         find "$relpath/mkspecs/$1" -type f | sed "s,^$relpath/,," | while read f; do ln -s "$relpath/$f" "$outpath/$f"; done
2138     }
2139
2140     # Special case for mkspecs/features directory.
2141     # To be able to place .prf files into a shadow build directory,
2142     # we're creating links for files only. The directory structure is reproduced.
2143     ShadowMkspecs features
2144
2145     # The modules dir is special, too.
2146     if test -d "$outpath/mkspecs-modules"; then
2147         rm -rf "$outpath/mkspecs/modules"
2148         mv "$outpath/mkspecs-modules" "$outpath/mkspecs/modules"
2149     else
2150         ShadowMkspecs modules
2151     fi
2152
2153     # symlink the doc directory
2154     rm -rf "$outpath/doc"
2155     ln -s "$relpath/doc" "$outpath/doc"
2156 fi
2157
2158 # symlink fonts to be able to run application from build directory
2159 if [ ! -d "${outpath}/lib/fonts" ]; then
2160     if [ "$PLATFORM" = "$XPLATFORM" ]; then
2161         mkdir -p "${outpath}/lib"
2162         ln -s "${relpath}/lib/fonts" "${outpath}/lib/fonts"
2163     fi
2164 fi
2165
2166 if [ "$OPT_FAST" = "auto" ]; then
2167    if [ '!' -z "$AWK" ] && [ "$CFG_DEV" = "yes" ]; then
2168        OPT_FAST=yes
2169    else
2170        OPT_FAST=no
2171    fi
2172 fi
2173
2174 # find a make command
2175 if [ -z "$MAKE" ]; then
2176     MAKE=
2177     for mk in gmake make; do
2178         if "$WHICH" $mk >/dev/null 2>&1; then
2179             MAKE=`"$WHICH" $mk`
2180             break
2181         fi
2182     done
2183     if [ -z "$MAKE" ]; then
2184         echo >&2 "You don't seem to have 'make' or 'gmake' in your PATH."
2185         echo >&2 "Cannot proceed."
2186         exit 1
2187     fi
2188     # export MAKE, we need it later in the config.tests
2189     export MAKE
2190 fi
2191
2192 fi ### help
2193
2194 #-------------------------------------------------------------------------------
2195 # auto-detect all that hasn't been specified in the arguments
2196 #-------------------------------------------------------------------------------
2197
2198 if [ -z "$PLATFORM" ]; then
2199     PLATFORM_NOTES=
2200     case "$UNAME_SYSTEM:$UNAME_RELEASE" in
2201      Darwin:*)
2202          OSX_VERSION=`uname -r | cut -d. -f1`
2203          # Select compiler. Use g++ unless we find a usable Clang version
2204          PLATFORM=macx-g++
2205          if [ "$OSX_VERSION" -ge 12 ]; then
2206             # We're on Mountain Lion or above. Use Clang. Don't advertise gcc.
2207             PLATFORM=macx-clang
2208          elif [ "$OSX_VERSION" -eq 11 ]; then
2209              # We're on Lion. Check if we have a supported Clang version
2210              case "$(clang -v 2>&1 | grep -Po '(?<=version )\d[\d.]+')" in
2211                  3.*)
2212                      PLATFORM=macx-clang
2213                      PLATFORM_NOTES="\n    - Also available for Mac OS X: macx-g++\n"
2214                      ;;
2215              esac
2216          fi
2217          ;;
2218      AIX:*)
2219         #PLATFORM=aix-g++
2220         #PLATFORM=aix-g++-64
2221         PLATFORM=aix-xlc
2222         #PLATFORM=aix-xlc-64
2223         PLATFORM_NOTES="
2224             - Also available for AIX: aix-g++ aix-g++-64 aix-xlc-64
2225         "
2226         ;;
2227      GNU:*)
2228         PLATFORM=hurd-g++
2229         ;;
2230      dgux:*)
2231         PLATFORM=dgux-g++
2232         ;;
2233 #     DYNIX/ptx:4*)
2234 #       PLATFORM=dynix-g++
2235 #       ;;
2236      ULTRIX:*)
2237         PLATFORM=ultrix-g++
2238         ;;
2239      FreeBSD:*)
2240         PLATFORM=freebsd-g++
2241         PLATFORM_NOTES="
2242             - Also available for FreeBSD: freebsd-icc
2243         "
2244         ;;
2245      OpenBSD:*)
2246         PLATFORM=openbsd-g++
2247         ;;
2248      NetBSD:*)
2249         PLATFORM=netbsd-g++
2250         ;;
2251      BSD/OS:*|BSD/386:*)
2252         PLATFORM=bsdi-g++
2253         ;;
2254      IRIX*:*)
2255         #PLATFORM=irix-g++
2256         PLATFORM=irix-cc
2257         #PLATFORM=irix-cc-64
2258         PLATFORM_NOTES="
2259             - Also available for IRIX: irix-g++ irix-cc-64
2260         "
2261         ;;
2262      HP-UX:*)
2263         case "$UNAME_MACHINE" in
2264             ia64)
2265                 #PLATFORM=hpuxi-acc-32
2266                 PLATFORM=hpuxi-acc-64
2267                 PLATFORM_NOTES="
2268                     - Also available for HP-UXi: hpuxi-acc-32
2269                 "
2270             ;;
2271             *)
2272                 #PLATFORM=hpux-g++
2273                 PLATFORM=hpux-acc
2274                 #PLATFORM=hpux-acc-64
2275                 #PLATFORM=hpux-cc
2276                 #PLATFORM=hpux-acc-o64
2277                 PLATFORM_NOTES="
2278                     - Also available for HP-UX: hpux-g++ hpux-acc-64 hpux-acc-o64
2279                 "
2280             ;;
2281         esac
2282         ;;
2283      OSF1:*)
2284         #PLATFORM=tru64-g++
2285         PLATFORM=tru64-cxx
2286         PLATFORM_NOTES="
2287             - Also available for Tru64: tru64-g++
2288         "
2289         ;;
2290      Linux:*)
2291         case "$UNAME_MACHINE" in
2292             x86_64|s390x|ppc64)
2293                 PLATFORM=linux-g++-64
2294                 ;;
2295             *)
2296                 PLATFORM=linux-g++
2297                 ;;
2298         esac
2299         PLATFORM_NOTES="
2300             - Also available for Linux: linux-kcc linux-icc linux-cxx
2301         "
2302         ;;
2303      SunOS:5*)
2304         if [ "$XPLATFORM_MINGW" = "yes" ]; then
2305             PLATFORM="solaris-g++"
2306         else
2307             #PLATFORM=solaris-g++
2308             PLATFORM=solaris-cc
2309             #PLATFORM=solaris-cc64
2310         fi
2311         PLATFORM_NOTES="
2312             - Also available for Solaris: solaris-g++ solaris-cc-64
2313         "
2314         ;;
2315      ReliantUNIX-*:*|SINIX-*:*)
2316         PLATFORM=reliant-cds
2317         #PLATFORM=reliant-cds-64
2318         PLATFORM_NOTES="
2319             - Also available for Reliant UNIX: reliant-cds-64
2320         "
2321         ;;
2322      CYGWIN*:*)
2323         PLATFORM=cygwin-g++
2324         ;;
2325      LynxOS*:*)
2326         PLATFORM=lynxos-g++
2327         ;;
2328      OpenUNIX:*)
2329         #PLATFORM=unixware-g++
2330         PLATFORM=unixware-cc
2331         PLATFORM_NOTES="
2332             - Also available for OpenUNIX: unixware-g++
2333         "
2334         ;;
2335      UnixWare:*)
2336         #PLATFORM=unixware-g++
2337         PLATFORM=unixware-cc
2338         PLATFORM_NOTES="
2339             - Also available for UnixWare: unixware-g++
2340         "
2341         ;;
2342      SCO_SV:*)
2343         #PLATFORM=sco-g++
2344         PLATFORM=sco-cc
2345         PLATFORM_NOTES="
2346             - Also available for SCO OpenServer: sco-g++
2347         "
2348         ;;
2349      UNIX_SV:*)
2350         PLATFORM=unixware-g++
2351         ;;
2352      QNX:*)
2353         PLATFORM=unsupported/qnx-g++
2354         ;;
2355      *)
2356         if [ "$OPT_HELP" != "yes" ]; then
2357             echo
2358             for p in $PLATFORMS; do
2359                 echo "    $relconf $* -platform $p"
2360             done
2361             echo >&2
2362             echo "   The build script does not currently recognize all" >&2
2363             echo "   platforms supported by Qt." >&2
2364             echo "   Rerun this script with a -platform option listed to" >&2
2365             echo "   set the system/compiler combination you use." >&2
2366             echo >&2
2367             exit 2
2368         fi
2369     esac
2370 fi
2371
2372 PLATFORMS=`find "$relpath/mkspecs/" -type f | grep -v qws | sed "s,$relpath/mkspecs/qws/,,"`
2373
2374 [ -z "$XPLATFORM" ] && XPLATFORM="$PLATFORM"
2375
2376 case `basename "$XPLATFORM"` in win32-g++*) XPLATFORM_MINGW=yes;; esac
2377 case "$XPLATFORM" in linux-g++-maemo) XPLATFORM_MAEMO=yes;; esac
2378 case "$XPLATFORM" in qnx-*) XPLATFORM_QNX=yes;; esac
2379
2380 if [ -d "$PLATFORM" ]; then
2381   QMAKESPEC="$PLATFORM"
2382 else
2383   QMAKESPEC="$relpath/mkspecs/${PLATFORM}"
2384 fi
2385 if [ -d "$XPLATFORM" ]; then
2386   XQMAKESPEC="$XPLATFORM"
2387 else
2388   XQMAKESPEC="$relpath/mkspecs/${XPLATFORM}"
2389 fi
2390 if [ "$PLATFORM" != "$XPLATFORM" ]; then
2391     QT_CROSS_COMPILE=yes
2392     QMAKE_CONFIG="$QMAKE_CONFIG cross_compile"
2393     QTCONFIG_CONFIG="$QTCONFIG_CONFIG cross_compile"
2394 fi
2395
2396 if [ "$BUILD_ON_MAC" = "yes" ]; then
2397    if [ `basename $QMAKESPEC` = "macx-xcode" ] || [ `basename $XQMAKESPEC` = "macx-xcode" ]; then
2398       echo >&2
2399       echo "   Platform 'macx-xcode' should not be used when building Qt/Mac." >&2
2400       echo "   Please build Qt/Mac with 'macx-g++', then if you would like to" >&2
2401       echo "   use mac-xcode on your application code it can link to a Qt/Mac" >&2
2402       echo "   built with 'macx-g++'" >&2
2403       echo >&2
2404       exit 2
2405     fi
2406 fi
2407
2408 # check specified platforms are supported
2409 if [ '!' -d "$QMAKESPEC" ]; then
2410     echo
2411     echo "   The specified system/compiler is not supported:"
2412     echo
2413     echo "      $QMAKESPEC"
2414     echo
2415     echo "   Please see the README file for a complete list."
2416     echo
2417     exit 2
2418 fi
2419 if [ '!' -d "$XQMAKESPEC" ]; then
2420     echo
2421     echo "   The specified system/compiler is not supported:"
2422     echo
2423     echo "      $XQMAKESPEC"
2424     echo
2425     echo "   Please see the README file for a complete list."
2426     echo
2427     exit 2
2428 fi
2429 if [ '!' -f "${XQMAKESPEC}/qplatformdefs.h" ]; then
2430     echo
2431     echo "   The specified system/compiler port is not complete:"
2432     echo
2433     echo "      $XQMAKESPEC/qplatformdefs.h"
2434     echo
2435     echo "   Please contact qt-info@nokia.com."
2436     echo
2437     exit 2
2438 fi
2439
2440 if [ "$UNAME_SYSTEM" = "SunOS" ]; then
2441     # Solaris 2.5 and 2.6 have libposix4, which was renamed to librt for Solaris 7 and up
2442     if echo $UNAME_RELEASE | grep "^5\.[5|6]" >/dev/null 2>&1; then
2443         sed -e "s,-lrt,-lposix4," "$XQMAKESPEC/qmake.conf" > "$XQMAKESPEC/qmake.conf.new"
2444         mv "$XQMAKESPEC/qmake.conf.new" "$XQMAKESPEC/qmake.conf"
2445     fi
2446 fi
2447
2448 if [ "$CFG_RTOS_ENABLED" = "no" ]; then
2449     case `basename "$XPLATFORM"` in
2450         qnx-* | vxworks-*)
2451             echo ""
2452             echo "You are not licensed for Qt for `basename $XPLATFORM`."
2453             echo ""
2454             echo "Please contact qt-info@nokia.com to upgrade your license to"
2455             echo "include this platform, or install the Qt Open Source Edition"
2456             echo "if you intend to develop free software."
2457             exit 1
2458             ;;
2459     esac
2460 fi
2461
2462 #-------------------------------------------------------------------------------
2463 # tests that don't need qmake (must be run before displaying help)
2464 #-------------------------------------------------------------------------------
2465
2466 # detect build style
2467 if [ "$CFG_DEBUG" = "auto" ]; then
2468     if [ "$PLATFORM_MAC" = "yes" -o "$XPLATFORM_MINGW" = "yes" ]; then
2469         CFG_DEBUG_RELEASE=yes
2470         CFG_DEBUG=yes
2471     elif [ "$CFG_DEV" = "yes" ]; then
2472         CFG_DEBUG_RELEASE=no
2473         CFG_DEBUG=yes
2474     else
2475         CFG_DEBUG_RELEASE=no
2476         CFG_DEBUG=no
2477     fi
2478 fi
2479 if [ "$CFG_DEBUG_RELEASE" = "yes" ]; then
2480     QT_CONFIG="$QT_CONFIG build_all"
2481 fi
2482
2483 # pass on $CFG_SDK to the configure tests.
2484 if [ '!' -z "$CFG_SDK" ]; then
2485     MAC_CONFIG_TEST_COMMANDLINE="$MAC_CONFIG_TEST_COMMANDLINE -sdk $CFG_SDK"
2486 fi
2487
2488 # find the default framework value
2489 if [ "$BUILD_ON_MAC" = "yes" ]; then
2490     if [ "$CFG_FRAMEWORK" = "auto" ]; then
2491         CFG_FRAMEWORK="$CFG_SHARED"
2492     elif [ "$CFG_FRAMEWORK" = "yes" ] && [ "$CFG_SHARED" = "no" ]; then
2493         echo
2494         echo "WARNING: Using static linking will disable the use of Mac frameworks."
2495         echo
2496         CFG_FRAMEWORK="no"
2497     fi
2498 else
2499     CFG_FRAMEWORK=no
2500 fi
2501
2502 QMAKE_CONF_COMPILER=`getXQMakeConf QMAKE_CXX`
2503
2504 TEST_COMPILER=$QMAKE_CONF_COMPILER
2505 if [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
2506     if [ -z "$TEST_COMPILER" ]; then
2507         echo "ERROR: Cannot set the compiler for the configuration tests"
2508         exit 1
2509     fi
2510 fi
2511
2512 GCC_MACHINE_DUMP=
2513 case "$TEST_COMPILER" in *g++) GCC_MACHINE_DUMP=$($TEST_COMPILER -dumpmachine);; esac
2514 if [ -n "$GCC_MACHINE_DUMP" ]; then
2515     DeviceVar set GCC_MACHINE_DUMP $($TEST_COMPILER -dumpmachine)
2516 fi
2517
2518 if [ -n "$CFG_SYSROOT" ]; then
2519     SYSROOT_FLAG="--sysroot=$CFG_SYSROOT"
2520 else
2521     SYSROOT_FLAG=
2522 fi
2523 export SYSROOT_FLAG    # used by config.tests/unix/compile.test
2524
2525 # auto-detect precompiled header support
2526 if [ "$CFG_PRECOMPILE" = "auto" ]; then
2527     if "$unixtests/precomp.test" "$TEST_COMPILER" "$OPT_VERBOSE"; then
2528        CFG_PRECOMPILE=no
2529     else
2530        CFG_PRECOMPILE=yes
2531     fi
2532 fi
2533
2534 # auto-detect support for separate debug info in objcopy
2535 if [ "$CFG_SEPARATE_DEBUG_INFO" != "no" ] && [ "$CFG_SHARED" = "yes" ]; then
2536     TEST_COMPILER_CFLAGS=`getXQMakeConf QMAKE_CFLAGS`
2537     TEST_COMPILER_CXXFLAGS=`getXQMakeConf QMAKE_CXXFLAGS`
2538     TEST_OBJCOPY=`getXQMakeConf QMAKE_OBJCOPY`
2539     COMPILER_WITH_FLAGS="$TEST_COMPILER $TEST_COMPILER_CXXFLAGS"
2540     COMPILER_WITH_FLAGS=`echo "$COMPILER_WITH_FLAGS" | sed -e "s%\\$\\$QMAKE_CFLAGS%$TEST_COMPILER_CFLAGS%g"`
2541     if "$unixtests/objcopy.test" "$COMPILER_WITH_FLAGS" "$TEST_OBJCOPY" "$OPT_VERBOSE"; then
2542        CFG_SEPARATE_DEBUG_INFO=no
2543     else
2544        case "$PLATFORM" in
2545        hpux-*)
2546            # binutils on HP-UX is buggy; default to no.
2547            CFG_SEPARATE_DEBUG_INFO=no
2548            ;;
2549        *)
2550            CFG_SEPARATE_DEBUG_INFO=yes
2551            ;;
2552        esac
2553     fi
2554 fi
2555
2556 # auto-detect -fvisibility support
2557 if [ "$CFG_REDUCE_EXPORTS" != "no" ]; then
2558     if "$unixtests/fvisibility.test" "$TEST_COMPILER" "$OPT_VERBOSE"; then
2559        if [ "$CFG_REDUCE_EXPORTS" = "yes" ]; then
2560            echo "-reduce-exports was requested but this compiler does not support it"
2561            echo "Re-run configure with -v for more information"
2562            exit 1
2563        fi
2564        CFG_REDUCE_EXPORTS=no
2565     else
2566        CFG_REDUCE_EXPORTS=yes
2567     fi
2568 fi
2569
2570 # detect the availability of the -Bsymbolic-functions linker optimization
2571 if [ "$CFG_REDUCE_RELOCATIONS" != "no" ]; then
2572     if "$unixtests/bsymbolic_functions.test" "$TEST_COMPILER" "$OPT_VERBOSE"; then
2573        if [ "$CFG_REDUCE_RELOCATIONS" = "yes" ]; then
2574            echo "-reduce-relocations was requested but this compiler does not support it"
2575            echo "Re-run configure with -v for more information"
2576            exit 1
2577        fi
2578         CFG_REDUCE_RELOCATIONS=no
2579     else
2580         CFG_REDUCE_RELOCATIONS=yes
2581     fi
2582 fi
2583
2584 # auto-detect GNU make support
2585 if [ "$CFG_USE_GNUMAKE" = "auto" ] && "$MAKE" -v | grep "GNU Make" >/dev/null 2>&1; then
2586    CFG_USE_GNUMAKE=yes
2587 fi
2588
2589 # find the default framework value
2590 if [ "$BUILD_ON_MAC" = "yes" ]; then
2591     if [ "$CFG_FRAMEWORK" = "auto" ]; then
2592         CFG_FRAMEWORK="$CFG_SHARED"
2593     elif [ "$CFG_FRAMEWORK" = "yes" ] && [ "$CFG_SHARED" = "no" ]; then
2594         echo
2595         echo "WARNING: Using static linking will disable the use of Mac frameworks."
2596         echo
2597         CFG_FRAMEWORK="no"
2598     fi
2599 else
2600     CFG_FRAMEWORK=no
2601 fi
2602
2603 #setup the build parts
2604 if [ -z "$CFG_BUILD_PARTS" ]; then
2605     CFG_BUILD_PARTS="$QT_DEFAULT_BUILD_PARTS"
2606
2607     # build tests by default, if a developer build
2608     if [ "$CFG_DEV" = "yes" ]; then
2609         CFG_BUILD_PARTS="$CFG_BUILD_PARTS tests"
2610     fi
2611
2612     # don't build tools by default when cross-compiling
2613     if [ "$PLATFORM" != "$XPLATFORM" ]; then
2614         CFG_BUILD_PARTS=`echo "$CFG_BUILD_PARTS" | sed "s, tools,,g"`
2615     fi
2616 fi
2617 for nobuild in $CFG_NOBUILD_PARTS; do
2618     CFG_BUILD_PARTS=`echo "$CFG_BUILD_PARTS" | sed "s, $nobuild,,g"`
2619 done
2620 if echo $CFG_BUILD_PARTS | grep -v libs >/dev/null 2>&1; then
2621 #    echo
2622 #    echo "WARNING: libs is a required part of the build."
2623 #    echo
2624     CFG_BUILD_PARTS="$CFG_BUILD_PARTS libs"
2625 fi
2626
2627 #-------------------------------------------------------------------------------
2628 # post process QT_INSTALL_* variables
2629 #-------------------------------------------------------------------------------
2630
2631 if [ -z "$QT_INSTALL_PREFIX" ]; then
2632     if [ "$CFG_DEV" = "yes" ]; then
2633         QT_INSTALL_PREFIX="$outpath" # In Development, we use sandboxed builds by default
2634     else
2635         QT_INSTALL_PREFIX="/usr/local/Qt-${QT_VERSION}" # the default install prefix is /usr/local/Qt-$QT_VERSION
2636     fi
2637 fi
2638 QT_INSTALL_PREFIX=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_PREFIX"`
2639
2640 if [ -z "$QT_INSTALL_DOCS" ]; then #default
2641     if [ "$CFG_PREFIX_INSTALL" = "no" ]; then
2642         if [ "$BUILD_ON_MAC" = "yes" ]; then
2643             QT_INSTALL_DOCS="/Developer/Documentation/Qt"
2644         fi
2645     fi
2646     [ -z "$QT_INSTALL_DOCS" ] && QT_INSTALL_DOCS="$QT_INSTALL_PREFIX/doc" #fallback
2647
2648 fi
2649 QT_INSTALL_DOCS=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_DOCS"`
2650
2651 if [ -z "$QT_INSTALL_HEADERS" ]; then #default
2652     if [ "$CFG_PREFIX_INSTALL" = "no" ]; then
2653         if [ "$BUILD_ON_MAC" = "yes" ]; then
2654             if [ "$CFG_FRAMEWORK" = "yes" ]; then
2655                 QT_INSTALL_HEADERS=
2656             fi
2657         fi
2658     fi
2659     [ -z "$QT_INSTALL_HEADERS" ] && QT_INSTALL_HEADERS="$QT_INSTALL_PREFIX/include"
2660
2661 fi
2662 QT_INSTALL_HEADERS=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_HEADERS"`
2663
2664 if [ -z "$QT_INSTALL_LIBS" ]; then #default
2665     if [ "$CFG_PREFIX_INSTALL" = "no" ]; then
2666         if [ "$BUILD_ON_MAC" = "yes" ]; then
2667             if [ "$CFG_FRAMEWORK" = "yes" ]; then
2668                 QT_INSTALL_LIBS="/Libraries/Frameworks"
2669             fi
2670         fi
2671     fi
2672     [ -z "$QT_INSTALL_LIBS" ] && QT_INSTALL_LIBS="$QT_INSTALL_PREFIX/lib" #fallback
2673 fi
2674 QT_INSTALL_LIBS=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_LIBS"`
2675
2676 if [ -z "$QT_INSTALL_BINS" ]; then #default
2677     if [ "$CFG_PREFIX_INSTALL" = "no" ]; then
2678         if [ "$BUILD_ON_MAC" = "yes" ]; then
2679             QT_INSTALL_BINS="/Developer/Applications/Qt"
2680         fi
2681     fi
2682     [ -z "$QT_INSTALL_BINS" ] && QT_INSTALL_BINS="$QT_INSTALL_PREFIX/bin" #fallback
2683 fi
2684 QT_INSTALL_BINS=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_BINS"`
2685
2686 if [ -z "$QT_INSTALL_PLUGINS" ]; then #default
2687     if [ "$CFG_PREFIX_INSTALL" = "no" ]; then
2688         if [ "$BUILD_ON_MAC" = "yes" ]; then
2689             QT_INSTALL_PLUGINS="/Developer/Applications/Qt/plugins"
2690         fi
2691     fi
2692     [ -z "$QT_INSTALL_PLUGINS" ] && QT_INSTALL_PLUGINS="$QT_INSTALL_PREFIX/plugins" #fallback
2693 fi
2694 QT_INSTALL_PLUGINS=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_PLUGINS"`
2695
2696 if [ -z "$QT_INSTALL_IMPORTS" ]; then #default
2697     if [ "$CFG_PREFIX_INSTALL" = "no" ]; then
2698         if [ "$BUILD_ON_MAC" = "yes" ]; then
2699             QT_INSTALL_IMPORTS="/Developer/Applications/Qt/imports"
2700         fi
2701     fi
2702     [ -z "$QT_INSTALL_IMPORTS" ] && QT_INSTALL_IMPORTS="$QT_INSTALL_PREFIX/imports" #fallback
2703 fi
2704 QT_INSTALL_IMPORTS=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_IMPORTS"`
2705
2706 if [ -z "$QT_INSTALL_DATA" ]; then #default
2707     QT_INSTALL_DATA="$QT_INSTALL_PREFIX"
2708 fi
2709 QT_INSTALL_DATA=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_DATA"`
2710
2711 if [ -z "$QT_INSTALL_TRANSLATIONS" ]; then #default
2712     QT_INSTALL_TRANSLATIONS="$QT_INSTALL_PREFIX/translations"
2713 fi
2714 QT_INSTALL_TRANSLATIONS=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_TRANSLATIONS"`
2715
2716 if [ -z "$QT_INSTALL_SETTINGS" ]; then #default
2717     if [ "$BUILD_ON_MAC" = "yes" ]; then
2718         QT_INSTALL_SETTINGS=/Library/Preferences/Qt
2719     else
2720         QT_INSTALL_SETTINGS=/etc/xdg
2721     fi
2722 fi
2723 QT_INSTALL_SETTINGS=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_SETTINGS"`
2724
2725 if [ -z "$QT_INSTALL_EXAMPLES" ]; then #default
2726     if [ "$CFG_PREFIX_INSTALL" = "no" ]; then
2727         if [ "$BUILD_ON_MAC" = "yes" ]; then
2728             QT_INSTALL_EXAMPLES="/Developer/Examples/Qt"
2729         fi
2730     fi
2731     [ -z "$QT_INSTALL_EXAMPLES" ] && QT_INSTALL_EXAMPLES="$QT_INSTALL_PREFIX/examples" #fallback
2732 fi
2733 QT_INSTALL_EXAMPLES=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_EXAMPLES"`
2734
2735 #tests
2736 if [ -z "$QT_INSTALL_TESTS" ]; then #default
2737     if [ "$CFG_PREFIX_INSTALL" = "no" ]; then
2738         if [ "$BUILD_ON_MAC" = "yes" ]; then
2739             QT_INSTALL_TESTS="/Developer/Tests/Qt"
2740         fi
2741     fi
2742     [ -z "$QT_INSTALL_TESTS" ] && QT_INSTALL_TESTS="$QT_INSTALL_PREFIX/tests" #fallback
2743 fi
2744 QT_INSTALL_TESTS=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_TESTS"`
2745
2746 #------- host paths --------
2747
2748 if [ -z "$QT_HOST_PREFIX" ]; then
2749     QT_HOST_PREFIX=$QT_INSTALL_PREFIX
2750     haveHpx=false
2751 else
2752     QT_HOST_PREFIX=`"$relpath/config.tests/unix/makeabs" "$QT_HOST_PREFIX"`
2753     haveHpx=true
2754 fi
2755
2756 if [ -z "$QT_HOST_BINS" ]; then #default
2757     if $haveHpx; then
2758         if [ "$CFG_PREFIX_INSTALL" = "no" ]; then
2759             if [ "$BUILD_ON_MAC" = "yes" ]; then
2760                 QT_HOST_BINS="/Developer/Applications/Qt"
2761             fi
2762         fi
2763         [ -z "$QT_HOST_BINS" ] && QT_HOST_BINS="$QT_HOST_PREFIX/bin" #fallback
2764     else
2765         QT_HOST_BINS="$QT_INSTALL_BINS"
2766     fi
2767 fi
2768 QT_HOST_BINS=`"$relpath/config.tests/unix/makeabs" "$QT_HOST_BINS"`
2769
2770 if [ -z "$QT_HOST_DATA" ]; then #default
2771     if $haveHpx; then
2772         QT_HOST_DATA="$QT_HOST_PREFIX"
2773     else
2774         QT_HOST_DATA="$QT_INSTALL_DATA"
2775     fi
2776 else
2777     QT_HOST_DATA=`"$relpath/config.tests/unix/makeabs" "$QT_HOST_DATA"`
2778 fi
2779
2780 #-------------------------------------------------------------------------------
2781 # help - interactive parts of the script _after_ this section please
2782 #-------------------------------------------------------------------------------
2783
2784 # next, emit a usage message if something failed.
2785 if [ "$OPT_HELP" = "yes" ]; then
2786     [ "x$ERROR" = "xyes" ] && echo
2787     if [ "$CFG_NIS" = "no" ]; then
2788         NSY=" "
2789         NSN="*"
2790     else
2791         NSY="*"
2792         NSN=" "
2793     fi
2794     if [ "$CFG_CUPS" = "no" ]; then
2795         CUY=" "
2796         CUN="*"
2797     else
2798         CUY="*"
2799         CUN=" "
2800     fi
2801     if [ "$CFG_ICONV" = "no" ]; then
2802         CIY=" "
2803         CIN="*"
2804     else
2805         CIY="*"
2806         CIN=" "
2807     fi
2808     if [ "$CFG_LARGEFILE" = "no" ]; then
2809         LFSY=" "
2810         LFSN="*"
2811     else
2812         LFSY="*"
2813         LFSN=" "
2814     fi
2815     if [ "$CFG_PRECOMPILE" = "auto" ] || [ "$CFG_PRECOMPILE" = "no" ]; then
2816         PHY=" "
2817         PHN="*"
2818     else
2819         PHY="*"
2820         PHN=" "
2821     fi
2822
2823     if [ "$CFG_XCB" = "no" ]; then
2824         XCBY=" "
2825         XCBN="*"
2826     else
2827         XCBY="*"
2828         XCBN=" "
2829     fi
2830
2831     if [ "$CFG_EGLFS" = "no" ]; then
2832         EGLFSY=" "
2833         EGLFSN="*"
2834     else
2835         EGLFSY="*"
2836         EGLFSN=" "
2837     fi
2838
2839     if [ "$CFG_DIRECTFB" = "no" ]; then
2840         DFBY=" "
2841         DFBN="*"
2842     else
2843         DFBY="*"
2844         DFBN=" "
2845     fi
2846     if [ "$CFG_XINPUT2" = "no" ]; then
2847         X2Y=" "
2848         X2N="*"
2849     else
2850         X2Y="*"
2851         X2N=" "
2852     fi
2853
2854     if [ "$CFG_DBUS" = "no" ]; then
2855         DBY=" "
2856         DBN="+"
2857     else
2858         DBY="+"
2859         DBN=" "
2860     fi
2861
2862     if [ "$CFG_SEPARATE_DEBUG_INFO" = "no" ]; then
2863         SBY=" "
2864         SBN="*"
2865     else
2866         SBY="*"
2867         SBN=" "
2868     fi
2869
2870     if [ "$CFG_GLIB" = "no" ]; then
2871         GBY=" "
2872         GBN="+"
2873     else
2874         GBY="+"
2875         GBN=" "
2876     fi
2877
2878     cat <<EOF
2879 Usage:  $relconf [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir <dir>]
2880         [-docdir <dir>] [-headerdir <dir>] [-plugindir <dir> ] [-importdir <dir>] [-datadir <dir>]
2881         [-translationdir <dir>] [-sysconfdir <dir>] [-examplesdir <dir>] [-testsdir <dir>]
2882         [-release] [-debug] [-debug-and-release] [-c++11] [-no-c++11]
2883         [-developer-build] [-shared] [-static] [-no-fast] [-fast] [-no-largefile]
2884         [-largefile] [-no-accessibility] [-accessibility] [-no-sql-<driver>] [-sql-<driver>]
2885         [-plugin-sql-<driver>] [-system-sqlite]
2886         [-platform] [-D <string>] [-I <string>] [-L <string>] [-help]
2887         [-qt-zlib] [-system-zlib] [-no-gif] [-no-libpng] [-qt-libpng] [-system-libpng]
2888         [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg] [-make <part>]
2889         [-nomake <part>] [-R <string>]  [-l <string>] [-no-rpath]  [-rpath] [-continue]
2890         [-verbose] [-v] [-silent] [-no-nis] [-nis] [-no-cups] [-cups] [-no-iconv]
2891         [-iconv] [-no-pch] [-pch] [-no-dbus] [-dbus] [-dbus-linked] [-no-gui]
2892         [-no-separate-debug-info] [-no-sse2]
2893         [-no-sse3] [-no-ssse3] [-no-sse4.1] [-no-sse4.2] [-no-avx] [-no-neon]
2894         [-qtnamespace <namespace>] [-qtlibinfix <infix>] [-separate-debug-info]
2895         [-no-phonon-backend] [-phonon-backend] [-no-media-backend] [-media-backend]
2896         [-no-audio-backend] [-audio-backend]
2897         [-no-javascript-jit] [-javascript-jit] [-no-qml-debug] [-qml-debug]
2898         [-no-optimized-qmake] [-optimized-qmake]
2899         [-no-openssl] [-openssl] [-openssl-linked]
2900         [-no-gtkstyle] [-gtkstyle]
2901         [-qt-pcre] [-system-pcre]
2902         [-device <name>] [-device-option <key=value>]
2903         [additional platform specific options (see below)]
2904
2905
2906 Installation options:
2907
2908  These are optional, but you may specify install directories.
2909
2910     -prefix <dir> ...... This will install everything relative to <dir>
2911                          (default $QT_INSTALL_PREFIX)
2912
2913     -hostprefix [dir] .. Tools and libraries needed when developing
2914                          applications are installed in [dir]. If [dir] is
2915                          not given, the current build directory will be used.
2916                          (default PREFIX)
2917
2918   * -prefix-install .... Force a sandboxed "local" installation of
2919                          Qt. This will install into
2920                          $QT_INSTALL_PREFIX, if this option is
2921                          disabled then some platforms will attempt a
2922                          "system" install by placing default values to
2923                          be placed in a system location other than
2924                          PREFIX.
2925
2926  You may use these to separate different parts of the install:
2927
2928     -bindir <dir> ......... Executables will be installed to <dir>
2929                             (default PREFIX/bin)
2930     -libdir <dir> ......... Libraries will be installed to <dir>
2931                             (default PREFIX/lib)
2932     -docdir <dir> ......... Documentation will be installed to <dir>
2933                             (default PREFIX/doc)
2934     -headerdir <dir> ...... Headers will be installed to <dir>
2935                             (default PREFIX/include)
2936     -plugindir <dir> ...... Plugins will be installed to <dir>
2937                             (default PREFIX/plugins)
2938     -importdir <dir> ...... Imports for QML will be installed to <dir>
2939                             (default PREFIX/imports)
2940     -datadir <dir> ........ Data used by Qt programs will be installed to <dir>
2941                             (default PREFIX)
2942     -translationdir <dir> . Translations of Qt programs will be installed to <dir>
2943                             (default PREFIX/translations)
2944     -sysconfdir <dir> ..... Settings used by Qt programs will be looked for in <dir>
2945                             (default PREFIX/etc/settings)
2946     -examplesdir <dir> .... Examples will be installed to <dir>
2947                             (default PREFIX/examples)
2948     -testsdir <dir> ....... Tests will be installed to <dir>
2949                             (default PREFIX/tests)
2950
2951     -hostbindir <dir> .. Host executables will be installed to <dir>
2952                          (default HOSTPREFIX/bin)
2953     -hostdatadir <dir> . Data used by qmake will be installed to <dir>
2954                          (default HOSTPREFIX)
2955
2956 Configure options:
2957
2958  The defaults (*) are usually acceptable. A plus (+) denotes a default value
2959  that needs to be evaluated. If the evaluation succeeds, the feature is
2960  included. Here is a short explanation of each option:
2961
2962  *  -release ........... Compile and link Qt with debugging turned off.
2963     -debug ............. Compile and link Qt with debugging turned on.
2964     -debug-and-release . Compile and link two versions of Qt, with and without
2965                          debugging turned on (Mac only).
2966
2967     -developer-build ... Compile and link Qt with Qt developer options (including auto-tests exporting)
2968
2969     -opensource ........ Compile and link the Open-Source Edition of Qt.
2970     -commercial ........ Compile and link the Commercial Edition of Qt.
2971
2972     -no-c++11 .......... Do not compile Qt with C++11 support enabled.
2973  +  -c++11 ............. Compile Qt with C++11 support enabled.
2974
2975  *  -shared ............ Create and use shared Qt libraries.
2976     -static ............ Create and use static Qt libraries.
2977
2978  *  -no-fast ........... Configure Qt normally by generating Makefiles for all
2979                          project files.
2980     -fast .............. Configure Qt quickly by generating Makefiles only for
2981                          library and subdirectory targets.  All other Makefiles
2982                          are created as wrappers, which will in turn run qmake.
2983
2984     -no-largefile ...... Disables large file support.
2985  +  -largefile ......... Enables Qt to access files larger than 4 GB.
2986
2987     -no-accessibility .. Do not compile Accessibility support.
2988  *  -accessibility ..... Compile Accessibility support.
2989
2990     -no-sql-<driver> ... Disable SQL <driver> entirely.
2991     -qt-sql-<driver> ... Enable a SQL <driver> in the QtSql library, by default
2992                          none are turned on.
2993     -plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to
2994                          at run time.
2995
2996                          Possible values for <driver>:
2997                          [ $CFG_SQL_AVAILABLE ]
2998
2999     -system-sqlite ..... Use sqlite from the operating system.
3000
3001     -no-phonon-backend.. Do not build the platform phonon plugin.
3002  +  -phonon-backend..... Build the platform phonon plugin.
3003
3004     -no-javascript-jit . Do not build the JavaScriptCore JIT compiler.
3005  +  -javascript-jit .... Build the JavaScriptCore JIT compiler.
3006
3007     -no-qml-debug ...... Do not build the in-process QML debugging support.
3008  +  -qml-debug ......... Build the QML debugging support.
3009
3010     -platform target ... The operating system and compiler you are building
3011                          on ($PLATFORM).
3012
3013                          See the README file for a list of supported
3014                          operating systems and compilers.
3015
3016     -no-sse2 ........... Do not compile with use of SSE2 instructions.
3017     -no-sse3 ........... Do not compile with use of SSE3 instructions.
3018     -no-ssse3 .......... Do not compile with use of SSSE3 instructions.
3019     -no-sse4.1.......... Do not compile with use of SSE4.1 instructions.
3020     -no-sse4.2.......... Do not compile with use of SSE4.2 instructions.
3021     -no-avx ............ Do not compile with use of AVX instructions.
3022     -no-avx2 ........... Do not compile with use of AVX2 instructions.
3023     -no-neon ........... Do not compile with use of NEON instructions.
3024     -no-mips_dsp ....... Do not compile with use of MIPS DSP instructions.
3025     -no-mips_dspr2 ..... Do not compile with use of MIPS DSP rev2 instructions.
3026
3027     -qtnamespace <name>  Wraps all Qt library code in 'namespace <name> {...}'.
3028     -qtlibinfix <infix>  Renames all libQt*.so to libQt*<infix>.so.
3029
3030     -testcocoon          Instrument Qt with the TestCocoon code coverage tool.
3031
3032     -D <string> ........ Add an explicit define to the preprocessor.
3033     -I <string> ........ Add an explicit include path.
3034     -L <string> ........ Add an explicit library path.
3035
3036  +  -pkg-config ........ Use pkg-config to detect include and library paths. By default,
3037                          configure determines whether to use pkg-config or not with
3038                          some heuristics such as checking the environment variables.
3039     -no-pkg-config ..... Disable use of pkg-config.
3040     -force-pkg-config .. Force usage of pkg-config (skips pkg-config usability
3041                          detection heuristic).
3042
3043     -help, -h .......... Display this information.
3044
3045 Third Party Libraries:
3046
3047     -qt-zlib ........... Use the zlib bundled with Qt.
3048  +  -system-zlib ....... Use zlib from the operating system.
3049                          See http://www.gzip.org/zlib
3050
3051     -no-gif ............ Do not compile GIF reading support.
3052
3053     -no-libpng ......... Do not compile PNG support.
3054     -qt-libpng ......... Use the libpng bundled with Qt.
3055  +  -system-libpng ..... Use libpng from the operating system.
3056                          See http://www.libpng.org/pub/png
3057
3058     -no-libjpeg ........ Do not compile JPEG support.
3059     -qt-libjpeg ........ Use the libjpeg bundled with Qt.
3060  +  -system-libjpeg .... Use libjpeg from the operating system.
3061                          See http://www.ijg.org
3062
3063     -no-openssl ........ Do not compile support for OpenSSL.
3064  +  -openssl ........... Enable run-time OpenSSL support.
3065     -openssl-linked .... Enabled linked OpenSSL support.
3066
3067     -qt-pcre ........... Use the PCRE library bundled with Qt.
3068  +  -system-pcre ....... Use the PCRE library from the operating system.
3069
3070 Additional options:
3071
3072     -make <part> ....... Add part to the list of parts to be built at make time.
3073                          ($QT_DEFAULT_BUILD_PARTS)
3074     -nomake <part> ..... Exclude part from the list of parts to be built.
3075
3076     -R <string> ........ Add an explicit runtime library path to the Qt
3077                          libraries.
3078     -l <string> ........ Add an explicit library.
3079
3080     -no-rpath .......... Do not use the library install path as a runtime
3081                          library path.
3082  +  -rpath ............. Link Qt libraries and executables using the library
3083                          install path as a runtime library path. Equivalent
3084                          to -R install_libpath
3085
3086     -continue .......... Continue as far as possible if an error occurs.
3087
3088     -verbose, -v ....... Print verbose information about each step of the
3089                          configure process.
3090
3091     -silent ............ Reduce the build output so that warnings and errors
3092                          can be seen more easily.
3093
3094  *  -no-optimized-qmake ... Do not build qmake optimized.
3095     -optimized-qmake ...... Build qmake optimized.
3096
3097     -no-gui ............ Don't build the Qt GUI library
3098
3099  $NSN  -no-nis ............ Do not compile NIS support.
3100  $NSY  -nis ............... Compile NIS support.
3101
3102  $CUN  -no-cups ........... Do not compile CUPS support.
3103  $CUY  -cups .............. Compile CUPS support.
3104                          Requires cups/cups.h and libcups.so.2.
3105
3106  $CIN  -no-iconv .......... Do not compile support for iconv(3).
3107  $CIY  -iconv ............. Compile support for iconv(3).
3108
3109  $PHN  -no-pch ............ Do not use precompiled header support.
3110  $PHY  -pch ............... Use precompiled header support.
3111
3112  $DBN  -no-dbus ........... Do not compile the QtDBus module.
3113  $DBY  -dbus .............. Compile the QtDBus module and dynamically load libdbus-1.
3114     -dbus-linked ....... Compile the QtDBus module and link to libdbus-1.
3115
3116     -reduce-relocations ..... Reduce relocations in the libraries through extra
3117                               linker optimizations (Qt/X11 and Qt for Embedded Linux only;
3118                               experimental; needs GNU ld >= 2.18).
3119
3120     -force-asserts ........ Force Q_ASSERT to be enabled even in release builds.
3121
3122     -device <name> ............... Cross-compile for device <name> (experimental)
3123     -device-option <key=value> ... Add device specific options for the device mkspec
3124                                    (experimental)
3125
3126  $SBN  -no-separate-debug-info . Do not store debug information in a separate file.
3127  $SBY  -separate-debug-info .... Strip debug information into a separate .debug file.
3128
3129  $XCBN  -no-xcb ............ Do not compile Xcb (X protocol C-language Binding) support.
3130  $XCBY  -xcb ............... Compile Xcb support.
3131
3132  $EGLFSN  -no-eglfs .......... Do not compile EGLFS (EGL Full Screen/Single Surface) support.
3133  $EGLFSY  -eglfs ............. Compile EGLFS support (Requires OpenGL ES 2 support).
3134
3135  $DFBN  -no-directfb ....... Do not compile DirectFB support.
3136  $DFBY  -directfb .......... Compile DirectFB support.
3137
3138     -qpa <name> ......... Sets the default QPA platform (e.g xcb, cocoa, windows).
3139
3140     -xplatform target ... The target platform when cross-compiling.
3141
3142     -sysroot <dir> ...... Sets <dir> as the target compiler's and qmake's sysroot.
3143
3144     -no-feature-<feature> Do not compile in <feature>.
3145     -feature-<feature> .. Compile in <feature>. The available features
3146                           are described in src/corelib/global/qfeatures.txt
3147
3148     -no-freetype ........ Do not compile in Freetype2 support.
3149     -qt-freetype ........ Use the libfreetype bundled with Qt.
3150  *  -system-freetype .... Use libfreetype from the operating system.
3151                           See http://www.freetype.org/
3152
3153     -qconfig local ...... Use src/corelib/global/qconfig-local.h rather than the
3154                           default ($CFG_QCONFIG).
3155
3156     -no-opengl .......... Do not support OpenGL.
3157     -opengl <api> ....... Enable OpenGL support
3158                           With no parameter, this will attempt to auto-detect
3159                           OpenGL ES 2, or regular desktop OpenGL.
3160                           Use es2 for <api> to override auto-detection.
3161
3162  $GBN  -no-glib ........... Do not compile Glib support.
3163  $GBY  -glib .............. Compile Glib support.
3164 EOF
3165
3166 if [ "$XPLATFORM_MAEMO" = "yes" ]; then
3167     cat << EOF
3168
3169  $X2N  -no-xinput2......... Do not compile XInput2 support.
3170  $X2Y  -xinput2............ Compile XInput2 support.
3171
3172 EOF
3173
3174 fi
3175
3176 if [ "$BUILD_ON_MAC" = "yes" ]; then
3177     cat << EOF
3178
3179 Qt/Mac only:
3180
3181     -Fstring ........... Add an explicit framework path.
3182     -fw string ......... Add an explicit framework.
3183
3184  *  -framework ......... Build Qt as a series of frameworks and
3185                          link tools against those frameworks.
3186     -no-framework ...... Do not build Qt as a series of frameworks.
3187
3188     -sdk <sdk> ......... Build Qt using Apple provided SDK <sdk>. This option requires gcc 4.
3189                          To use a different SDK with gcc 3.3, set the SDKROOT environment variable.
3190
3191     -harfbuzz .......... Use HarfBuzz to do text layout instead of Core Text when possible.
3192  *  -no-harfbuzz ....... Disable HarfBuzz on Mac. It can still be enabled by setting
3193                          QT_ENABLE_HARFBUZZ environment variable.
3194
3195 EOF
3196 fi
3197
3198    [ "x$ERROR" = "xyes" ] && exit 1
3199    exit 0
3200 fi # Help
3201
3202
3203 # -----------------------------------------------------------------------------
3204 # LICENSING, INTERACTIVE PART
3205 # -----------------------------------------------------------------------------
3206
3207 echo
3208 echo "This is the Qt ${EditionString} Edition."
3209 echo
3210
3211 if [ "$Edition" = "OpenSource" ]; then
3212     while true; do
3213         echo "You are licensed to use this software under the terms of"
3214         echo "the Lesser GNU General Public License (LGPL) versions 2.1."
3215         if [ -f "$relpath/LICENSE.GPL3" ]; then
3216             echo "You are also licensed to use this software under the terms of"
3217             echo "the GNU General Public License (GPL) versions 3."
3218             affix="either"
3219         else
3220             affix="the"
3221         fi
3222         echo
3223         if [ "$OPT_CONFIRM_LICENSE" = "yes" ]; then
3224             echo "You have already accepted the terms of the $LicenseType license."
3225             acceptance=yes
3226         else
3227             if [ -f "$relpath/LICENSE.GPL3" ]; then
3228                 echo "Type '3' to view the GNU General Public License version 3."
3229             fi
3230             echo "Type 'L' to view the Lesser GNU General Public License version 2.1."
3231             echo "Type 'yes' to accept this license offer."
3232             echo "Type 'no' to decline this license offer."
3233             echo
3234             echo $ECHO_N "Do you accept the terms of $affix license? $ECHO_C"
3235             read acceptance
3236         fi
3237         echo
3238         if [ "$acceptance" = "yes" ] || [ "$acceptance" = "y" ]; then
3239             break
3240         elif [ "$acceptance" = "no" ]; then
3241             echo "You are not licensed to use this software."
3242             echo
3243             exit 1
3244         elif [ "$acceptance" = "3" ]; then
3245             more "$relpath/LICENSE.GPL3"
3246         elif [ "$acceptance" = "L" ]; then
3247             more "$relpath/LICENSE.LGPL"
3248         fi
3249     done
3250 elif [ "$Edition" = "Preview" ]; then
3251     TheLicense=`head -n 1 "$relpath/LICENSE.PREVIEW.COMMERCIAL"`
3252     while true; do
3253
3254         if [ "$OPT_CONFIRM_LICENSE" = "yes" ]; then
3255             echo "You have already accepted the terms of the $LicenseType license."
3256             acceptance=yes
3257         else
3258             echo "You are licensed to use this software under the terms of"
3259             echo "the $TheLicense"
3260             echo
3261             echo "Type '?' to read the Preview License."
3262             echo "Type 'yes' to accept this license offer."
3263             echo "Type 'no' to decline this license offer."
3264             echo
3265             echo $ECHO_N "Do you accept the terms of the license? $ECHO_C"
3266             read acceptance
3267         fi
3268         echo
3269         if [ "$acceptance" = "yes" ]; then
3270             break
3271         elif [ "$acceptance" = "no" ] ;then
3272             echo "You are not licensed to use this software."
3273             echo
3274             exit 0
3275         elif [ "$acceptance" = "?" ]; then
3276             more "$relpath/LICENSE.PREVIEW.COMMERCIAL"
3277         fi
3278     done
3279 elif [ "$Edition" != "OpenSource" ]; then
3280     if [ -n "$ExpiryDate" ]; then
3281         ExpiryDate=`echo $ExpiryDate | sed -e "s,-,,g" | tr -d "\n\r"`
3282         [ -z "$ExpiryDate" ] && ExpiryDate="0"
3283         Today=`date +%Y%m%d`
3284         if [ "$Today" -gt "$ExpiryDate" ]; then
3285             case "$LicenseType" in
3286             Commercial|Academic|Educational)
3287                 if [ "$QT_PACKAGEDATE" -gt "$ExpiryDate" ]; then
3288                     echo
3289                     echo "NOTICE  NOTICE  NOTICE  NOTICE"
3290                     echo
3291                     echo "  Your support and upgrade period has expired."
3292                     echo
3293                     echo "  You are no longer licensed to use this version of Qt."
3294                     echo "  Please contact qt-info@nokia.com to renew your support"
3295                     echo "  and upgrades for this license."
3296                     echo
3297                     echo "NOTICE  NOTICE  NOTICE  NOTICE"
3298                     echo
3299                     exit 1
3300                 else
3301                     echo
3302                     echo "WARNING  WARNING  WARNING  WARNING"
3303                     echo
3304                     echo "  Your support and upgrade period has expired."
3305                     echo
3306                     echo "  You may continue to use your last licensed release"
3307                     echo "  of Qt under the terms of your existing license"
3308                     echo "  agreement. But you are not entitled to technical"
3309                     echo "  support, nor are you entitled to use any more recent"
3310                     echo "  Qt releases."
3311                     echo
3312                     echo "  Please contact qt-info@nokia.com to renew your"
3313                     echo "  support and upgrades for this license."
3314                     echo
3315                     echo "WARNING  WARNING  WARNING  WARNING"
3316                     echo
3317                     sleep 3
3318                 fi
3319                 ;;
3320             Evaluation|*)
3321                 echo
3322                 echo "NOTICE  NOTICE  NOTICE  NOTICE"
3323                 echo
3324                 echo "  Your Evaluation license has expired."
3325                 echo
3326                 echo "  You are no longer licensed to use this software. Please"
3327                 echo "  contact qt-info@nokia.com to purchase license, or install"
3328                 echo "  the Qt Open Source Edition if you intend to develop free"
3329                 echo "  software."
3330                 echo
3331                 echo "NOTICE  NOTICE  NOTICE  NOTICE"
3332                 echo
3333                 exit 1
3334                 ;;
3335             esac
3336         fi
3337     fi
3338     TheLicense=`head -n 1 "$outpath/LICENSE"`
3339     while true; do
3340         if [ "$OPT_CONFIRM_LICENSE" = "yes" ]; then
3341             echo "You have already accepted the terms of the $TheLicense."
3342             acceptance=yes
3343         else
3344             echo "You are licensed to use this software under the terms of"
3345             echo "the $TheLicense."
3346             echo
3347             echo "Type '?' to view the $TheLicense."
3348             echo "Type 'yes' to accept this license offer."
3349             echo "Type 'no' to decline this license offer."
3350             echo
3351             echo $ECHO_N "Do you accept the terms of the $TheLicense? $ECHO_C"
3352             read acceptance
3353         fi
3354         echo
3355         if [ "$acceptance" = "yes" ]; then
3356             break
3357         elif [ "$acceptance" = "no" ]; then
3358             echo "You are not licensed to use this software."
3359             echo
3360             exit 1
3361         else [ "$acceptance" = "?" ]
3362             more "$outpath/LICENSE"
3363         fi
3364     done
3365 fi
3366
3367 # this should be moved somewhere else
3368 case "$PLATFORM" in
3369 aix-*)
3370     AIX_VERSION=`uname -v`
3371     if [ "$AIX_VERSION" -lt "5" ]; then
3372         QMakeVar add QMAKE_LIBS_X11 -lbind
3373     fi
3374     ;;
3375 *)
3376     ;;
3377 esac
3378
3379 #-------------------------------------------------------------------------------
3380 # generate qconfig.cpp
3381 #-------------------------------------------------------------------------------
3382 [ -d "$outpath/src/corelib/global" ] || mkdir -p "$outpath/src/corelib/global"
3383
3384 cat > "$outpath/src/corelib/global/qconfig.cpp.new" <<EOF
3385 /* License Info */
3386 static const char qt_configure_licensee_str          [256 + 12] = "qt_lcnsuser=$Licensee";
3387 static const char qt_configure_licensed_products_str [256 + 12] = "qt_lcnsprod=$Edition";
3388
3389 /* Installation date */
3390 static const char qt_configure_installation          [12+11]    = "qt_instdate=`date +%Y-%m-%d`";
3391
3392 /* Installation Info */
3393 static const char qt_configure_prefix_path_strs[][256 + 12] = {
3394     "qt_prfxpath=$QT_INSTALL_PREFIX",
3395     "qt_docspath=$QT_INSTALL_DOCS",
3396     "qt_hdrspath=$QT_INSTALL_HEADERS",
3397     "qt_libspath=$QT_INSTALL_LIBS",
3398     "qt_binspath=$QT_INSTALL_BINS",
3399     "qt_plugpath=$QT_INSTALL_PLUGINS",
3400     "qt_impspath=$QT_INSTALL_IMPORTS",
3401     "qt_datapath=$QT_INSTALL_DATA",
3402     "qt_trnspath=$QT_INSTALL_TRANSLATIONS",
3403     "qt_xmplpath=$QT_INSTALL_EXAMPLES",
3404     "qt_tstspath=$QT_INSTALL_TESTS",
3405 #ifdef QT_BUILD_QMAKE
3406     "qt_ssrtpath=$CFG_SYSROOT",
3407     "qt_hpfxpath=$QT_HOST_PREFIX",
3408     "qt_hbinpath=$QT_HOST_BINS",
3409     "qt_hdatpath=$QT_HOST_DATA",
3410 #endif
3411 };
3412 static const char qt_configure_settings_path_str[256 + 12] = "qt_stngpath=$QT_INSTALL_SETTINGS";
3413 EOF
3414
3415 cat >> "$outpath/src/corelib/global/qconfig.cpp.new" <<EOF
3416
3417 /* strlen( "qt_lcnsxxxx" ) == 12 */
3418 #define QT_CONFIGURE_LICENSEE qt_configure_licensee_str + 12;
3419 #define QT_CONFIGURE_LICENSED_PRODUCTS qt_configure_licensed_products_str + 12;
3420
3421 #define QT_CONFIGURE_SETTINGS_PATH qt_configure_settings_path_str + 12;
3422 EOF
3423
3424 # avoid unecessary rebuilds by copying only if qconfig.cpp has changed
3425 if cmp -s "$outpath/src/corelib/global/qconfig.cpp" "$outpath/src/corelib/global/qconfig.cpp.new"; then
3426     rm -f "$outpath/src/corelib/global/qconfig.cpp.new"
3427 else
3428     [ -f "$outpath/src/corelib/global/qconfig.cpp" ] && chmod +w "$outpath/src/corelib/global/qconfig.cpp"
3429     mv "$outpath/src/corelib/global/qconfig.cpp.new" "$outpath/src/corelib/global/qconfig.cpp"
3430     chmod -w "$outpath/src/corelib/global/qconfig.cpp"
3431 fi
3432
3433 # -----------------------------------------------------------------------------
3434 if [ "$LicenseType" = "Evaluation" ]; then
3435     EVALKEY=qt_qevalkey=$LicenseKeyExt
3436 elif echo "$DEFINES" | grep QT_EVAL >/dev/null 2>&1; then
3437     EVALKEY=qt_qevalkey=
3438 fi
3439
3440 if [ -n "$EVALKEY" ]; then
3441     rm -f "$outpath/src/corelib/global/qconfig_eval.cpp"
3442     cat > "$outpath/src/corelib/global/qconfig_eval.cpp" <<EOF
3443 /* Evaluation license key */
3444 static const volatile char qt_eval_key_data                   [512 + 12] = "$EVALKEY";
3445 EOF
3446     chmod -w "$outpath/src/corelib/global/qconfig_eval.cpp"
3447 fi
3448
3449
3450 # -----------------------------------------------------------------------------
3451 # build qmake
3452 # -----------------------------------------------------------------------------
3453
3454 # symlink includes
3455 if [ -n "$PERL" ] && [ -x "$relpath/bin/syncqt" ]; then
3456     SYNCQT_OPTS=
3457     [ "$CFG_DEV" = "yes" ] && SYNCQT_OPTS="$SYNCQT_OPTS -check-includes"
3458     if [ "$OPT_SHADOW" = "yes" ]; then
3459         "$outpath/bin/syncqt" $SYNCQT_OPTS "$relpath" || exit 1
3460     elif [ "$CFG_DEV" = "yes" ] || [ ! -d $relpath/include ] || [ -d $relpath/.git ]; then
3461         QTDIR="$relpath" perl "$outpath/bin/syncqt" $SYNCQT_OPTS || exit 1
3462     fi
3463 fi
3464
3465 # $1: input variable name (awk regexp)
3466 # $2: optional output variable name
3467 # $3: optional value transformation (sed command)
3468 # relies on $QMAKESPEC, $COMPILER_CONF and $mkfile being set correctly, as the latter
3469 # is where the resulting variable is written to
3470 setBootstrapVariable()
3471 {
3472     getQMakeConf "$1" | echo ${2-$1} = `if [ -n "$3" ]; then sed "$3"; else cat; fi` >> "$mkfile"
3473 }
3474
3475 # build qmake
3476 if true; then ###[ '!' -f "$outpath/bin/qmake" ];
3477     echo "Creating qmake. Please wait..."
3478
3479     OLD_QCONFIG_H=
3480     QCONFIG_H="$outpath/src/corelib/global/qconfig.h"
3481     QMAKE_QCONFIG_H="${QCONFIG_H}.qmake"
3482     if [ -f "$QCONFIG_H" ]; then
3483          OLD_QCONFIG_H=$QCONFIG_H
3484          mv -f "$OLD_QCONFIG_H" "${OLD_QCONFIG_H}.old"
3485     fi
3486
3487     # create temporary qconfig.h for compiling qmake, if it doesn't exist
3488     # when building qmake, we use #defines for the install paths,
3489     # however they are real functions in the library
3490     if [ '!' -f "$QMAKE_QCONFIG_H" ]; then
3491         mkdir -p "$outpath/src/corelib/global"
3492         [ -f "$QCONFIG_H" ] && chmod +w "$QCONFIG_H"
3493         echo "/* All features enabled while building qmake */" >"$QMAKE_QCONFIG_H"
3494     fi
3495
3496     mv -f "$QMAKE_QCONFIG_H" "$QCONFIG_H"
3497
3498     #mkspecs/default is used as a (gasp!) default mkspec so QMAKESPEC needn't be set once configured
3499     rm -rf mkspecs/default
3500     ln -s `echo $XQMAKESPEC | sed "s,^${relpath}/mkspecs/,,"` mkspecs/default
3501     mkdir -p "$outpath/qmake" || exit
3502     # fix makefiles
3503     for mkfile in GNUmakefile Makefile; do
3504         EXTRA_LFLAGS=
3505         EXTRA_CFLAGS=
3506         in_mkfile="${mkfile}.in"
3507         if [ "$mkfile" = "Makefile" ]; then
3508 #           if which qmake >/dev/null 2>&1 && [ -f qmake/qmake.pro ]; then
3509 #               (cd qmake && qmake) >/dev/null 2>&1 && continue
3510 #           fi
3511             in_mkfile="${mkfile}.unix"
3512         fi
3513         in_mkfile="$relpath/qmake/$in_mkfile"
3514         mkfile="$outpath/qmake/$mkfile"
3515         if [ -f "$mkfile" ]; then
3516             [ "$CFG_DEV" = "yes" ] && "$WHICH" chflags >/dev/null 2>&1 && chflags nouchg "$mkfile"
3517             rm -f "$mkfile"
3518         fi
3519         [ -f "$in_mkfile" ] || continue
3520
3521         echo "########################################################################" > "$mkfile"
3522         echo "## This file was autogenerated by configure, all changes will be lost ##" >> "$mkfile"
3523         echo "########################################################################" >> "$mkfile"
3524         EXTRA_OBJS=
3525         EXTRA_SRCS=
3526         EXTRA_CFLAGS="\$(QMAKE_CFLAGS)"
3527         EXTRA_CXXFLAGS="\$(QMAKE_CXXFLAGS)"
3528         EXTRA_LFLAGS="\$(QMAKE_LFLAGS)"
3529
3530         if [ "$PLATFORM" = "irix-cc" ] || [ "$PLATFORM" = "irix-cc-64" ]; then
3531             EXTRA_LFLAGS="$EXTRA_LFLAGS -lm"
3532         fi
3533
3534         [ "$CFG_SILENT" = "yes" ] && CC_TRANSFORM='s,^,\@,' || CC_TRANSFORM=
3535         setBootstrapVariable QMAKE_CC CC "$CC_TRANSFORM"
3536         setBootstrapVariable QMAKE_CXX CXX "$CC_TRANSFORM"
3537         setBootstrapVariable QMAKE_CFLAGS
3538         setBootstrapVariable QMAKE_CXXFLAGS
3539         setBootstrapVariable QMAKE_LFLAGS
3540
3541         if [ $QT_EDITION = "QT_EDITION_OPENSOURCE" ]; then
3542             EXTRA_CFLAGS="$EXTRA_CFLAGS -DQMAKE_OPENSOURCE_EDITION"
3543             EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -DQMAKE_OPENSOURCE_EDITION"
3544         fi
3545         if [ "$CFG_RELEASE_QMAKE" = "yes" ]; then
3546             setBootstrapVariable QMAKE_CFLAGS_RELEASE
3547             setBootstrapVariable QMAKE_CXXFLAGS_RELEASE
3548             EXTRA_CFLAGS="$EXTRA_CFLAGS \$(QMAKE_CFLAGS_RELEASE)"
3549             EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS \$(QMAKE_CXXFLAGS_RELEASE)"
3550         elif [ "$CFG_DEBUG" = "yes" ]; then
3551             setBootstrapVariable QMAKE_CFLAGS_DEBUG
3552             setBootstrapVariable QMAKE_CXXFLAGS_DEBUG
3553             EXTRA_CFLAGS="$EXTRA_CFLAGS \$(QMAKE_CFLAGS_DEBUG)"
3554             EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS \$(QMAKE_CXXFLAGS_DEBUG)"
3555         fi
3556
3557         if [ -n "$RPATH_FLAGS" ] && [ -n "`getQMakeConf 'QMAKE_(LFLAGS_)?RPATH'`" ]; then
3558             setBootstrapVariable "QMAKE_(LFLAGS_)?RPATH" QMAKE_LFLAGS_RPATH
3559             for rpath in $RPATH_FLAGS; do
3560                 EXTRA_LFLAGS="\$(QMAKE_LFLAGS_RPATH)\"$rpath\" $EXTRA_LFLAGS"
3561             done
3562         fi
3563         if [ "$BUILD_ON_MAC" = "yes" ]; then
3564             echo "export MACOSX_DEPLOYMENT_TARGET = 10.6" >> "$mkfile"
3565             echo "CARBON_LFLAGS =-framework ApplicationServices" >>"$mkfile"
3566             echo "CARBON_CFLAGS =-fconstant-cfstrings" >>"$mkfile"
3567             EXTRA_LFLAGS="$EXTRA_LFLAGS \$(CARBON_LFLAGS)"
3568             EXTRA_CFLAGS="$EXTRA_CFLAGS \$(CARBON_CFLAGS)"
3569             EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS \$(CARBON_CFLAGS)"
3570             EXTRA_OBJS="qsettings_mac.o qcore_mac.o"
3571             EXTRA_SRCS="\"$relpath/src/corelib/io/qsettings_mac.cpp\" \"$relpath/src/corelib/kernel/qcore_mac.cpp\""
3572             if [ '!' -z "$CFG_SDK" ]; then
3573                 echo "SDK_LFLAGS =-Wl,-syslibroot,$CFG_SDK" >>"$mkfile"
3574                 echo "SDK_CFLAGS =-isysroot $CFG_SDK" >>"$mkfile"
3575                 EXTRA_CFLAGS="$EXTRA_CFLAGS \$(SDK_CFLAGS)"
3576                 EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS \$(SDK_CFLAGS)"
3577                 EXTRA_LFLAGS="$EXTRA_LFLAGS \$(SDK_LFLAGS)"
3578             fi
3579         fi
3580         if [ '!' -z "$D_FLAGS" ]; then
3581             EXTRA_CFLAGS="$EXTRA_CFLAGS $D_FLAGS"
3582         fi
3583         QMAKE_BIN_DIR="$QT_INSTALL_BINS"
3584         [ -z "$QMAKE_BIN_DIR" ] && QMAKE_BIN_DIR="${QT_INSTALL_PREFIX}/bin"
3585         QMAKE_DATA_DIR="$QT_INSTALL_DATA"
3586         [ -z "$QMAKE_DATA_DIR" ] && QMAKE_DATA_DIR="${QT_INSTALL_PREFIX}"
3587         echo >>"$mkfile"
3588         adjrelpath=`echo "$relpath" | sed 's/ /\\\\\\\\ /g'`
3589         adjoutpath=`echo "$outpath" | sed 's/ /\\\\\\\\ /g'`
3590         adjqmakespec=`echo "$QMAKESPEC" | sed 's/ /\\\\\\\\ /g'`
3591         sed -e "s,@SOURCE_PATH@,$adjrelpath,g" -e "s,@BUILD_PATH@,$adjoutpath,g" \
3592             -e "s,@QMAKE_CFLAGS@,$EXTRA_CFLAGS,g" -e "s,@QMAKE_LFLAGS@,$EXTRA_LFLAGS,g" \
3593             -e "s,@QMAKE_CXXFLAGS@,$EXTRA_CXXFLAGS,g" \
3594             -e "s,@QT_INSTALL_BINS@,\$(INSTALL_ROOT)$QMAKE_BIN_DIR,g" \
3595             -e "s,@QT_INSTALL_DATA@,\$(INSTALL_ROOT)$QMAKE_DATA_DIR,g" \
3596             -e "s,@QMAKE_QTOBJS@,$EXTRA_OBJS,g" -e "s,@QMAKE_QTSRCS@,$EXTRA_SRCS,g" \
3597             -e "s,@QMAKESPEC@,$adjqmakespec,g" -e "s,@QT_VERSION@,$QT_VERSION,g" "$in_mkfile" >>"$mkfile"
3598
3599         if "$WHICH" makedepend >/dev/null 2>&1 && grep 'depend:' "$mkfile" >/dev/null 2>&1; then
3600             (cd "$outpath/qmake" && "$MAKE" -f "$mkfile" depend) >/dev/null 2>&1
3601             sed "s,^.*/\([^/]*.o\):,\1:,g" "$mkfile" >"$mkfile.tmp"
3602             sed "s,$outpath,$adjoutpath,g" "$mkfile.tmp" >"$mkfile"
3603             rm "$mkfile.tmp"
3604         fi
3605     done
3606
3607     QMAKE_BUILD_ERROR=no
3608     (cd "$outpath/qmake"; "$MAKE") || QMAKE_BUILD_ERROR=yes
3609     [ '!' -z "$QCONFIG_H" ] && mv -f "$QCONFIG_H" "$QMAKE_QCONFIG_H" #move qmake's qconfig.h to qconfig.h.qmake
3610     [ '!' -z "$OLD_QCONFIG_H" ] && mv -f "${OLD_QCONFIG_H}.old" "$OLD_QCONFIG_H" #put back qconfig.h
3611     [ "$QMAKE_BUILD_ERROR" = "yes" ] && exit 2
3612 fi # Build qmake
3613
3614 #-------------------------------------------------------------------------------
3615 # Detect pkg-config
3616 #-------------------------------------------------------------------------------
3617 if [ -z "$PKG_CONFIG" ]; then
3618     # See if PKG_CONFIG is set in the mkspec:
3619     PKG_CONFIG=`getXQMakeConf PKG_CONFIG`
3620 fi
3621 if [ -z "$PKG_CONFIG" ]; then
3622     PKG_CONFIG=`"$WHICH" pkg-config 2>/dev/null`
3623 fi
3624
3625 if [ "$CFG_PKGCONFIG" = "no" ]; then
3626     PKG_CONFIG=
3627 elif [ "$CFG_PKGCONFIG" = "force" ]; then
3628     echo >&2 ""
3629     echo >&2 "You have asked to use pkg-config. Please make sure you have"
3630     echo >&2 "a correctly setup pkg-config environment!"
3631     echo >&2 ""
3632 elif [ -n "$PKG_CONFIG" ]; then
3633     # found a pkg-config
3634     if [ "$QT_CROSS_COMPILE" = "yes" ]; then
3635         # when xcompiling, check environment to see if it's actually usable
3636         if [ -z "$PKG_CONFIG_LIBDIR" ]; then
3637             if [ -n "$CFG_SYSROOT" ] && [ -d "$CFG_SYSROOT/usr/lib/pkgconfig" ]; then
3638                 PKG_CONFIG_LIBDIR=$CFG_SYSROOT/usr/lib/pkgconfig:$CFG_SYSROOT/usr/share/pkgconfig
3639                 if [ -n "$GCC_MACHINE_DUMP" ]; then
3640                     PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:$CFG_SYSROOT/usr/lib/$GCC_MACHINE_DUMP/pkgconfig
3641                 fi
3642                 export PKG_CONFIG_LIBDIR
3643                 echo >&2 "Note: PKG_CONFIG_LIBDIR automatically set to $PKG_CONFIG_LIBDIR"
3644             elif [ "$CFG_PKGCONFIG" = "yes" ]; then
3645                 echo >&2 "Error: PKG_CONFIG_LIBDIR has not been set. This could mean"
3646                 echo >&2 "the host's .pc files will be used (even if you set PKG_CONFIG_PATH)."
3647                 echo >&2 "Set this variable to the directory that contains target .pc files"
3648                 echo >&2 "for pkg-config to function correctly when cross-compiling or"
3649                 echo >&2 "use -force-pkg-config to override this test."
3650                 exit 101
3651             else
3652                 PKG_CONFIG=
3653                 echo >&2 "Warning: Disabling pkg-config since PKG_CONFIG_LIBDIR is not set."
3654             fi
3655         fi
3656         if [ -z "$PKG_CONFIG_SYSROOT_DIR" ]; then
3657             if [ -n "$CFG_SYSROOT" ]; then
3658                 PKG_CONFIG_SYSROOT_DIR=$CFG_SYSROOT
3659                 export PKG_CONFIG_SYSROOT_DIR
3660                 echo >&2 "Note: PKG_CONFIG_SYSROOT_DIR automatically set to $PKG_CONFIG_SYSROOT_DIR"
3661             elif [ "$CFG_PKGCONFIG" = "yes" ]; then
3662                 echo >&2 "Error: PKG_CONFIG_SYSROOT_DIR has not been set. Set this variable"
3663                 echo >&2 "to your sysroot for pkg-config to function correctly when cross-compiling"
3664                 echo >&2 "or use -force-pkg-config to override this test."
3665                 exit 101
3666             else
3667                 PKG_CONFIG=
3668                 echo >&2 "Warning: Disabling pkg-config since PKG_CONFIG_SYSROOT_DIR is not set."
3669             fi
3670         fi
3671     fi
3672 elif [ "$CFG_PKGCONFIG" = "yes" ]; then
3673     echo >&2 "Could not detect pkg-config from mkspec or PATH."
3674     exit 101
3675 fi
3676
3677 if [ -z "$PKG_CONFIG" ]; then
3678     QT_CONFIG="$QT_CONFIG no-pkg-config"
3679 fi
3680
3681 #-------------------------------------------------------------------------------
3682 # write out device config before we run the test.
3683 #-------------------------------------------------------------------------------
3684 DEVICE_VARS_OUTFILE="$outpath/mkspecs/qdevice.pri"
3685 if cmp -s "$DEVICE_VARS_FILE" "$DEVICE_VARS_OUTFILE"; then
3686     rm -f "$DEVICE_VARS_FILE"
3687 else
3688     mv -f $DEVICE_VARS_FILE "$DEVICE_VARS_OUTFILE"
3689     DEVICE_VARS_FILE="$DEVICE_VARS_OUTFILE"
3690 fi
3691
3692 #-------------------------------------------------------------------------------
3693 # tests that need qmake
3694 #-------------------------------------------------------------------------------
3695
3696 #-------------------------------------------------------------------------------
3697 # determine the target and host architectures
3698 #-------------------------------------------------------------------------------
3699
3700 # Use config.tests/arch/arch.pro to has the compiler tell us what the target architecture is
3701 OUTFILE=$outpath/arch.result
3702 "$unixtests/arch.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "CFG"
3703 if [ $? -eq 0 ]; then
3704     eval `cat "$OUTFILE"`
3705 else
3706     echo
3707     echo "Could not determine the target architecture!"
3708     echo "Turn on verbose messaging (-v) to see the final report."
3709 fi
3710 rm -f "$OUTFILE" 2>/dev/null
3711 [ -z "$CFG_ARCH" ] && CFG_ARCH="unknown"
3712
3713 if [ "$QMAKESPEC" != "$XQMAKESPEC" ]; then
3714     # Do the same test again, using the host compiler
3715     SYSROOT_FLAG= "$unixtests/arch.test" "$QMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "CFG_HOST"
3716     if [ $? -eq 0 ]; then
3717         eval `cat "$OUTFILE"`
3718     else
3719         echo
3720         echo "Could not determine the host architecture!"
3721         echo "Turn on verbose messaging (-v) to see the final report."
3722     fi
3723     rm -f "$OUTFILE" 2>/dev/null
3724     [ -z "$CFG_HOST_ARCH" ] && CFG_HOST_ARCH="unknown"
3725 else
3726     # not cross compiling, host == target
3727     CFG_HOST_ARCH="$CFG_ARCH"
3728     CFG_HOST_CPUFEATURES="$CFG_CPUFEATURES"
3729 fi
3730 unset OUTFILE
3731
3732 if [ "$OPT_VERBOSE" = "yes" ]; then
3733     echo "System architecture: '$CFG_ARCH'"
3734     echo "Host architecture: '$CFG_HOST_ARCH'"
3735 fi
3736
3737 #-------------------------------------------------------------------------------
3738 # functionality tests
3739 #-------------------------------------------------------------------------------
3740
3741 # Detect C++11 support
3742 if [ "$CFG_CXX11" != "no" ]; then
3743     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/c++11 "C++11" $L_FLAGS $I_FLAGS $l_FLAGS; then
3744         CFG_CXX11="yes"
3745     elif [ "$CFG_CXX11" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
3746         echo "C++11 support cannot be enabled due to functionality tests!"
3747         echo " Turn on verbose messaging (-v) to $0 to see the final report."
3748         echo " If you believe this message is in error you may use the continue"
3749         echo " switch (-continue) to $0 to continue."
3750         exit 101
3751     else
3752         CFG_CXX11="no"
3753     fi
3754 fi
3755
3756 # detect availability of float math.h functions
3757 if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/floatmath "floatmath" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
3758     CFG_USE_FLOATMATH=yes
3759 else
3760     CFG_USE_FLOATMATH=no
3761 fi
3762
3763 # detect sse2 support
3764 if [ "${CFG_SSE2}" = "auto" ]; then
3765     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/sse2 "sse2" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS "-msse2"; then
3766        CFG_SSE2=yes
3767     else
3768        CFG_SSE2=no
3769     fi
3770 fi
3771
3772 # detect sse3 support
3773 if [ "${CFG_SSE3}" = "auto" ]; then
3774     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/sse3 "sse3" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS "-msse3"; then
3775        CFG_SSE3=yes
3776     else
3777        CFG_SSE3=no
3778     fi
3779 fi
3780
3781 # detect ssse3 support
3782 if [ "${CFG_SSSE3}" = "auto" ]; then
3783     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/ssse3 "ssse3" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS "-mssse3"; then
3784        CFG_SSSE3=yes
3785     else
3786        CFG_SSSE3=no
3787     fi
3788 fi
3789
3790 # detect sse4.1 support
3791 if [ "${CFG_SSE4_1}" = "auto" ]; then
3792     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/sse4_1 "sse4_1" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS "-msse4.1"; then
3793        CFG_SSE4_1=yes
3794     else
3795        CFG_SSE4_1=no
3796     fi
3797 fi
3798
3799 # detect sse4.2 support
3800 if [ "${CFG_SSE4_2}" = "auto" ]; then
3801     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/sse4_2 "sse4_2" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS "-msse4.2"; then
3802        CFG_SSE4_2=yes
3803     else
3804        CFG_SSE4_2=no
3805     fi
3806 fi
3807
3808 # detect avx support
3809 if [ "${CFG_AVX}" = "auto" ]; then
3810     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/avx "avx" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS "-mavx"; then
3811        case "$XQMAKESPEC" in
3812            *g++*|*-clang*)
3813                # Some clang versions produce internal compiler errors compiling Qt AVX code
3814                case `$TEST_COMPILER --version` in
3815                    Apple\ clang\ version\ 2*|Apple\ clang\ version\ 3.0*)
3816                        CFG_AVX=no
3817                        if [ "$OPT_VERBOSE" = "yes" ]; then
3818                            echo 'AVX support disabled for blacklisted clang compiler'
3819                        fi
3820                        ;;
3821                    *)
3822                        CFG_AVX=yes
3823                        ;;
3824                esac
3825                ;;
3826            *)
3827                CFG_AVX=yes
3828                ;;
3829        esac
3830     else
3831        CFG_AVX=no
3832     fi
3833 fi
3834
3835 # detect avx2 support
3836 if [ "${CFG_AVX}" = "no" ]; then
3837     CFG_AVX2=no
3838 fi
3839 if [ "${CFG_AVX2}" = "auto" ]; then
3840     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/avx2 "avx2" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS "-march=core-avx2"; then
3841        CFG_AVX2=yes
3842     else
3843        CFG_AVX2=no
3844     fi
3845 fi
3846
3847 # check iWMMXt support
3848 if [ "$CFG_IWMMXT" = "yes" ]; then
3849     "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/iwmmxt "iwmmxt" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS "-mcpu=iwmmxt"
3850     if [ $? != "0" ]; then
3851         echo "The iWMMXt functionality test failed!"
3852         echo " Please make sure your compiler supports iWMMXt intrinsics!"
3853         exit 1
3854     fi
3855 fi
3856
3857 # detect neon support
3858 if [ "$CFG_ARCH" = "arm" ] && [ "${CFG_NEON}" = "auto" ]; then
3859     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/neon "neon" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS "-mfpu=neon"; then
3860         CFG_NEON=yes
3861     else
3862         CFG_NEON=no
3863     fi
3864 elif [ "$CFG_ARCH" != "arm" ]; then
3865     CFG_NEON=no
3866 fi
3867
3868 # detect mips_dsp support
3869 if [ "${CFG_ARCH}" = "mips" ] && [ "${CFG_MIPS_DSP}" = "yes" ]; then
3870   CFG_MIPS_DSP=yes
3871     else
3872   CFG_MIPS_DSP=no
3873 fi
3874
3875 # detect mips_dspr2 support
3876 if [ "${CFG_ARCH}" = "mips" ] && [ "${CFG_MIPS_DSPR2}" = "yes" ]; then
3877   CFG_MIPS_DSPR2=yes
3878     else
3879   CFG_MIPS_DSPR2=no
3880 fi
3881
3882 [ "$XPLATFORM_MINGW" = "yes" ] && QMakeVar add styles "windowsxp windowsvista"
3883
3884 # detect zlib
3885 if [ "$CFG_ZLIB" = "no" ]; then
3886     # Note: Qt no longer support builds without zlib
3887     # So we force a "no" to be "auto" here.
3888     # If you REALLY really need no zlib support, you can still disable
3889     # it by doing the following:
3890     #   add "no-zlib" to mkspecs/qconfig.pri
3891     #   #define QT_NO_COMPRESS (probably by adding to src/corelib/global/qconfig.h)
3892     #
3893     # There's no guarantee that Qt will build under those conditions
3894
3895     CFG_ZLIB=auto
3896     ZLIB_FORCED=yes
3897 fi
3898 if [ "$CFG_ZLIB" = "auto" ]; then
3899     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/zlib "zlib" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
3900        CFG_ZLIB=system
3901     else
3902        CFG_ZLIB=yes
3903     fi
3904 fi
3905
3906 if [ "$CFG_LARGEFILE" = "auto" ]; then
3907     #Large files should be enabled for all Linux systems
3908     CFG_LARGEFILE=yes
3909 fi
3910
3911 if [ "$CFG_GUI" = "no" ]; then
3912     QPA_PLATFORM_GUARD=no
3913 fi
3914
3915 # detect how jpeg should be built
3916 if [ "$CFG_JPEG" = "auto" ]; then
3917     if [ "$CFG_SHARED" = "yes" ]; then
3918         CFG_JPEG=plugin
3919     else
3920         CFG_JPEG=yes
3921     fi
3922 fi
3923 # detect jpeg
3924 if [ "$CFG_LIBJPEG" = "auto" ]; then
3925     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libjpeg "libjpeg" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
3926        CFG_LIBJPEG=system
3927     else
3928        CFG_LIBJPEG=qt
3929     fi
3930 fi
3931
3932 # detect how gif should be built
3933 if [ "$CFG_GIF" = "auto" ]; then
3934     if [ "$CFG_SHARED" = "yes" ]; then
3935         CFG_GIF=plugin
3936     else
3937         CFG_GIF=yes
3938     fi
3939 fi
3940
3941 # detect png
3942 if [ "$CFG_LIBPNG" = "auto" ]; then
3943     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libpng "libpng" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
3944        CFG_LIBPNG=system
3945     else
3946        CFG_LIBPNG=qt
3947     fi
3948 fi
3949
3950 # detect accessibility
3951 if [ "$CFG_ACCESSIBILITY" = "auto" ]; then
3952     CFG_ACCESSIBILITY=yes
3953 fi
3954
3955 if [ "$CFG_EGLFS" = "yes" ]; then
3956     if [ "$CFG_EGL" = "no" ]; then
3957         echo "The EGLFS plugin requires EGL support and cannot be built"
3958         exit 101
3959     fi
3960     if [ "$CFG_OPENGL" != "es2" ]; then
3961         echo "The EGLFS plugin requires OpenGL ES 2 support and cannot be built"
3962         exit 101
3963     fi
3964     CFG_OPENGL="es2"
3965     CFG_EGL=yes
3966 fi
3967
3968 # auto-detect SQL-modules support
3969 for _SQLDR in $CFG_SQL_AVAILABLE; do
3970         case $_SQLDR in
3971         mysql)
3972             if [ "$CFG_SQL_mysql" != "no" ]; then
3973                 [ -z "$CFG_MYSQL_CONFIG" ] && CFG_MYSQL_CONFIG=`"$WHICH" mysql_config`
3974                 if [ -x "$CFG_MYSQL_CONFIG" ]; then
3975                     QT_CFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --include 2>/dev/null`
3976                     QT_LFLAGS_MYSQL_R=`$CFG_MYSQL_CONFIG --libs_r 2>/dev/null`
3977                     QT_LFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --libs 2>/dev/null`
3978                     QT_MYSQL_VERSION=`$CFG_MYSQL_CONFIG --version 2>/dev/null`
3979                     QT_MYSQL_VERSION_MAJOR=`echo $QT_MYSQL_VERSION | cut -d . -f 1`
3980                 fi
3981                 if [ -n "$QT_MYSQL_VERSION" ] && [ "$QT_MYSQL_VERSION_MAJOR" -lt 4 ]; then
3982                     if [ "$CFG_SQL_mysql" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
3983                         echo "This version of MySql is not supported ($QT_MYSQL_VERSION)."
3984                         echo " You need MySql 4 or higher."
3985                         echo " If you believe this message is in error you may use the continue"
3986                         echo " switch (-continue) to $0 to continue."
3987                         exit 101
3988                     else
3989                         CFG_SQL_mysql="no"
3990                         QT_LFLAGS_MYSQL=""
3991                         QT_LFLAGS_MYSQL_R=""
3992                         QT_CFLAGS_MYSQL=""
3993                     fi
3994                 else
3995                     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/mysql_r "MySQL (thread-safe)" $QT_LFLAGS_MYSQL_R $L_FLAGS $QT_CFLAGS_MYSQL $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
3996                         QMakeVar add CONFIG use_libmysqlclient_r
3997                         if [ "$CFG_SQL_mysql" = "auto" ]; then
3998                             CFG_SQL_mysql=plugin
3999                         fi
4000                         QT_LFLAGS_MYSQL="$QT_LFLAGS_MYSQL_R"
4001                     elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/mysql "MySQL (thread-unsafe)" $QT_LFLAGS_MYSQL $L_FLAGS $QT_CFLAGS_MYSQL $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4002                         if [ "$CFG_SQL_mysql" = "auto" ]; then
4003                             CFG_SQL_mysql=plugin
4004                         fi
4005                     else
4006                         if [ "$CFG_SQL_mysql" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4007                             echo "MySQL support cannot be enabled due to functionality tests!"
4008                             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4009                             echo " If you believe this message is in error you may use the continue"
4010                             echo " switch (-continue) to $0 to continue."
4011                             exit 101
4012                         else
4013                             CFG_SQL_mysql=no
4014                             QT_LFLAGS_MYSQL=""
4015                             QT_LFLAGS_MYSQL_R=""
4016                             QT_CFLAGS_MYSQL=""
4017                         fi
4018                     fi
4019                 fi
4020             fi
4021             ;;
4022         psql)
4023             if [ "$CFG_SQL_psql" != "no" ]; then
4024                 # Be careful not to use native pg_config when cross building.
4025                 if [ "$XPLATFORM_MINGW" != "yes" ] && "$WHICH" pg_config >/dev/null 2>&1; then
4026                     QT_CFLAGS_PSQL=`pg_config --includedir 2>/dev/null`
4027                     QT_LFLAGS_PSQL=`pg_config --libdir 2>/dev/null`
4028                 fi
4029                 [ -z "$QT_CFLAGS_PSQL" ] || QT_CFLAGS_PSQL="-I$QT_CFLAGS_PSQL"
4030                 [ -z "$QT_LFLAGS_PSQL" ] || QT_LFLAGS_PSQL="-L$QT_LFLAGS_PSQL"
4031                 # But, respect PSQL_LIBS if set
4032                 [ -z "$PSQL_LIBS" ] || QT_LFLAGS_PSQL="$PSQL_LIBS"
4033                 if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/psql "PostgreSQL" $QT_LFLAGS_PSQL $L_FLAGS $QT_CFLAGS_PSQL $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4034                     if [ "$CFG_SQL_psql" = "auto" ]; then
4035                         CFG_SQL_psql=plugin
4036                     fi
4037                 else
4038                     if [ "$CFG_SQL_psql" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4039                         echo "PostgreSQL support cannot be enabled due to functionality tests!"
4040                         echo " Turn on verbose messaging (-v) to $0 to see the final report."
4041                         echo " If you believe this message is in error you may use the continue"
4042                         echo " switch (-continue) to $0 to continue."
4043                         exit 101
4044                     else
4045                         CFG_SQL_psql=no
4046                         QT_CFLAGS_PSQL=""
4047                         QT_LFLAGS_PSQL=""
4048                     fi
4049                 fi
4050             fi
4051         ;;
4052         odbc)
4053             if [ "$CFG_SQL_odbc" != "no" ]; then
4054                 if ( [ "$BUILD_ON_MAC" != "yes" ] || [ "$XPLATFORM_MINGW" = "yes" ] ) && "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/odbc "ODBC" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4055                     if [ "$CFG_SQL_odbc" = "auto" ]; then
4056                         CFG_SQL_odbc=plugin
4057                     fi
4058                 else
4059                     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/iodbc "iODBC" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4060                         QT_LFLAGS_ODBC="-liodbc"
4061                         if [ "$CFG_SQL_odbc" = "auto" ]; then
4062                             CFG_SQL_odbc=plugin
4063                         fi
4064                     else
4065                         if [ "$CFG_SQL_odbc" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4066                             echo "ODBC support cannot be enabled due to functionality tests!"
4067                             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4068                             echo " If you believe this message is in error you may use the continue"
4069                             echo " switch (-continue) to $0 to continue."
4070                             exit 101
4071                         else
4072                             CFG_SQL_odbc=no
4073                         fi
4074                     fi
4075                 fi
4076             fi
4077             ;;
4078         oci)
4079             if [ "$CFG_SQL_oci" != "no" ]; then
4080                 if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/oci "OCI" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4081                     if [ "$CFG_SQL_oci" = "auto" ]; then
4082                         CFG_SQL_oci=plugin
4083                     fi
4084                 else
4085                     if [ "$CFG_SQL_oci" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4086                         echo "Oracle (OCI) support cannot be enabled due to functionality tests!"
4087                         echo " Turn on verbose messaging (-v) to $0 to see the final report."
4088                         echo " If you believe this message is in error you may use the continue"
4089                         echo " switch (-continue) to $0 to continue."
4090                         exit 101
4091                     else
4092                         CFG_SQL_oci=no
4093                     fi
4094                 fi
4095             fi
4096             ;;
4097         tds)
4098             if [ "$CFG_SQL_tds" != "no" ]; then
4099                 [ -z "$SYBASE" ] || QT_LFLAGS_TDS="-L$SYBASE/lib"
4100                 [ -z "$SYBASE_LIBS" ] || QT_LFLAGS_TDS="$QT_LFLAGS_TDS $SYBASE_LIBS"
4101                 if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/tds "TDS" $QT_LFLAGS_TDS $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4102                     if [ "$CFG_SQL_tds" = "auto" ]; then
4103                         CFG_SQL_tds=plugin
4104                     fi
4105                 else
4106                     if [ "$CFG_SQL_tds" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4107                         echo "TDS support cannot be enabled due to functionality tests!"
4108                         echo " Turn on verbose messaging (-v) to $0 to see the final report."
4109                         echo " If you believe this message is in error you may use the continue"
4110                         echo " switch (-continue) to $0 to continue."
4111                         exit 101
4112                     else
4113                         CFG_SQL_tds=no
4114                     fi
4115                 fi
4116             fi
4117             ;;
4118         db2)
4119             if [ "$CFG_SQL_db2" != "no" ]; then
4120                 if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/db2 "DB2" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4121                     if [ "$CFG_SQL_db2" = "auto" ]; then
4122                         CFG_SQL_db2=plugin
4123                     fi
4124                 else
4125                     if [ "$CFG_SQL_db2" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4126                         echo "ODBC support cannot be enabled due to functionality tests!"
4127                         echo " Turn on verbose messaging (-v) to $0 to see the final report."
4128                         echo " If you believe this message is in error you may use the continue"
4129                         echo " switch (-continue) to $0 to continue."
4130                         exit 101
4131                     else
4132                         CFG_SQL_db2=no
4133                     fi
4134                 fi
4135             fi
4136             ;;
4137         ibase)
4138             if [ "$CFG_SQL_ibase" != "no" ]; then
4139                 if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/ibase "InterBase" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4140                     if [ "$CFG_SQL_ibase" = "auto" ]; then
4141                         CFG_SQL_ibase=plugin
4142                     fi
4143                 else
4144                     if [ "$CFG_SQL_ibase" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4145                         echo "InterBase support cannot be enabled due to functionality tests!"
4146                         echo " Turn on verbose messaging (-v) to $0 to see the final report."
4147                         echo " If you believe this message is in error you may use the continue"
4148                         echo " switch (-continue) to $0 to continue."
4149                         exit 101
4150                     else
4151                         CFG_SQL_ibase=no
4152                     fi
4153                 fi
4154             fi
4155             ;;
4156         sqlite2)
4157             if [ "$CFG_SQL_sqlite2" != "no" ]; then
4158                 if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/sqlite2 "SQLite2" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4159                     if [ "$CFG_SQL_sqlite2" = "auto" ]; then
4160                         CFG_SQL_sqlite2=plugin
4161                     fi
4162                 else
4163                     if [ "$CFG_SQL_sqlite2" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4164                         echo "SQLite2 support cannot be enabled due to functionality tests!"
4165                         echo " Turn on verbose messaging (-v) to $0 to see the final report."
4166                         echo " If you believe this message is in error you may use the continue"
4167                         echo " switch (-continue) to $0 to continue."
4168                         exit 101
4169                     else
4170                         CFG_SQL_sqlite2=no
4171                     fi
4172                 fi
4173             fi
4174             ;;
4175         sqlite)
4176             if [ "$CFG_SQL_sqlite" != "no" ]; then
4177                 SQLITE_AUTODETECT_FAILED="no"
4178                 if [ "$CFG_SQLITE" = "system" ]; then
4179                     if [ -n "$PKG_CONFIG" ]; then
4180                         QT_CFLAGS_SQLITE=`$PKG_CONFIG --cflags sqlite3 2>/dev/null`
4181                         QT_LFLAGS_SQLITE=`$PKG_CONFIG --libs sqlite3 2>/dev/null`
4182                     fi
4183                     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/sqlite "SQLite" $QT_LFLAGS_SQLITE $L_FLAGS $QT_CFLAGS_SQLITE $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4184                         if [ "$CFG_SQL_sqlite" = "auto" ]; then
4185                             CFG_SQL_sqlite=plugin
4186                         fi
4187                         QMAKE_CONFIG="$QMAKE_CONFIG system-sqlite"
4188                     else
4189                         SQLITE_AUTODETECT_FAILED="yes"
4190                         CFG_SQL_sqlite=no
4191                     fi
4192                 elif [ -f "$relpath/src/3rdparty/sqlite/sqlite3.h" ]; then
4193                     if [ "$CFG_SQL_sqlite" = "auto" ]; then
4194                             CFG_SQL_sqlite=plugin
4195                     fi
4196                 else
4197                     SQLITE_AUTODETECT_FAILED="yes"
4198                     CFG_SQL_sqlite=no
4199                 fi
4200
4201                 if [ "$SQLITE_AUTODETECT_FAILED" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4202                     echo "SQLite support cannot be enabled due to functionality tests!"
4203                     echo " Turn on verbose messaging (-v) to $0 to see the final report."
4204                     echo " If you believe this message is in error you may use the continue"
4205                     echo " switch (-continue) to $0 to continue."
4206                     exit 101
4207                 fi
4208             fi
4209             ;;
4210         *)
4211             if [ "$OPT_VERBOSE" = "yes" ]; then
4212                 echo "unknown SQL driver: $_SQLDR"
4213             fi
4214             ;;
4215         esac
4216 done
4217
4218 # auto-detect NIS support
4219 if [ "$CFG_NIS" != "no" ]; then
4220     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/nis "NIS" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4221         CFG_NIS=yes
4222     else
4223         if [ "$CFG_NIS" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4224             echo "NIS support cannot be enabled due to functionality tests!"
4225             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4226             echo " If you believe this message is in error you may use the continue"
4227             echo " switch (-continue) to $0 to continue."
4228             exit 101
4229         else
4230             CFG_NIS=no
4231         fi
4232     fi
4233 fi
4234
4235 # auto-detect CUPS support
4236 if [ "$CFG_CUPS" != "no" ]; then
4237     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/cups "Cups" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4238         CFG_CUPS=yes
4239     else
4240         if [ "$CFG_CUPS" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4241             echo "Cups support cannot be enabled due to functionality tests!"
4242             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4243             echo " If you believe this message is in error you may use the continue"
4244             echo " switch (-continue) to $0 to continue."
4245             exit 101
4246         else
4247             CFG_CUPS=no
4248         fi
4249     fi
4250 fi
4251
4252 # auto-detect iconv(3) support
4253 if [ "$CFG_ICONV" != "no" ]; then
4254     if [ "$XPLATFORM_MINGW" = "yes" ]; then
4255         CFG_ICONV=no
4256     elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" "$OPT_VERBOSE" "$relpath" "$outpath" "config.tests/unix/iconv" "POSIX iconv" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4257         CFG_ICONV=yes
4258     elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" "$OPT_VERBOSE" "$relpath" "$outpath" "config.tests/unix/sun-libiconv" "SUN libiconv" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4259         CFG_ICONV=sun
4260     elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" "$OPT_VERBOSE" "$relpath" "$outpath" "config.tests/unix/gnu-libiconv" "GNU libiconv" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4261         CFG_ICONV=gnu
4262     else
4263         if [ "$CFG_ICONV" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4264             echo "Iconv support cannot be enabled due to functionality tests!"
4265             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4266             echo " If you believe this message is in error you may use the continue"
4267             echo " switch (-continue) to $0 to continue."
4268             exit 101
4269         else
4270             CFG_ICONV=no
4271         fi
4272     fi
4273 fi
4274
4275 # auto-detect libdbus-1 support
4276 if [ "$CFG_DBUS" != "no" ]; then
4277     if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --atleast-version="$MIN_DBUS_1_VERSION" dbus-1 2>/dev/null; then
4278         QT_CFLAGS_DBUS=`$PKG_CONFIG --cflags dbus-1 2>/dev/null`
4279         QT_LIBS_DBUS=`$PKG_CONFIG --libs dbus-1 2>/dev/null`
4280     fi
4281     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/dbus "D-Bus" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QT_CFLAGS_DBUS $QT_LIBS_DBUS $MAC_CONFIG_TEST_COMMANDLINE; then
4282         [ "$CFG_DBUS" = "auto" ] && CFG_DBUS=yes
4283         QMakeVar set QT_CFLAGS_DBUS "$QT_CFLAGS_DBUS"
4284         QMakeVar set QT_LIBS_DBUS "$QT_LIBS_DBUS"
4285     else
4286         if [ "$CFG_DBUS" = "auto" ]; then
4287             CFG_DBUS=no
4288         elif [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4289             # CFG_DBUS is "yes" or "linked" here
4290
4291             echo "The QtDBus module cannot be enabled because libdbus-1 version $MIN_DBUS_1_VERSION was not found."
4292             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4293             echo " If you believe this message is in error you may use the continue"
4294             echo " switch (-continue) to $0 to continue."
4295             exit 101
4296         fi
4297     fi
4298 fi
4299
4300 # auto-detect Glib support
4301 if [ "$CFG_GLIB" != "no" ]; then
4302     if [ -n "$PKG_CONFIG" ]; then
4303         QT_CFLAGS_GLIB=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0 2>/dev/null`
4304         QT_LIBS_GLIB=`$PKG_CONFIG --libs glib-2.0 gthread-2.0 2>/dev/null`
4305     fi
4306     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/glib "Glib" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QT_CFLAGS_GLIB $QT_LIBS_GLIB; then
4307         CFG_GLIB=yes
4308         QMakeVar set QT_CFLAGS_GLIB "$QT_CFLAGS_GLIB"
4309         QMakeVar set QT_LIBS_GLIB "$QT_LIBS_GLIB"
4310     else
4311         if [ "$CFG_GLIB" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4312             echo "Glib support cannot be enabled due to functionality tests!"
4313             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4314             echo " If you believe this message is in error you may use the continue"
4315             echo " switch (-continue) to $0 to continue."
4316             exit 101
4317         else
4318             CFG_GLIB=no
4319         fi
4320     fi
4321 fi
4322
4323 # auto-detect GTK style support
4324 if [ "$CFG_GLIB" = "yes" -a "$CFG_QGTKSTYLE" != "no" ]; then
4325     if [ -n "$PKG_CONFIG" ]; then
4326         QT_CFLAGS_QGTKSTYLE=`$PKG_CONFIG --cflags gtk+-2.0 ">=" 2.10 atk 2>/dev/null`
4327         QT_LIBS_QGTKSTYLE=`$PKG_CONFIG --libs gobject-2.0 2>/dev/null`
4328     fi
4329     if [ -n "$QT_CFLAGS_QGTKSTYLE" ] ; then
4330         CFG_QGTKSTYLE=yes
4331         QT_CONFIG="$QT_CONFIG gtkstyle"
4332         QMakeVar set QT_CFLAGS_QGTKSTYLE "$QT_CFLAGS_QGTKSTYLE"
4333         QMakeVar set QT_LIBS_QGTKSTYLE "$QT_LIBS_QGTKSTYLE"
4334     else
4335         if [ "$CFG_QGTKSTYLE" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4336             echo "Gtk theme support cannot be enabled due to functionality tests!"
4337             echo " Turn on verbose messaging (-v) to $0 to see the fin  al report."
4338             echo " If you believe this message is in error you may use the continue"
4339             echo " switch (-continue) to $0 to continue."
4340             exit 101
4341         else
4342             CFG_QGTKSTYLE=no
4343         fi
4344     fi
4345 elif [ "$CFG_GLIB" = "no" ]; then
4346     CFG_QGTKSTYLE=no
4347 fi
4348
4349 # ### Vestige
4350 if [ "$CFG_GLIB" = "yes" -a "$CFG_GSTREAMER" != "no" ]; then
4351     if [ -n "$PKG_CONFIG" ]; then
4352         QT_CFLAGS_GSTREAMER=`$PKG_CONFIG --cflags gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
4353         QT_LIBS_GSTREAMER=`$PKG_CONFIG --libs gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
4354     fi
4355     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/gstreamer "GStreamer" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QT_CFLAGS_GSTREAMER $QT_LIBS_GSTREAMER; then
4356         CFG_GSTREAMER=yes
4357         QMakeVar set QT_CFLAGS_GSTREAMER "$QT_CFLAGS_GSTREAMER"
4358         QMakeVar set QT_LIBS_GSTREAMER "$QT_LIBS_GSTREAMER"
4359     else
4360         if [ "$CFG_GSTREAMER" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4361             echo "Gstreamer support cannot be enabled due to functionality tests!"
4362             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4363             echo " If you believe this message is in error you may use the continue"
4364             echo " switch (-continue) to $0 to continue."
4365             exit 101
4366         else
4367             CFG_GSTREAMER=no
4368         fi
4369     fi
4370 elif [ "$CFG_GLIB" = "no" ]; then
4371     CFG_GSTREAMER=no
4372 fi
4373
4374 # auto-detect libicu support
4375 if [ "$CFG_ICU" != "no" ]; then
4376     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/icu "ICU" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4377         [ "$CFG_ICU" = "auto" ] && CFG_ICU=yes
4378     else
4379         if [ "$CFG_ICU" = "auto" ]; then
4380             CFG_ICU=no
4381         elif [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4382             # CFG_ICU is "yes"
4383
4384             echo "The ICU library support cannot be enabled."
4385             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4386             echo " If you believe this message is in error you may use the continue"
4387             echo " switch (-continue) to $0 to continue."
4388             exit 101
4389         fi
4390     fi
4391 fi
4392
4393 # Auto-detect PulseAudio support
4394 if [ "$CFG_PULSEAUDIO" != "no" ]; then
4395     if [ -n "$PKG_CONFIG" ]; then
4396         QT_CFLAGS_PULSEAUDIO=`$PKG_CONFIG --cflags libpulse '>=' 0.9.10 libpulse-mainloop-glib 2>/dev/null`
4397         QT_LIBS_PULSEAUDIO=`$PKG_CONFIG --libs libpulse '>=' 0.9.10 libpulse-mainloop-glib 2>/dev/null`
4398     fi
4399     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/pulseaudio "PulseAudio" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QT_CFLAGS_PULSEAUDIO $QT_LIBS_PULSEAUDIO; then
4400         CFG_PULSEAUDIO=yes
4401         QMakeVar set QT_CFLAGS_PULSEAUDIO "$QT_CFLAGS_PULSEAUDIO"
4402         QMakeVar set QT_LIBS_PULSEAUDIO "$QT_LIBS_PULSEAUDIO"
4403     else
4404         if [ "$CFG_PULSEAUDIO" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4405             echo "PulseAudio support cannot be enabled due to functionality tests!"
4406             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4407             echo " If you believe this message is in error you may use the continue"
4408             echo " switch (-continue) to $0 to continue."
4409             exit 101
4410         else
4411             CFG_PULSEAUDIO=no
4412         fi
4413     fi
4414 fi
4415
4416 # X11/MINGW OpenGL
4417 if [ "$XPLATFORM_MINGW" = "yes" ]; then
4418     # auto-detect OpenGL support (es2 = OpenGL ES 2.x)
4419     if [ "$CFG_GUI" = "no" ]; then
4420         if [ "$CFG_OPENGL" = "auto" ]; then
4421             CFG_OPENGL=no
4422         fi
4423         if [ "$CFG_OPENGL" != "no" ]; then
4424             echo "OpenGL enabled, but GUI disabled."
4425             echo " You might need to either enable the GUI or disable OpenGL"
4426             exit 1
4427         fi
4428     fi
4429     if [ "$CFG_OPENGL" = "auto" ] || [ "$CFG_OPENGL" = "yes" ]; then
4430         if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/opengl "OpenGL" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4431             CFG_OPENGL=desktop
4432         elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles2 "OpenGL ES 2.x" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4433             CFG_OPENGL=es2
4434         else
4435             if [ "$CFG_OPENGL" = "yes" ]; then
4436                 echo "All the OpenGL functionality tests failed!"
4437                 echo " You might need to modify the include and library search paths by editing"
4438                 echo " QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in"
4439                 echo " ${XQMAKESPEC}."
4440                 exit 1
4441             fi
4442             CFG_OPENGL=no
4443         fi
4444         case "$PLATFORM" in
4445         hpux*)
4446             # HP-UX have buggy glx headers; check if we really need to define the GLXFBConfig struct.
4447             if [ "$CFG_OPENGL" = "desktop" ]; then
4448                 "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/glxfbconfig "OpenGL" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS
4449                 if [ $? != "0" ]; then
4450                     QMakeVar add DEFINES QT_DEFINE_GLXFBCONFIG_STRUCT
4451                 fi
4452             fi
4453             ;;
4454         *)
4455             ;;
4456         esac
4457     elif [ "$CFG_OPENGL" = "es2" ]; then
4458         #OpenGL ES 2.x
4459         "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles2 "OpenGL ES 2.x" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS
4460         if [ $? != "0" ]; then
4461             echo "The OpenGL ES 2.0 functionality test failed!"
4462             echo " You might need to modify the include and library search paths by editing"
4463             echo " QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in"
4464             echo " ${XQMAKESPEC}."
4465             exit 1
4466         fi
4467     elif [ "$CFG_OPENGL" = "desktop" ]; then
4468         # Desktop OpenGL support
4469         "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/opengl "OpenGL" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS
4470         if [ $? != "0" ]; then
4471             echo "The OpenGL functionality test failed!"
4472             echo " You might need to modify the include and library search paths by editing"
4473             echo " QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in"
4474             echo " ${XQMAKESPEC}."
4475             exit 1
4476         fi
4477         case "$PLATFORM" in
4478         hpux*)
4479             # HP-UX have buggy glx headers; check if we really need to define the GLXFBConfig struct.
4480             "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/glxfbconfig "OpenGL" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS
4481             if [ $? != "0" ]; then
4482                 QMakeVar add DEFINES QT_DEFINE_GLXFBCONFIG_STRUCT
4483             fi
4484             ;;
4485         *)
4486             ;;
4487         esac
4488     fi
4489 fi # X11/MINGW OpenGL
4490
4491 if [ "$BUILD_ON_MAC" = "yes" ]; then
4492     if [ "$CFG_PHONON" != "no" ]; then
4493         # Always enable Phonon (unless it was explicitly disabled)
4494         CFG_PHONON=yes
4495     fi
4496
4497     if [ "$CFG_COREWLAN" = "auto" ]; then
4498         if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/mac/corewlan "CoreWlan" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4499             CFG_COREWLAN=yes
4500         else
4501             CFG_COREWLAN=no
4502         fi
4503     fi
4504 fi
4505
4506 # auto-detect OpenGL support (es2 = OpenGL ES 2.x)
4507 if [ "$CFG_OPENGL" = "auto" ] || [ "$CFG_OPENGL" = "yes" ]; then
4508     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengldesktop "OpenGL" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4509         CFG_OPENGL=desktop
4510     elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles2 "OpenGL ES 2.x" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4511         CFG_OPENGL=es2
4512     else
4513         if [ "$CFG_OPENGL" = "yes" ]; then
4514             echo "All the OpenGL functionality tests failed!"
4515             echo " You might need to modify the include and library search paths by editing"
4516             echo " QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in"
4517             echo " ${XQMAKESPEC}."
4518             exit 1
4519         fi
4520         CFG_OPENGL=no
4521     fi
4522 elif [ "$CFG_OPENGL" = "es2" ]; then
4523     #OpenGL ES 2.x
4524     if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists glesv2 2>/dev/null; then
4525         QMAKE_INCDIR_OPENGL_ES2=`$PKG_CONFIG --cflags-only-I glesv2 2>/dev/null | sed -e 's,^-I,,g' -e 's, -I, ,g'`
4526         QMAKE_LIBDIR_OPENGL_ES2=`$PKG_CONFIG --libs-only-L glesv2 2>/dev/null | sed -e 's,^-L,,g' -e 's, -L, ,g'`
4527         QMAKE_LIBS_OPENGL_ES2=`$PKG_CONFIG --libs glesv2 2>/dev/null`
4528         QMAKE_CFLAGS_OPENGL_ES2=`$PKG_CONFIG --cflags glesv2 2>/dev/null`
4529         QMakeVar set QMAKE_INCDIR_OPENGL_ES2 "$QMAKE_INCDIR_OPENGL_ES2"
4530         QMakeVar set QMAKE_LIBDIR_OPENGL_ES2 "$QMAKE_LIBDIR_OPENGL_ES2"
4531         QMakeVar set QMAKE_LIBS_OPENGL_ES2 "$QMAKE_LIBS_OPENGL_ES2"
4532     fi
4533
4534     "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles2 "OpenGL ES 2.x" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QMAKE_LIBS_OPENGL_ES2 $QMAKE_CFLAGS_OPENGL_ES2
4535     if [ $? != "0" ]; then
4536         echo "The OpenGL ES 2.0 functionality test failed!"
4537         echo " You might need to modify the include and library search paths by editing"
4538         echo " QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in"
4539         echo " ${XQMAKESPEC}."
4540         exit 1
4541     fi
4542 elif [ "$CFG_OPENGL" = "desktop" ]; then
4543     # Desktop OpenGL support
4544     "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengldesktop "OpenGL" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS
4545     if [ $? != "0" ]; then
4546         echo "The OpenGL functionality test failed!"
4547         echo " You might need to modify the include and library search paths by editing"
4548         echo " QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in"
4549         echo " ${XQMAKESPEC}."
4550         exit 1
4551     fi
4552 fi
4553
4554 # auto-detect FontConfig support
4555 if [ "$CFG_FONTCONFIG" != "no" ]; then
4556     if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists fontconfig --exists freetype2 2>/dev/null; then
4557         QT_CFLAGS_FONTCONFIG=`$PKG_CONFIG --cflags fontconfig --cflags freetype2 2>/dev/null`
4558         QT_LIBS_FONTCONFIG=`$PKG_CONFIG --libs fontconfig --libs freetype2 2>/dev/null`
4559     else
4560         QT_CFLAGS_FONTCONFIG=
4561         QT_LIBS_FONTCONFIG="-lfreetype -lfontconfig"
4562     fi
4563     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/fontconfig "FontConfig" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QT_CFLAGS_FONTCONFIG $QT_LIBS_FONTCONFIG; then
4564         QT_CONFIG="$QT_CONFIG fontconfig"
4565         QMakeVar set QMAKE_CFLAGS_FONTCONFIG "$QT_CFLAGS_FONTCONFIG"
4566         QMakeVar set QMAKE_LIBS_FONTCONFIG "$QT_LIBS_FONTCONFIG"
4567         CFG_FONTCONFIG=yes
4568         CFG_LIBFREETYPE=system
4569     else
4570         CFG_FONTCONFIG=no
4571     fi
4572
4573 fi
4574
4575 # Save these for a check later
4576 ORIG_CFG_XCB="$CFG_XCB"
4577 ORIG_CFG_EGLFS="$CFG_EGLFS"
4578 ORIG_CFG_DIRECTFB="$CFG_DIRECTFB"
4579
4580 if [ "$CFG_LIBUDEV" != "no" ]; then
4581     if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists libudev 2>/dev/null; then
4582         QMAKE_INCDIR_LIBUDEV=`$PKG_CONFIG --cflags-only-I libudev 2>/dev/null | sed -e 's,^-I,,g' -e 's, -I, ,g'`
4583         QMAKE_LIBS_LIBUDEV=`$PKG_CONFIG --libs libudev 2>/dev/null`
4584         QMakeVar set QMAKE_INCDIR_LIBUDEV "$QMAKE_INCDIR_LIBUDEV"
4585         QMakeVar set QMAKE_LIBS_LIBUDEV "$QMAKE_LIBS_LIBUDEV"
4586     fi
4587     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libudev "libudev" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QMAKE_INCDIR_LIBUDEV $QMAKE_LIBS_LIBUDEV; then
4588         CFG_LIBUDEV=yes
4589         QT_CONFIG="$QT_CONFIG libudev"
4590     elif [ "$CFG_LIBUDEV" = "yes" ]; then
4591         echo "The libudev functionality test failed!"
4592         exit 1
4593     else
4594         CFG_LIBUDEV=no
4595         QMakeVar add DEFINES QT_NO_LIBUDEV
4596     fi
4597 fi
4598
4599 if [ "$CFG_EVDEV" != "no" ]; then
4600     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/evdev "evdev" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4601         CFG_EVDEV=yes
4602         QT_CONFIG="$QT_CONFIG evdev"
4603     elif [ "$CFG_EVDEV" = "yes" ]; then
4604         echo "The evdev functionality test failed!"
4605         exit 1
4606     else
4607         CFG_EVDEV=no
4608         QMakeVar add DEFINES QT_NO_EVDEV
4609     fi
4610 fi
4611
4612 # Check we actually have X11 :-)
4613 if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xlib "XLib" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4614     QT_CONFIG="$QT_CONFIG xlib"
4615 fi
4616
4617 # auto-detect Xrender support
4618 if [ "$CFG_XRENDER" != "no" ]; then
4619     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xrender "Xrender" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4620         CFG_XRENDER=yes
4621         QT_CONFIG="$QT_CONFIG xrender"
4622     else
4623         if [ "$CFG_XRENDER" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4624             echo "Xrender support cannot be enabled due to functionality tests!"
4625             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4626             echo " If you believe this message is in error you may use the continue"
4627             echo " switch (-continue) to $0 to continue."
4628             exit 101
4629         else
4630             CFG_XRENDER=no
4631         fi
4632     fi
4633 fi
4634
4635 if [ "$CFG_XCB" != "no" ]; then
4636     if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists "xcb >= 1.5" 2>/dev/null; then
4637         QMAKE_CFLAGS_XCB="`$PKG_CONFIG --cflags xcb 2>/dev/null`"
4638         QMAKE_LIBS_XCB="`$PKG_CONFIG --libs xcb 2>/dev/null`"
4639     fi
4640     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/qpa/xcb "xcb" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QMAKE_CFLAGS_XCB $QMAKE_LIBS_XCB; then
4641         CFG_XCB=yes
4642         if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/qpa/xcb-render "xcb-render" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QMAKE_CFLAGS_XCB $QMAKE_LIBS_XCB; then
4643             QT_CONFIG="$QT_CONFIG xcb-render"
4644         fi
4645
4646         if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/qpa/xcb-poll-for-queued-event "xcb-poll-for-queued-event" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QMAKE_CFLAGS_XCB $QMAKE_LIBS_XCB; then
4647             CFG_XCB_LIMITED=no
4648             QT_CONFIG="$QT_CONFIG xcb-poll-for-queued-event"
4649         fi
4650
4651         if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/qpa/xcb-xlib "xcb-xlib" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QMAKE_CFLAGS_XCB $QMAKE_LIBS_XCB; then
4652             QT_CONFIG="$QT_CONFIG xcb-xlib"
4653         fi
4654
4655         if [ "$XPLATFORM_MAEMO" = "yes" ]; then
4656             # auto-detect XInput2/Xinput support
4657             if [ "$CFG_XINPUT2" != "no" ]; then
4658                 if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xinput2 "XInput2" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4659                     CFG_XINPUT2=yes
4660                     CFG_XINPUT=no
4661                 else
4662                     if [ "$CFG_XINPUT2" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4663                         echo "XInput2 support cannot be enabled due to functionality tests!"
4664                         echo " Turn on verbose messaging (-v) to $0 to see the final report."
4665                         echo " If you believe this message is in error you may use the continue"
4666                         echo " switch (-continue) to $0 to continue."
4667                         exit 101
4668                     else
4669                         CFG_XINPUT2=no
4670                     fi
4671                 fi
4672             fi
4673         fi
4674     else
4675         if [ "$CFG_XCB" = "yes" ]; then
4676             echo "The XCB test failed!"
4677             echo " You might need to install dependency packages."
4678             echo " See src/plugins/platforms/xcb/README."
4679             exit 1
4680         fi
4681         CFG_XCB=no
4682         QMakeVar add DEFINES QT_NO_XCB
4683     fi
4684 fi
4685
4686 if [ "$CFG_DIRECTFB" != "no" ]; then
4687     if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists directfb 2>/dev/null; then
4688         QMAKE_CFLAGS_DIRECTFB=`$PKG_CONFIG --cflags directfb 2>/dev/null`
4689         QMAKE_LIBS_DIRECTFB=`$PKG_CONFIG --libs directfb 2>/dev/null`
4690         if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/directfb" "DirectFB" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QMAKE_CFLAGS_DIRECTFB $QMAKE_LIBS_DIRECTFB; then
4691             CFG_DIRECTFB=yes
4692         elif [ "$CFG_DIRECTFB" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4693             echo " DirectFB support cannot be enabled due to functionality tests!"
4694             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4695             echo " If you believe this message is in error you may use the continue"
4696             echo " switch (-continue) to $0 to continue."
4697             exit 101
4698         else
4699             CFG_DIRECTFB=no
4700         fi
4701     else
4702         CFG_DIRECTFB=no
4703     fi
4704 fi
4705
4706 # Detect libxkbcommon
4707 if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists xkbcommon 2>/dev/null; then
4708     QMAKE_CFLAGS_XKBCOMMON="`$PKG_CONFIG --cflags xkbcommon 2>/dev/null`"
4709     QMAKE_LIBS_XKBCOMMON="`$PKG_CONFIG --libs xkbcommon 2>/dev/null`"
4710     QMAKE_CFLAGS_XCB="$QMAKE_CFLAGS_XCB $QMAKE_CFLAGS_XKBCOMMON"
4711     QMAKE_LIBS_XCB="$QMAKE_LIBS_XCB $QMAKE_LIBS_XKBCOMMON"
4712 else
4713     QMAKE_DEFINES_XCB=QT_NO_XCB_XKB
4714 fi
4715
4716 # EGL Support
4717 if [ "$CFG_EGL" != "no" ] && [ "$CFG_OPENGL" != "desktop" ]; then
4718     if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists egl 2>/dev/null; then
4719         QMAKE_INCDIR_EGL=`$PKG_CONFIG --cflags-only-I egl 2>/dev/null | sed -e 's,^-I,,g' -e 's, -I, ,g'`
4720         QMAKE_LIBS_EGL=`$PKG_CONFIG --libs egl 2>/dev/null`
4721         QMAKE_CFLAGS_EGL=`$PKG_CONFIG --cflags egl 2>/dev/null`
4722         QMakeVar set QMAKE_INCDIR_EGL "$QMAKE_INCDIR_EGL"
4723         QMakeVar set QMAKE_LIBS_EGL "$QMAKE_LIBS_EGL"
4724     fi       # detect EGL support
4725     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/qpa/egl" "EGL" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $QMAKE_CFLAGS_EGL $QMAKE_LIBS_EGL; then
4726         CFG_EGL=yes
4727     elif [ "$CFG_EGL" = "yes" ]; then
4728         echo " The EGL functionality test failed; EGL is required by some QPA plugins to manage contexts & surfaces."
4729         echo " You might need to modify the include and library search paths by editing"
4730         echo " QMAKE_INCDIR_EGL, QMAKE_LIBDIR_EGL and QMAKE_LIBS_EGL in ${XQMAKESPEC}."
4731         exit 1
4732     else
4733         CFG_EGL=no
4734     fi
4735 elif [ "$CFG_OPENGL" = "desktop" ]; then
4736     if [ "$CFG_EGL" = "yes" ]; then
4737         echo "EGL support was requested but Qt is being configured for desktop OpenGL."
4738         echo "Either disable EGL support or enable OpenGL ES support."
4739         exit 101
4740     fi
4741     CFG_EGL=no
4742 fi
4743
4744 if [ "$CFG_EGLFS" != "no" ]; then
4745     if [ "$CFG_OPENGL" = "es2" ] && [ "$XPLATFORM_QNX" = "no" ]; then
4746         CFG_EGLFS="$CFG_EGL"
4747     else
4748         CFG_EGLFS="no"
4749     fi
4750 fi
4751
4752 # Determine the default QPA platform
4753 if [ -z "$QT_QPA_DEFAULT_PLATFORM" ]; then
4754     # check the mkspec
4755     QT_QPA_DEFAULT_PLATFORM=`getXQMakeConf QT_QPA_DEFAULT_PLATFORM`
4756     if [ -z "$QT_QPA_DEFAULT_PLATFORM" ]; then
4757         if [ "$BUILD_ON_MAC" = "yes" ]; then
4758             QT_QPA_DEFAULT_PLATFORM="cocoa"
4759         elif [ "$UNAME_SYSTEM" = "QNX" ]; then
4760             QT_QPA_DEFAULT_PLATFORM="qnx"
4761         else
4762             QT_QPA_DEFAULT_PLATFORM="xcb"
4763         fi
4764     fi
4765 fi
4766
4767 if [ -n "$QMAKE_CFLAGS_XCB" ] || [ -n "$QMAKE_LIBS_XCB" ]; then
4768     QMakeVar set QMAKE_CFLAGS_XCB "$QMAKE_CFLAGS_XCB"
4769     QMakeVar set QMAKE_LIBS_XCB "$QMAKE_LIBS_XCB"
4770     QMakeVar set QMAKE_DEFINES_XCB "$QMAKE_DEFINES_XCB"
4771 fi
4772 if [ "$CFG_DIRECTFB" = "yes" ]; then
4773     QT_CONFIG="$QT_CONFIG directfb"
4774     QMakeVar set QMAKE_CFLAGS_DIRECTFB "$QMAKE_CFLAGS_DIRECTFB"
4775     QMakeVar set QMAKE_LIBS_DIRECTFB "$QMAKE_LIBS_DIRECTFB"
4776 fi
4777
4778 if [ "$BUILD_ON_MAC" = "yes" ]; then
4779     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/mac/coreservices "CoreServices" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4780         QT_CONFIG="$QT_CONFIG coreservices"
4781     else
4782         QMakeVar add DEFINES QT_NO_CORESERVICES
4783     fi
4784 fi
4785
4786 if [ "$BUILD_ON_MAC" = "no" ] && [ "$XPLATFORM_MINGW" = "no" ] && [ "$XPLATFORM_QNX" = "no" ]; then
4787     if [ "$CFG_XCB" = "no" ] && [ "$CFG_EGLFS" = "no" ] && [ "$CFG_DIRECTFB" = "no" ]; then
4788         if [ "$QPA_PLATFORM_GUARD" = "yes" ] &&
4789             ( [ "$ORIG_CFG_XCB" = "auto" ] || [ "$ORIG_CFG_EGLFS" = "auto" ] || [ "$ORIG_CFG_DIRECTFB" = "auto" ] ); then
4790         echo "No QPA platform plugin enabled!"
4791         echo " If you really want to build without a QPA platform plugin you must pass"
4792         echo " -no-qpa-platform-guard to configure. Doing this will"
4793         echo " produce a Qt that can not run GUI applications."
4794         echo " The dependencies needed for xcb to build are listed in"
4795         echo " src/plugins/platforms/xcb/README"
4796         exit 1
4797     fi
4798 fi
4799     fi
4800
4801 [ "$XPLATFORM_MINGW" = "yes" ] && [ "$CFG_PHONON" != "no" ] && CFG_PHONON="yes"
4802
4803 # freetype support
4804 [ "$XPLATFORM_MINGW" = "yes" ] && [ "$CFG_LIBFREETYPE" = "auto" ] && CFG_LIBFREETYPE=no
4805 if [ "$CFG_LIBFREETYPE" = "auto" ]; then
4806     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/freetype "FreeType" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4807         CFG_LIBFREETYPE=system
4808     else
4809         CFG_LIBFREETYPE=yes
4810     fi
4811 fi
4812
4813 if ! "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/stl "STL" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS &&
4814     [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4815     echo "STL functionality check failed! Cannot build Qt with this STL library."
4816     echo " Turn on verbose messaging (-v) to $0 to see the final report."
4817     exit 101
4818 fi
4819
4820
4821 # detect POSIX clock_gettime()
4822 if [ "$CFG_CLOCK_GETTIME" = "auto" ]; then
4823     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/clock-gettime "POSIX clock_gettime()" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4824         CFG_CLOCK_GETTIME=yes
4825     else
4826         CFG_CLOCK_GETTIME=no
4827     fi
4828 fi
4829
4830 # detect POSIX monotonic clocks
4831 if [ "$CFG_CLOCK_GETTIME" = "yes" ] && [ "$CFG_CLOCK_MONOTONIC" = "auto" ]; then
4832     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/clock-monotonic "POSIX Monotonic Clock" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4833         CFG_CLOCK_MONOTONIC=yes
4834     else
4835         CFG_CLOCK_MONOTONIC=no
4836     fi
4837 elif [ "$CFG_CLOCK_GETTIME" = "no" ]; then
4838     CFG_CLOCK_MONOTONIC=no
4839 fi
4840
4841 # detect mremap
4842 if [ "$CFG_MREMAP" = "auto" ]; then
4843     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/mremap "mremap" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4844         CFG_MREMAP=yes
4845     else
4846         CFG_MREMAP=no
4847     fi
4848 fi
4849
4850 # find if the platform provides getaddrinfo (ipv6 dns lookups)
4851 if [ "$CFG_GETADDRINFO" != "no" ]; then
4852     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/getaddrinfo "getaddrinfo" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4853         CFG_GETADDRINFO=yes
4854     else
4855         if [ "$CFG_GETADDRINFO" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4856             echo "getaddrinfo support cannot be enabled due to functionality tests!"
4857             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4858             echo " If you believe this message is in error you may use the continue"
4859             echo " switch (-continue) to $0 to continue."
4860             exit 101
4861         else
4862             CFG_GETADDRINFO=no
4863         fi
4864     fi
4865 fi
4866
4867 # find if the platform provides inotify
4868 if [ "$CFG_INOTIFY" != "no" ]; then
4869     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/inotify "inotify" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4870         CFG_INOTIFY=yes
4871     else
4872         if [ "$CFG_INOTIFY" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4873             echo "inotify support cannot be enabled due to functionality tests!"
4874             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4875             echo " If you believe this message is in error you may use the continue"
4876             echo " switch (-continue) to $0 to continue."
4877             exit 101
4878         else
4879             CFG_INOTIFY=no
4880         fi
4881     fi
4882 fi
4883
4884 # find if the platform provides if_nametoindex (ipv6 interface name support)
4885 if [ "$CFG_IPV6IFNAME" != "no" ]; then
4886     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/ipv6ifname "IPv6 interface name" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4887         CFG_IPV6IFNAME=yes
4888     else
4889         if [ "$CFG_IPV6IFNAME" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4890             echo "IPv6 interface name support cannot be enabled due to functionality tests!"
4891             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4892             echo " If you believe this message is in error you may use the continue"
4893             echo " switch (-continue) to $0 to continue."
4894             exit 101
4895         else
4896             CFG_IPV6IFNAME=no
4897         fi
4898     fi
4899 fi
4900
4901 # find if the platform provides getifaddrs (network interface enumeration)
4902 if [ "$CFG_GETIFADDRS" != "no" ]; then
4903     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/getifaddrs "getifaddrs" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4904         CFG_GETIFADDRS=yes
4905     else
4906         if [ "$CFG_GETIFADDRS" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4907             echo "getifaddrs support cannot be enabled due to functionality tests!"
4908             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4909             echo " If you believe this message is in error you may use the continue"
4910             echo " switch (-continue) to $0 to continue."
4911             exit 101
4912         else
4913             CFG_GETIFADDRS=no
4914         fi
4915     fi
4916 fi
4917
4918 # detect OpenSSL
4919 if [ "$CFG_OPENSSL" != "no" ]; then
4920     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/openssl "OpenSSL" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
4921         if [ "$CFG_OPENSSL" = "auto" ]; then
4922             CFG_OPENSSL=yes
4923         fi
4924     else
4925         if ( [ "$CFG_OPENSSL" = "yes" ] || [ "$CFG_OPENSSL" = "linked" ] ) && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4926             echo "OpenSSL support cannot be enabled due to functionality tests!"
4927             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4928             echo " If you believe this message is in error you may use the continue"
4929             echo " switch (-continue) to $0 to continue."
4930             exit 101
4931         else
4932             CFG_OPENSSL=no
4933         fi
4934     fi
4935 fi
4936
4937 # detect PCRE
4938 if [ "$CFG_PCRE" != "qt" ]; then
4939     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/pcre "PCRE" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4940         CFG_PCRE=system
4941     else
4942         if [ "$CFG_PCRE" = "system" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4943             echo "PCRE support cannot be enabled due to functionality tests!"
4944             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4945             echo " If you believe this message is in error you may use the continue"
4946             echo " switch (-continue) to $0 to continue."
4947             exit 101
4948         else
4949             CFG_PCRE=qt
4950         fi
4951     fi
4952 fi
4953
4954 # detect OpenVG support
4955 if [ "$CFG_OPENVG" != "no" ]; then
4956     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/openvg" "OpenVG" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $CONFIG_ARG; then
4957         if [ "$CFG_OPENVG" = "auto" ]; then
4958             CFG_OPENVG=yes
4959         fi
4960     elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG openvg_on_opengl" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/openvg" "OpenVG" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $CONFIG_ARG; then
4961         if [ "$CFG_OPENVG" = "auto" ]; then
4962             CFG_OPENVG=yes
4963         fi
4964         CFG_OPENVG_ON_OPENGL=yes
4965     elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG lower_case_includes" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/openvg" "OpenVG (lc includes)" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $CONFIG_ARG; then
4966         if [ "$CFG_OPENVG" = "auto" ]; then
4967             CFG_OPENVG=yes
4968         fi
4969         CFG_OPENVG_LC_INCLUDES=yes
4970     elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG openvg_on_opengl lower_case_includes" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/openvg" "OpenVG (lc includes)" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $CONFIG_ARG; then
4971         if [ "$CFG_OPENVG" = "auto" ]; then
4972             CFG_OPENVG=yes
4973         fi
4974         CFG_OPENVG_LC_INCLUDES=yes
4975         CFG_OPENVG_ON_OPENGL=yes
4976     else
4977         if [ "$CFG_OPENVG" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
4978             echo "$CFG_OPENVG was specified for OpenVG but cannot be enabled due to functionality tests!"
4979             echo " Turn on verbose messaging (-v) to $0 to see the final report."
4980             echo " If you believe this message is in error you may use the continue"
4981             echo " switch (-continue) to $0 to continue."
4982             exit 101
4983         else
4984             CFG_OPENVG=no
4985         fi
4986     fi
4987     if [ "$CFG_OPENVG" = "yes" ] && "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/shivavg" "ShivaVG" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS $CONFIG_ARG; then
4988         CFG_OPENVG_SHIVA=yes
4989     fi
4990 fi
4991
4992 if [ "$CFG_ALSA" = "auto" ]; then
4993     if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/alsa "alsa" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
4994         CFG_ALSA=yes
4995     else
4996         CFG_ALSA=no
4997     fi
4998 fi
4999
5000 if [ "$CFG_JAVASCRIPTCORE_JIT" = "yes" ] || [ "$CFG_JAVASCRIPTCORE_JIT" = "auto" ]; then 
5001     if [ "$CFG_ARCH" = "arm" ]; then
5002        "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/javascriptcore-jit "javascriptcore-jit" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS
5003         if [ $? != "0" ]; then
5004            CFG_JAVASCRIPTCORE_JIT=no
5005         fi
5006     else
5007         case "$XPLATFORM" in
5008             linux-icc*)
5009                 CFG_JAVASCRIPTCORE_JIT=no
5010                 ;;
5011         esac
5012     fi
5013 fi
5014
5015 if [ "$CFG_JAVASCRIPTCORE_JIT" = "yes" ]; then
5016     QMakeVar set JAVASCRIPTCORE_JIT yes
5017 elif [ "$CFG_JAVASCRIPTCORE_JIT" = "no" ]; then
5018     QMakeVar set JAVASCRIPTCORE_JIT no
5019 fi
5020
5021 if [ "$CFG_AUDIO_BACKEND" = "auto" ]; then
5022     CFG_AUDIO_BACKEND=yes
5023 fi
5024
5025 if [ "$CFG_LARGEFILE" != "yes" ] && [ "$XPLATFORM_MINGW" = "yes" ]; then
5026     echo "Warning: largefile support cannot be disabled for win32."
5027     CFG_LARGEFILE="yes"
5028 fi
5029
5030 #-------------------------------------------------------------------------------
5031 # ask for all that hasn't been auto-detected or specified in the arguments
5032 #-------------------------------------------------------------------------------
5033
5034 [ "$CFG_CXX11" = "yes" ] && QT_CONFIG="$QT_CONFIG c++11"
5035
5036 # ### Vestige
5037 if [ "$CFG_PHONON_BACKEND" = "yes" ]; then
5038     QT_CONFIG="$QT_CONFIG phonon-backend"
5039 fi
5040
5041 # disable accessibility
5042 if [ "$CFG_ACCESSIBILITY" = "no" ]; then
5043     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_ACCESSIBILITY"
5044 else
5045     QT_CONFIG="$QT_CONFIG accessibility"
5046 fi
5047
5048 # enable egl
5049 if [ "$CFG_EGL" = "yes" ]; then
5050     QT_CONFIG="$QT_CONFIG egl"
5051 else
5052     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL"
5053 fi
5054
5055 # enable eglfs
5056 if [ "$CFG_EGLFS" = "yes" ]; then
5057     QT_CONFIG="$QT_CONFIG eglfs"
5058 else
5059     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGLFS"
5060 fi
5061
5062 # enable openvg
5063 if [ "$CFG_OPENVG" = "no" ]; then
5064     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_OPENVG"
5065 else
5066     QT_CONFIG="$QT_CONFIG openvg"
5067     if [ "$CFG_OPENVG_LC_INCLUDES" = "yes" ]; then
5068         QCONFIG_FLAGS="$QCONFIG_FLAGS QT_LOWER_CASE_VG_INCLUDES"
5069     fi
5070     if [ "$CFG_OPENVG_ON_OPENGL" = "yes" ]; then
5071         QT_CONFIG="$QT_CONFIG openvg_on_opengl"
5072     fi
5073     if [ "$CFG_OPENVG_SHIVA" = "yes" ]; then
5074         QT_CONFIG="$QT_CONFIG shivavg"
5075         QCONFIG_FLAGS="$QCONFIG_FLAGS QT_SHIVAVG"
5076     fi
5077 fi
5078
5079 # enable opengl
5080 if [ "$CFG_OPENGL" = "no" ]; then
5081     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_OPENGL"
5082 else
5083     QT_CONFIG="$QT_CONFIG opengl"
5084 fi
5085
5086 if [ "$CFG_OPENGL" = "es2" ]; then
5087     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_OPENGL_ES"
5088 fi
5089
5090 if [ "$CFG_OPENGL" = "es2" ]; then
5091     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_OPENGL_ES_2"
5092     QT_CONFIG="$QT_CONFIG opengles2"
5093 fi
5094
5095 # safe execution environment
5096 if [ "$CFG_SXE" != "no" ]; then
5097     QT_CONFIG="$QT_CONFIG sxe"
5098 fi
5099
5100 # build up the variables for output
5101 if [ "$CFG_DEBUG" = "yes" ]; then
5102     QMAKE_OUTDIR="${QMAKE_OUTDIR}debug"
5103     QMAKE_CONFIG="$QMAKE_CONFIG debug"
5104 elif [ "$CFG_DEBUG" = "no" ]; then
5105     QMAKE_OUTDIR="${QMAKE_OUTDIR}release"
5106     QMAKE_CONFIG="$QMAKE_CONFIG release"
5107 fi
5108 if [ "$CFG_SHARED" = "yes" ]; then
5109     QMAKE_OUTDIR="${QMAKE_OUTDIR}-shared"
5110     QMAKE_CONFIG="$QMAKE_CONFIG shared dll"
5111 elif [ "$CFG_SHARED" = "no" ]; then
5112     QMAKE_OUTDIR="${QMAKE_OUTDIR}-static"
5113     QMAKE_CONFIG="$QMAKE_CONFIG static"
5114 fi
5115
5116 #FIXME: qpa is implicit this should all be removed
5117 QMAKE_CONFIG="$QMAKE_CONFIG qpa"
5118 QT_CONFIG="$QT_CONFIG qpa"
5119 QTCONFIG_CONFIG="$QTCONFIG_CONFIG qpa"
5120 rm -f "src/.moc/$QMAKE_OUTDIR/allmoc.cpp" # needs remaking if config changes
5121
5122 if [ "$XPLATFORM_MINGW" != "yes" ]; then
5123     # Do not set this here for Windows. Let qmake do it so
5124     # debug and release precompiled headers are kept separate.
5125     QMakeVar set PRECOMPILED_DIR ".pch/$QMAKE_OUTDIR"
5126 fi
5127 QMakeVar set OBJECTS_DIR ".obj/$QMAKE_OUTDIR"
5128 QMakeVar set MOC_DIR ".moc/$QMAKE_OUTDIR"
5129 QMakeVar set RCC_DIR ".rcc/$QMAKE_OUTDIR"
5130 QMakeVar set UI_DIR ".uic/$QMAKE_OUTDIR"
5131 if [ "$CFG_LARGEFILE" = "yes" ] && [ "$XPLATFORM_MINGW" != "yes" ]; then
5132     QMAKE_CONFIG="$QMAKE_CONFIG largefile"
5133 fi
5134 if [ "$CFG_USE_GNUMAKE" = "yes" ]; then
5135     QMAKE_CONFIG="$QMAKE_CONFIG GNUmake"
5136 fi
5137 [ "$CFG_REDUCE_EXPORTS" = "yes" ] && QT_CONFIG="$QT_CONFIG reduce_exports"
5138 [ "$CFG_REDUCE_RELOCATIONS" = "yes" ] && QT_CONFIG="$QT_CONFIG reduce_relocations"
5139 [ "$CFG_PRECOMPILE" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG precompile_header"
5140 if [ "$CFG_SEPARATE_DEBUG_INFO" = "yes" ]; then
5141     QMakeVar add QMAKE_CFLAGS -g
5142     QMakeVar add QMAKE_CXXFLAGS -g
5143     QT_CONFIG="$QT_CONFIG separate_debug_info"
5144 fi
5145 if [ "$CFG_SEPARATE_DEBUG_INFO_NOCOPY" = "yes" ] ; then
5146     QT_CONFIG="$QT_CONFIG separate_debug_info_nocopy"
5147 fi
5148 [ "$CFG_SSE2" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG sse2"
5149 [ "$CFG_SSE3" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG sse3"
5150 [ "$CFG_SSSE3" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG ssse3"
5151 [ "$CFG_SSE4_1" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG sse4_1"
5152 [ "$CFG_SSE4_2" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG sse4_2"
5153 [ "$CFG_AVX" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG avx"
5154 [ "$CFG_AVX2" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG avx2"
5155 [ "$CFG_IWMMXT" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG iwmmxt"
5156 [ "$CFG_NEON" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG neon"
5157 if [ "$CFG_ARCH" = "mips" ]; then
5158     [ "$CFG_MIPS_DSP" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG mips_dsp"
5159     [ "$CFG_MIPS_DSPR2" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG mips_dspr2"
5160 fi
5161 if [ "$CFG_CLOCK_GETTIME" = "yes" ]; then
5162     QT_CONFIG="$QT_CONFIG clock-gettime"
5163 fi
5164 if [ "$CFG_CLOCK_MONOTONIC" = "yes" ]; then
5165     QT_CONFIG="$QT_CONFIG clock-monotonic"
5166 fi
5167 if [ "$CFG_MREMAP" = "yes" ]; then
5168     QT_CONFIG="$QT_CONFIG mremap"
5169 fi
5170 if [ "$CFG_GETADDRINFO" = "yes" ]; then
5171     QT_CONFIG="$QT_CONFIG getaddrinfo"
5172 fi
5173 if [ "$CFG_IPV6IFNAME" = "yes" ]; then
5174     QT_CONFIG="$QT_CONFIG ipv6ifname"
5175 fi
5176 if [ "$CFG_GETIFADDRS" = "yes" ]; then
5177     QT_CONFIG="$QT_CONFIG getifaddrs"
5178 fi
5179 if [ "$CFG_INOTIFY" = "yes" ]; then
5180     QT_CONFIG="$QT_CONFIG inotify"
5181 fi
5182 if [ "$CFG_LIBJPEG" = "no" ]; then
5183     CFG_JPEG="no"
5184 elif [ "$CFG_LIBJPEG" = "system" ]; then
5185     QT_CONFIG="$QT_CONFIG system-jpeg"
5186 fi
5187 if [ "$CFG_JPEG" = "no" ]; then
5188     QT_CONFIG="$QT_CONFIG no-jpeg"
5189 elif [ "$CFG_JPEG" = "yes" ]; then
5190     QT_CONFIG="$QT_CONFIG jpeg"
5191 fi
5192 if [ "$CFG_LIBPNG" = "no" ]; then
5193     CFG_PNG="no"
5194 fi
5195 if [ "$CFG_LIBPNG" = "system" ]; then
5196     QT_CONFIG="$QT_CONFIG system-png"
5197 fi
5198 if [ "$CFG_PNG" = "no" ]; then
5199     QT_CONFIG="$QT_CONFIG no-png"
5200 elif [ "$CFG_PNG" = "yes" ]; then
5201     QT_CONFIG="$QT_CONFIG png"
5202 fi
5203 if [ "$CFG_GIF" = "no" ]; then
5204     QT_CONFIG="$QT_CONFIG no-gif"
5205 elif [ "$CFG_GIF" = "yes" ]; then
5206     QT_CONFIG="$QT_CONFIG gif"
5207 fi
5208 if [ "$CFG_LIBFREETYPE" = "no" ]; then
5209     QT_CONFIG="$QT_CONFIG no-freetype"
5210     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_FREETYPE"
5211 elif [ "$CFG_LIBFREETYPE" = "system" ]; then
5212     QT_CONFIG="$QT_CONFIG system-freetype"
5213 else
5214     QT_CONFIG="$QT_CONFIG freetype"
5215 fi
5216 if [ "$CFG_GUI" = "auto" ]; then
5217     CFG_GUI="yes"
5218 fi
5219 if [ "$CFG_GUI" = "no" ]; then
5220     QT_CONFIG="$QT_CONFIG no-gui"
5221     CFG_WIDGETS="no"
5222 fi
5223 if [ "$CFG_WIDGETS" = "no" ]; then
5224     QT_CONFIG="$QT_CONFIG no-widgets"
5225     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_WIDGETS"
5226 fi
5227
5228 if [ "x$BUILD_ON_MAC" = "xyes" ] && [ "$XPLATFORM_MINGW" != "yes" ]; then
5229     #On Mac we implicitly link against libz, so we
5230     #never use the 3rdparty stuff.
5231     [ "$CFG_ZLIB" = "yes" ] && CFG_ZLIB="system"
5232 fi
5233 if [ "$CFG_ZLIB" = "yes" ]; then
5234     QT_CONFIG="$QT_CONFIG zlib"
5235 elif [ "$CFG_ZLIB" = "system" ]; then
5236     QT_CONFIG="$QT_CONFIG system-zlib"
5237 fi
5238
5239 [ "$CFG_NIS" = "yes" ] && QT_CONFIG="$QT_CONFIG nis"
5240 [ "$CFG_CUPS" = "yes" ] && QT_CONFIG="$QT_CONFIG cups"
5241 [ "$CFG_ICONV" = "yes" ] && QT_CONFIG="$QT_CONFIG iconv"
5242 [ "$CFG_ICONV" = "sun" ] && QT_CONFIG="$QT_CONFIG sun-libiconv"
5243 [ "$CFG_ICONV" = "gnu" ] && QT_CONFIG="$QT_CONFIG gnu-libiconv"
5244 [ "$CFG_GLIB" = "yes" ] && QT_CONFIG="$QT_CONFIG glib"
5245 [ "$CFG_GSTREAMER" = "yes" ] && QT_CONFIG="$QT_CONFIG gstreamer"
5246 [ "$CFG_DBUS" = "yes" ] && QT_CONFIG="$QT_CONFIG dbus"
5247 [ "$CFG_DBUS" = "linked" ] && QT_CONFIG="$QT_CONFIG dbus dbus-linked"
5248 [ "$CFG_OPENSSL" = "yes" ] && QT_CONFIG="$QT_CONFIG openssl"
5249 [ "$CFG_OPENSSL" = "linked" ] && QT_CONFIG="$QT_CONFIG openssl-linked"
5250 [ "$CFG_MAC_HARFBUZZ" = "yes" ] && QT_CONFIG="$QT_CONFIG harfbuzz"
5251 [ "$CFG_XCB" = "yes" ] && QT_CONFIG="$QT_CONFIG xcb"
5252 [ "$CFG_XINPUT2" = "yes" ] && QT_CONFIG="$QT_CONFIG xinput2"
5253
5254 [ '!' -z "$DEFINES" ] && QMakeVar add DEFINES "$DEFINES"
5255 [ '!' -z "$L_FLAGS" ] && QMakeVar add QMAKE_LIBDIR_FLAGS "$L_FLAGS"
5256 [ '!' -z "$l_FLAGS" ] && QMakeVar add LIBS "$l_FLAGS"
5257
5258 if [ "$PLATFORM_MAC" = "yes" ] && [ "$QT_CROSS_COMPILE" = "no" ]; then
5259     if [ "$CFG_RPATH" = "yes" ]; then
5260        QMAKE_CONFIG="$QMAKE_CONFIG absolute_library_soname"
5261        # set the default rpath to the library installation directory
5262        RPATH_FLAGS="\"$QT_INSTALL_LIBS\" $RPATH_FLAGS"
5263     fi
5264 elif [ -z "`getXQMakeConf 'QMAKE_(LFLAGS_)?RPATH'`" ]; then
5265     if [ -n "$RPATH_FLAGS" ]; then
5266         echo
5267         echo "ERROR: -R cannot be used on this platform as \$QMAKE_LFLAGS_RPATH is"
5268         echo "       undefined."
5269         echo
5270         exit 1
5271     elif [ "$CFG_RPATH" = "yes" ]; then
5272         RPATH_MESSAGE="        NOTE: This platform does not support runtime library paths, using -no-rpath."
5273         CFG_RPATH=no
5274     fi
5275 else
5276     if [ "$CFG_RPATH" = "yes" ]; then
5277         # set the default rpath to the library installation directory
5278         RPATH_FLAGS="\"$QT_INSTALL_LIBS\" $RPATH_FLAGS"
5279     fi
5280     if [ -n "$RPATH_FLAGS" ]; then
5281         # add the user defined rpaths
5282         QMakeVar add QMAKE_RPATHDIR "$RPATH_FLAGS"
5283     fi
5284 fi
5285
5286 if [ '!' -z "$I_FLAGS" ]; then
5287     # add the user define include paths
5288     QMakeVar add QMAKE_CFLAGS "$I_FLAGS"
5289     QMakeVar add QMAKE_CXXFLAGS "$I_FLAGS"
5290 fi
5291
5292 if [ '!' -z "$W_FLAGS" ]; then
5293     # add the user defined warning flags
5294     QMakeVar add QMAKE_CFLAGS_WARN_ON "$W_FLAGS"
5295     QMakeVar add QMAKE_CXXFLAGS_WARN_ON "$W_FLAGS"
5296     QMakeVar add QMAKE_OBJECTIVE_CFLAGS_WARN_ON "$W_FLAGS"
5297 fi
5298
5299 if [ "$XPLATFORM_MINGW" = "yes" ]; then
5300     # mkspecs/features/win32/default_pre.prf sets "no-rtti".
5301     # Follow default behavior of configure.exe by overriding with "rtti".
5302     QTCONFIG_CONFIG="$QTCONFIG_CONFIG rtti"
5303 fi
5304
5305 if [ "$CFG_ALSA" = "yes" ]; then
5306     QT_CONFIG="$QT_CONFIG alsa"
5307 fi
5308
5309 if [ "$CFG_PULSEAUDIO" = "yes" ]; then
5310     QT_CONFIG="$QT_CONFIG pulseaudio"
5311 fi
5312
5313 if [ "$CFG_COREWLAN" = "yes" ]; then
5314     QT_CONFIG="$QT_CONFIG corewlan"
5315 fi
5316
5317 if [ "$CFG_ICU" = "yes" ]; then
5318     QT_CONFIG="$QT_CONFIG icu"
5319 fi
5320
5321 if [ "$CFG_FORCE_ASSERTS" = "yes" ]; then
5322     QT_CONFIG="$QT_CONFIG force_asserts"
5323 fi
5324
5325 if [ "$CFG_PCRE" = "qt" ]; then
5326     QMAKE_CONFIG="$QMAKE_CONFIG pcre"
5327 fi
5328
5329 #
5330 # Some Qt modules are too advanced in C++ for some old compilers
5331 # Detect here the platforms where they are known to work.
5332 #
5333 # See Qt documentation for more information on which features are
5334 # supported and on which compilers.
5335 #
5336 canBuildQtConcurrent="yes"
5337 canUseV8Snapshot="yes"
5338
5339 case "$XPLATFORM" in
5340     hpux-g++*)
5341         # PA-RISC's assembly is too limited
5342         # gcc 3.4 on that platform can't build QtXmlPatterns
5343         # the assembly it generates cannot be compiled
5344
5345         # Check gcc's version
5346         case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in
5347             4*)
5348                 ;;
5349             3.4*)
5350                 canBuildQtXmlPatterns="no"
5351                 ;;
5352             *)
5353                 canBuildWebKit="no"
5354                 canBuildQtXmlPatterns="no"
5355                 ;;
5356         esac
5357         ;;
5358     unsupported/vxworks-*-g++*)
5359         canBuildWebKit="no"
5360         ;;
5361     unsupported/vxworks-*-dcc*)
5362         canBuildWebKit="no"
5363         canBuildQtXmlPatterns="no"
5364         ;;
5365     *-g++*)
5366         # Check gcc's version
5367         case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in
5368             4*|3.4*)
5369                 ;;
5370             3.3*)
5371                 canBuildWebKit="no"
5372                 ;;
5373             *)
5374                 canBuildWebKit="no"
5375                 canBuildQtXmlPatterns="no"
5376                 ;;
5377         esac
5378         ;;
5379     solaris-cc*)
5380         # Check the compiler version
5381         case `${QMAKE_CONF_COMPILER} -V 2>&1 | awk '{print $4}'` in
5382             5.[012345678])
5383                 canBuildWebKit="no"
5384                 canBuildQtXmlPatterns="no"
5385                 canBuildQtConcurrent="no"
5386                 ;;
5387             5.*)
5388                 canBuildWebKit="no"
5389                 canBuildQtConcurrent="no"
5390                 ;;
5391         esac
5392         ;;
5393     hpux-acc*)
5394         canBuildWebKit="no"
5395         canBuildQtXmlPatterns="no"
5396         canBuildQtConcurrent="no"
5397         ;;
5398     hpuxi-acc*)
5399         canBuildWebKit="no"
5400         ;;
5401     aix-xlc*)
5402         # Get the xlC version
5403         cat > xlcver.c <<EOF
5404 #include <stdio.h>
5405 int main()
5406 {
5407     printf("%d.%d\n", __xlC__ >> 8, __xlC__ & 0xFF);
5408     return 0;
5409 }
5410 EOF
5411         xlcver=
5412         if ${QMAKE_CONF_COMPILER} -o xlcver xlcver.c >/dev/null 2>/dev/null; then
5413             xlcver=`./xlcver 2>/dev/null`
5414             rm -f ./xlcver
5415         fi
5416         if [ "$OPT_VERBOSE" = "yes" ]; then
5417             if [ -n "$xlcver" ]; then
5418                 echo Found IBM xlC version: $xlcver.
5419             else
5420                 echo Could not determine IBM xlC version, assuming oldest supported.
5421             fi
5422         fi
5423
5424         case "$xlcver" in
5425             [123456].*)
5426                 canBuildWebKit="no"
5427                 canBuildQtXmlPatterns="no"
5428                 canBuildQtConcurrent="no"
5429                 ;;
5430             *)
5431                 canBuildWebKit="no"
5432                 canBuildQtConcurrent="no"
5433                 ;;
5434         esac
5435         ;;
5436     irix-cc*)
5437         canBuildWebKit="no"
5438         canBuildQtConcurrent="no"
5439         ;;
5440 esac
5441
5442 if [ "$CFG_GUI" = "no" ]; then
5443     # WebKit requires QtGui
5444     canBuildWebKit="no"
5445 fi
5446
5447 if [ "$CFG_SHARED" = "no" ]; then
5448     echo
5449     echo "WARNING: Using static linking will disable the WebKit module."
5450     echo
5451     canBuildWebKit="no"
5452 fi
5453
5454 CFG_CONCURRENT="yes"
5455 if [ "$canBuildQtConcurrent" = "no" ]; then
5456     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_CONCURRENT"
5457     CFG_CONCURRENT="no"
5458 else
5459     QT_CONFIG="$QT_CONFIG concurrent"
5460 fi
5461
5462 # ### Vestige
5463 if [ "$CFG_AUDIO_BACKEND" = "yes" ]; then
5464     QT_CONFIG="$QT_CONFIG audio-backend"
5465 fi
5466
5467 # ### Vestige
5468 if [ "$CFG_WEBKIT" = "debug" ]; then
5469     QMAKE_CONFIG="$QMAKE_CONFIG webkit-debug"
5470 fi
5471
5472 # ### Vestige
5473 QT_CONFIG="$QT_CONFIG v8"
5474 # Detect snapshot support
5475 if [ "$CFG_ARCH" != "$CFG_HOST_ARCH" ]; then
5476     case "$CFG_HOST_ARCH,$CFG_ARCH" in
5477         i386,arm)
5478         ;;
5479     *) canUseV8Snapshot="no"
5480         ;;
5481     esac
5482 else
5483     if [ -n "$_SBOX_DIR" -a "$CFG_ARCH" = "arm" ]; then
5484         # QEMU crashes when building inside Scratchbox with an ARM target
5485         canUseV8Snapshot="no"
5486     fi
5487 fi
5488 if [ "$CFG_V8SNAPSHOT" = "auto" ]; then
5489     CFG_V8SNAPSHOT="$canUseV8Snapshot"
5490 fi
5491 if [ "$CFG_V8SNAPSHOT" = "yes" -a "$canUseV8Snapshot" = "no" ]; then
5492     echo "Error: V8 snapshot was requested, but is not supported on this platform."
5493     exit 1
5494 fi
5495 if [ "$CFG_V8SNAPSHOT" = "yes" ]; then
5496     QT_CONFIG="$QT_CONFIG v8snapshot"
5497 fi
5498
5499 # ### Vestige
5500 if [ "$CFG_QML_DEBUG" = "no" ]; then
5501     QCONFIG_FLAGS="$QCONFIG_FLAGS QT_QML_NO_DEBUGGER"
5502 fi
5503
5504 case "$QMAKE_CONF_COMPILER" in
5505 *g++*)
5506     # GNU C++
5507     COMPILER_VERSION=`${QMAKE_CONF_COMPILER} -dumpversion 2>/dev/null`
5508
5509     case "$COMPILER_VERSION" in
5510     *.*.*)
5511         QT_GCC_MAJOR_VERSION=`echo $COMPILER_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\1,'`
5512         QT_GCC_MINOR_VERSION=`echo $COMPILER_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\2,'`
5513         QT_GCC_PATCH_VERSION=`echo $COMPILER_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\3,'`
5514         ;;
5515     *.*)
5516         QT_GCC_MAJOR_VERSION=`echo $COMPILER_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\).*,\1,'`
5517         QT_GCC_MINOR_VERSION=`echo $COMPILER_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\).*,\2,'`
5518         QT_GCC_PATCH_VERSION=0
5519         ;;
5520     esac
5521
5522     ;;
5523 *)
5524     #
5525     ;;
5526 esac
5527
5528 #-------------------------------------------------------------------------------
5529 # part of configuration information goes into qconfig.h
5530 #-------------------------------------------------------------------------------
5531
5532 case "$CFG_QCONFIG" in
5533 full)
5534     echo "/* Everything */" >"$outpath/src/corelib/global/qconfig.h.new"
5535     ;;
5536 *)
5537     tmpconfig="$outpath/src/corelib/global/qconfig.h.new"
5538     echo "#ifndef QT_BOOTSTRAPPED" >"$tmpconfig"
5539     if [ -f "$relpath/src/corelib/global/qconfig-$CFG_QCONFIG.h" ]; then
5540         cat "$relpath/src/corelib/global/qconfig-$CFG_QCONFIG.h" >>"$tmpconfig"
5541     elif [ -f `"$relpath/config.tests/unix/makeabs" "${CFG_QCONFIG}"` ]; then
5542         cat `"$relpath/config.tests/unix/makeabs" "${CFG_QCONFIG}"` >>"$tmpconfig"
5543     fi
5544     echo "#endif" >>"$tmpconfig"
5545     ;;
5546 esac
5547
5548 cat >>"$outpath/src/corelib/global/qconfig.h.new" <<EOF
5549
5550 /* Qt Edition */
5551 #ifndef QT_EDITION
5552 #  define QT_EDITION $QT_EDITION
5553 #endif
5554 EOF
5555
5556 echo '/* Compile time features */' >>"$outpath/src/corelib/global/qconfig.h.new"
5557 [ '!' -z "$LicenseKeyExt" ] && echo "#define QT_PRODUCT_LICENSEKEY \"$LicenseKeyExt\"" >>"$outpath/src/corelib/global/qconfig.h.new"
5558
5559 if [ "$CFG_LARGEFILE" = "yes" ] && [ "$XPLATFORM_MINGW" != "yes" ]; then
5560     echo "#define QT_LARGEFILE_SUPPORT 64" >>"$outpath/src/corelib/global/qconfig.h.new"
5561 fi
5562
5563 if [ "$CFG_FRAMEWORK" = "yes" ]; then
5564     echo "#define QT_MAC_FRAMEWORK_BUILD" >>"$outpath/src/corelib/global/qconfig.h.new"
5565 fi
5566
5567 if [ "$BUILD_ON_MAC" = "yes" ]; then
5568     cat >>"$outpath/src/corelib/global/qconfig.h.new" <<EOF
5569 #if defined(__LP64__)
5570 # define QT_POINTER_SIZE 8
5571 #else
5572 # define QT_POINTER_SIZE 4
5573 #endif
5574 EOF
5575 else
5576     "$unixtests/ptrsize.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath"
5577     echo "#define QT_POINTER_SIZE $?" >>"$outpath/src/corelib/global/qconfig.h.new"
5578 fi
5579
5580 #REDUCE_RELOCATIONS is a elf/unix only thing, so not in windows configure.exe
5581 if [ "$CFG_REDUCE_RELOCATIONS" = "yes" ]; then
5582     echo "#define QT_REDUCE_RELOCATIONS" >>"$outpath/src/corelib/global/qconfig.h.new"
5583 fi
5584
5585
5586 echo "" >>"$outpath/src/corelib/global/qconfig.h.new"
5587
5588 if [ "$CFG_DEV" = "yes" ]; then
5589     echo "#define QT_BUILD_INTERNAL" >>"$outpath/src/corelib/global/qconfig.h.new"
5590 fi
5591
5592 # Add QPA to config.h
5593 QCONFIG_FLAGS="$QCONFIG_FLAGS Q_WS_QPA QT_NO_QWS_QPF QT_NO_QWS_QPF2"
5594
5595 if [ "${CFG_USE_FLOATMATH}" = "yes" ]; then
5596     QCONFIG_FLAGS="${QCONFIG_FLAGS} QT_USE_MATH_H_FLOATS"
5597 fi
5598
5599 # Add turned on SQL drivers
5600 for DRIVER in $CFG_SQL_AVAILABLE; do
5601     eval "VAL=\$CFG_SQL_$DRIVER"
5602     case "$VAL" in
5603     qt)
5604         ONDRIVER=`echo $DRIVER | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
5605         QCONFIG_FLAGS="$QCONFIG_FLAGS QT_SQL_$ONDRIVER"
5606         SQL_DRIVERS="$SQL_DRIVERS $DRIVER"
5607     ;;
5608     plugin)
5609         SQL_PLUGINS="$SQL_PLUGINS $DRIVER"
5610     ;;
5611     esac
5612 done
5613
5614
5615 QMakeVar set sql-drivers "$SQL_DRIVERS"
5616 QMakeVar set sql-plugins "$SQL_PLUGINS"
5617
5618 # Add other configuration options to the qconfig.h file
5619 [ "$CFG_GIF" = "yes" ]       && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_BUILTIN_GIF_READER=1"
5620 [ "$CFG_PNG" != "yes" ]      && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IMAGEFORMAT_PNG"
5621 [ "$CFG_JPEG" != "yes" ]     && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IMAGEFORMAT_JPEG"
5622 [ "$CFG_ZLIB" != "yes" ]     && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_ZLIB"
5623 [ "$CFG_SXE" = "no" ]        && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SXE"
5624 [ "$CFG_DBUS" = "no" ]      && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_DBUS"
5625
5626 # X11/Unix/Mac only configs
5627 [ "$CFG_CUPS" = "no" ]       && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_CUPS"
5628 [ "$CFG_ICONV" = "no" ]      && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_ICONV"
5629 [ "$CFG_GLIB" != "yes" ]     && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_GLIB"
5630 [ "$CFG_GSTREAMER" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_GSTREAMER"
5631 [ "$CFG_QGTKSTYLE" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_STYLE_GTK"
5632 [ "$CFG_CLOCK_MONOTONIC" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_CLOCK_MONOTONIC"
5633 [ "$CFG_MREMAP" = "no" ]     && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_MREMAP"
5634 [ "$CFG_GETADDRINFO" = "no" ]&& QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_GETADDRINFO"
5635 [ "$CFG_IPV6IFNAME" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IPV6IFNAME"
5636 [ "$CFG_GETIFADDRS" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_GETIFADDRS"
5637 [ "$CFG_INOTIFY" = "no" ]    && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_INOTIFY"
5638 [ "$CFG_NIS" = "no" ]        && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_NIS"
5639 [ "$CFG_OPENSSL" = "no" ]    && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_OPENSSL QT_NO_SSL"
5640 [ "$CFG_OPENSSL" = "linked" ]&& QCONFIG_FLAGS="$QCONFIG_FLAGS QT_LINKED_OPENSSL"
5641
5642 [ "$CFG_SM" = "no" ]         && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SESSIONMANAGER"
5643 [ "$CFG_XCURSOR" = "no" ]    && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XCURSOR"
5644 [ "$CFG_XFIXES" = "no" ]     && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XFIXES"
5645 [ "$CFG_FONTCONFIG" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_FONTCONFIG"
5646 [ "$CFG_XINERAMA" = "no" ]   && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XINERAMA"
5647 [ "$CFG_XKB" = "no" ]        && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XKB"
5648 [ "$CFG_XRANDR" = "no" ]     && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XRANDR"
5649 [ "$CFG_XRENDER" = "no" ]    && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XRENDER"
5650 [ "$CFG_MITSHM" = "no" ]    && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_MITSHM"
5651 [ "$CFG_XSHAPE" = "no" ]     && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SHAPE"
5652 [ "$CFG_XVIDEO" = "no" ]     && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XVIDEO"
5653 [ "$CFG_XSYNC" = "no" ]     && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XSYNC"
5654 [ "$CFG_XINPUT" = "no" ]     && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XINPUT QT_NO_TABLET"
5655
5656 [ "$CFG_XCURSOR" = "runtime" ]   && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XCURSOR"
5657 [ "$CFG_XINERAMA" = "runtime" ]  && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XINERAMA"
5658 [ "$CFG_XFIXES" = "runtime" ]    && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XFIXES"
5659 [ "$CFG_XRANDR" = "runtime" ]    && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XRANDR"
5660 [ "$CFG_XINPUT" = "runtime" ]    && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XINPUT"
5661 [ "$CFG_ALSA" = "no" ]           && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_ALSA"
5662 [ "$CFG_PULSEAUDIO" = "no" ]          && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_PULSEAUDIO"
5663 [ "$CFG_COREWLAN" = "no" ]       && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_COREWLAN"
5664
5665 # sort QCONFIG_FLAGS for neatness if we can
5666 [ '!' -z "$AWK" ] && QCONFIG_FLAGS=`echo $QCONFIG_FLAGS | $AWK '{ gsub(" ", "\n"); print }' | sort | uniq`
5667 QCONFIG_FLAGS=`echo $QCONFIG_FLAGS`
5668
5669 if [ -n "$QCONFIG_FLAGS" ]; then
5670 cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF
5671 #ifndef QT_BOOTSTRAPPED
5672
5673 EOF
5674     for cfg in $QCONFIG_FLAGS; do
5675         cfgd=`echo $cfg | sed 's/=.*$//'` # trim pushed 'Foo=Bar' defines
5676         cfg=`echo $cfg | sed 's/=/ /'`    # turn first '=' into a space
5677         # figure out define logic, so we can output the correct
5678         # ifdefs to override the global defines in a project
5679         cfgdNeg=
5680         if [ true ] && echo "$cfgd" | grep 'QT_NO_' >/dev/null 2>&1; then
5681             # QT_NO_option can be forcefully turned on by QT_option
5682             cfgdNeg=`echo $cfgd | sed "s,QT_NO_,QT_,"`
5683         elif [ true ] && echo "$cfgd" | grep 'QT_' >/dev/null 2>&1; then
5684             # QT_option can be forcefully turned off by QT_NO_option
5685             cfgdNeg=`echo $cfgd | sed "s,QT_,QT_NO_,"`
5686         fi
5687
5688         if [ -z $cfgdNeg ]; then
5689 cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF
5690 #ifndef $cfgd
5691 # define $cfg
5692 #endif
5693
5694 EOF
5695         else
5696 cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF
5697 #if defined($cfgd) && defined($cfgdNeg)
5698 # undef $cfgd
5699 #elif !defined($cfgd) && !defined($cfgdNeg)
5700 # define $cfg
5701 #endif
5702
5703 EOF
5704         fi
5705     done
5706 cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF
5707 #endif // QT_BOOTSTRAPPED
5708
5709 EOF
5710 fi
5711
5712 if [ "$CFG_REDUCE_EXPORTS" = "yes" ]; then
5713 cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF
5714 #define QT_VISIBILITY_AVAILABLE
5715
5716 EOF
5717 fi
5718
5719 if [ -n "$QT_LIBINFIX" ]; then
5720 cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF
5721 #define QT_LIBINFIX "$QT_LIBINFIX"
5722
5723 EOF
5724 fi
5725
5726 echo "#define QT_QPA_DEFAULT_PLATFORM_NAME \"$QT_QPA_DEFAULT_PLATFORM\"" >>"$outpath/src/corelib/global/qconfig.h.new"
5727
5728 # avoid unecessary rebuilds by copying only if qconfig.h has changed
5729 if cmp -s "$outpath/src/corelib/global/qconfig.h" "$outpath/src/corelib/global/qconfig.h.new"; then
5730     rm -f "$outpath/src/corelib/global/qconfig.h.new"
5731 else
5732     [ -f "$outpath/src/corelib/global/qconfig.h" ] && chmod +w "$outpath/src/corelib/global/qconfig.h"
5733     mv "$outpath/src/corelib/global/qconfig.h.new" "$outpath/src/corelib/global/qconfig.h"
5734     chmod -w "$outpath/src/corelib/global/qconfig.h"
5735     if [ ! -f "$outpath/include/QtCore/qconfig.h" ]; then
5736         ln -s "$outpath/src/corelib/global/qconfig.h" "$outpath/include/QtCore/qconfig.h"
5737     fi
5738 fi
5739
5740 #-------------------------------------------------------------------------------
5741 # save configuration into qconfig.pri
5742 #-------------------------------------------------------------------------------
5743 QTCONFIG="$outpath/mkspecs/qconfig.pri"
5744 QTCONFIG_CONFIG="$QTCONFIG_CONFIG no_mocdepend"
5745 [ -f "$QTCONFIG.tmp" ] && rm -f "$QTCONFIG.tmp"
5746 if [ "$CFG_DEBUG" = "yes" ]; then
5747     QTCONFIG_CONFIG="$QTCONFIG_CONFIG debug"
5748     if [ "$CFG_DEBUG_RELEASE" = "yes" ]; then
5749         QT_CONFIG="$QT_CONFIG release"
5750     fi
5751     QT_CONFIG="$QT_CONFIG debug"
5752 elif [ "$CFG_DEBUG" = "no" ]; then
5753     QTCONFIG_CONFIG="$QTCONFIG_CONFIG release"
5754     if [ "$CFG_DEBUG_RELEASE" = "yes" ]; then
5755         QT_CONFIG="$QT_CONFIG debug"
5756     fi
5757     QT_CONFIG="$QT_CONFIG release"
5758 fi
5759 if [ "$CFG_FRAMEWORK" = "no" ]; then
5760     QTCONFIG_CONFIG="$QTCONFIG_CONFIG qt_no_framework"
5761 else
5762     QT_CONFIG="$QT_CONFIG qt_framework"
5763     QTCONFIG_CONFIG="$QTCONFIG_CONFIG qt_framework"
5764 fi
5765 if [ "$CFG_DEV" = "yes" ]; then
5766     QT_CONFIG="$QT_CONFIG private_tests"
5767 fi
5768
5769 cat >>"$QTCONFIG.tmp" <<EOF
5770 #configuration
5771 CONFIG += $QTCONFIG_CONFIG
5772 QT_ARCH = $CFG_ARCH
5773 QT_HOST_ARCH = $CFG_HOST_ARCH
5774 QT_CPU_FEATURES = $CFG_CPUFEATURES
5775 QT_HOST_CPU_FEATURES = $CFG_HOST_CPUFEATURES
5776 QT_EDITION = $Edition
5777 QT_CONFIG += $QT_CONFIG
5778
5779 #versioning
5780 QT_VERSION = $QT_VERSION
5781 QT_MAJOR_VERSION = $QT_MAJOR_VERSION
5782 QT_MINOR_VERSION = $QT_MINOR_VERSION
5783 QT_PATCH_VERSION = $QT_PATCH_VERSION
5784
5785 #namespaces
5786 QT_LIBINFIX = $QT_LIBINFIX
5787 QT_NAMESPACE = $QT_NAMESPACE
5788
5789 EOF
5790
5791 if [ -n "$PKG_CONFIG_SYSROOT_DIR" ] || [ -n "$PKG_CONFIG_LIBDIR" ]; then
5792     echo "# pkgconfig" >> "$QTCONFIG.tmp"
5793     echo "PKG_CONFIG_SYSROOT_DIR = $PKG_CONFIG_SYSROOT_DIR" >> "$QTCONFIG.tmp"
5794     echo "PKG_CONFIG_LIBDIR = $PKG_CONFIG_LIBDIR" >> "$QTCONFIG.tmp"
5795     echo >> "$QTCONFIG.tmp"
5796 fi
5797
5798 if [ -n "$CFG_SYSROOT" ]; then
5799     echo "# sysroot" >>"$QTCONFIG.tmp"
5800     echo `basename "$XQMAKESPEC"` \{ >>"$QTCONFIG.tmp"
5801     echo "    QMAKE_CFLAGS    += --sysroot=\$\$[QT_SYSROOT]" >>"$QTCONFIG.tmp"
5802     echo "    QMAKE_CXXFLAGS  += --sysroot=\$\$[QT_SYSROOT]" >>"$QTCONFIG.tmp"
5803     echo "    QMAKE_LFLAGS    += --sysroot=\$\$[QT_SYSROOT]" >>"$QTCONFIG.tmp"
5804     echo "}" >> "$QTCONFIG.tmp"
5805     echo >> "$QTCONFIG.tmp"
5806 fi
5807 if [ -n "$RPATH_FLAGS" ]; then
5808     echo "QMAKE_RPATHDIR += $RPATH_FLAGS" >> "$QTCONFIG.tmp"
5809 fi
5810 if [ -n "$QT_GCC_MAJOR_VERSION" ]; then
5811     echo "QT_GCC_MAJOR_VERSION = $QT_GCC_MAJOR_VERSION" >> "$QTCONFIG.tmp"
5812     echo "QT_GCC_MINOR_VERSION = $QT_GCC_MINOR_VERSION" >> "$QTCONFIG.tmp"
5813     echo "QT_GCC_PATCH_VERSION = $QT_GCC_PATCH_VERSION" >> "$QTCONFIG.tmp"
5814 fi
5815
5816 if [ -n "$QMAKE_INCDIR_OPENGL_ES2" ]; then
5817     echo "#Qt opengl include path" >> "$QTCONFIG.tmp"
5818     echo "QMAKE_INCDIR_OPENGL_ES2 = \"$QMAKE_INCDIR_OPENGL_ES2\"" >> "$QTCONFIG.tmp"
5819 fi
5820
5821 # replace qconfig.pri if it differs from the newly created temp file
5822 if cmp -s "$QTCONFIG.tmp" "$QTCONFIG"; then
5823     rm -f "$QTCONFIG.tmp"
5824 else
5825     mv -f "$QTCONFIG.tmp" "$QTCONFIG"
5826 fi
5827
5828 #-------------------------------------------------------------------------------
5829 # save configuration into qmodule.pri
5830 #-------------------------------------------------------------------------------
5831 QTMODULE="$outpath/mkspecs/qmodule.pri"
5832
5833 echo "CONFIG += $QMAKE_CONFIG create_prl link_prl" >> "$QTMODULE.tmp"
5834
5835 # Ensure we can link to uninistalled libraries
5836 if [ "$BUILD_ON_MAC" != "yes" ] && [ "$XPLATFORM_MINGW" != "yes" ] && linkerSupportsFlag -rpath-link "$outpath/lib"; then
5837     echo "QMAKE_LFLAGS    = -Wl,-rpath-link,\$\$QT_BUILD_TREE/lib \$\$QMAKE_LFLAGS" >> "$QTMODULE.tmp"
5838 fi
5839 if [ -n "$QT_CFLAGS_PSQL" ]; then
5840     echo "QT_CFLAGS_PSQL   = $QT_CFLAGS_PSQL" >> "$QTMODULE.tmp"
5841 fi
5842 if [ -n "$QT_LFLAGS_PSQL" ]; then
5843     echo "QT_LFLAGS_PSQL   = $QT_LFLAGS_PSQL" >> "$QTMODULE.tmp"
5844 fi
5845 if [ -n "$QT_CFLAGS_MYSQL" ]; then
5846     echo "QT_CFLAGS_MYSQL   = $QT_CFLAGS_MYSQL" >> "$QTMODULE.tmp"
5847 fi
5848 if [ -n "$QT_LFLAGS_MYSQL" ]; then
5849     echo "QT_LFLAGS_MYSQL   = $QT_LFLAGS_MYSQL" >> "$QTMODULE.tmp"
5850 fi
5851 if [ -n "$QT_CFLAGS_SQLITE" ]; then
5852     echo "QT_CFLAGS_SQLITE   = $QT_CFLAGS_SQLITE" >> "$QTMODULE.tmp"
5853 fi
5854 if [ -n "$QT_LFLAGS_SQLITE" ]; then
5855     echo "QT_LFLAGS_SQLITE   = $QT_LFLAGS_SQLITE" >> "$QTMODULE.tmp"
5856 fi
5857 if [ -n "$QT_LFLAGS_ODBC" ]; then
5858     echo "QT_LFLAGS_ODBC   = $QT_LFLAGS_ODBC" >> "$QTMODULE.tmp"
5859 fi
5860 if [ -n "$QT_LFLAGS_TDS" ]; then
5861     echo "QT_LFLAGS_TDS   = $QT_LFLAGS_TDS" >> "$QTMODULE.tmp"
5862 fi
5863
5864 if [ "$QT_EDITION" != "QT_EDITION_OPENSOURCE" ]; then
5865     echo "DEFINES *= QT_EDITION=QT_EDITION_DESKTOP" >> "$QTMODULE.tmp"
5866 fi
5867
5868 #dump in the OPENSSL_LIBS info
5869 if [ '!' -z "$OPENSSL_LIBS" ]; then
5870     echo "OPENSSL_LIBS = $OPENSSL_LIBS" >> "$QTMODULE.tmp"
5871 elif [ "$CFG_OPENSSL" = "linked" ]; then
5872     echo "OPENSSL_LIBS = -lssl -lcrypto" >> "$QTMODULE.tmp"
5873 fi
5874
5875 #dump in the SDK info
5876 if [ '!' -z "$CFG_SDK" ]; then
5877    echo "QMAKE_MAC_SDK = $CFG_SDK" >> "$QTMODULE.tmp"
5878 fi
5879
5880 # cmdline args
5881 cat "$QMAKE_VARS_FILE" >> "$QTMODULE.tmp"
5882 rm -f "$QMAKE_VARS_FILE" 2>/dev/null
5883
5884 # replace qmodule.pri if it differs from the newly created temp file
5885 if cmp -s "$QTMODULE.tmp" "$QTMODULE"; then
5886     rm -f "$QTMODULE.tmp"
5887 else
5888     mv -f "$QTMODULE.tmp" "$QTMODULE"
5889 fi
5890
5891 #-------------------------------------------------------------------------------
5892 # save configuration into .qmake.cache
5893 #-------------------------------------------------------------------------------
5894
5895 CACHEFILE="$outpath/.qmake.cache"
5896 [ -f "$CACHEFILE.tmp" ] && rm -f "$CACHEFILE.tmp"
5897 cat >>"$CACHEFILE.tmp" <<EOF
5898 #paths
5899 QT_SOURCE_TREE = \$\$quote($relpath)
5900 QT_BUILD_TREE = \$\$quote($outpath)
5901 QT_BUILD_PARTS = $CFG_BUILD_PARTS
5902
5903 #local paths that cannot be queried from the QT_INSTALL_* properties while building QTDIR
5904 QMAKE_INCDIR_QT  = \$\$QT_BUILD_TREE/include
5905 QMAKE_LIBDIR_QT  = \$\$QT_BUILD_TREE/lib
5906
5907 include(\$\$PWD/mkspecs/qmodule.pri)
5908 CONFIG += dylib depend_includepath fix_output_dirs no_private_qt_headers_warning QTDIR_build
5909
5910 EOF
5911
5912 #dump the qmake spec
5913 if [ -d "$outpath/mkspecs/$XPLATFORM" ]; then
5914    echo "QMAKESPEC = \$\$QT_BUILD_TREE/mkspecs/$XPLATFORM" >> "$CACHEFILE.tmp"
5915 else
5916    echo "QMAKESPEC = $XPLATFORM" >> "$CACHEFILE.tmp"
5917 fi
5918
5919 # replace .qmake.cache if it differs from the newly created temp file
5920 if cmp -s "$CACHEFILE.tmp" "$CACHEFILE"; then
5921     rm -f "$CACHEFILE.tmp"
5922 else
5923     mv -f "$CACHEFILE.tmp" "$CACHEFILE"
5924 fi
5925
5926 #-------------------------------------------------------------------------------
5927 # give feedback on configuration
5928 #-------------------------------------------------------------------------------
5929 exec 3>&1 1>$outpath/config.summary # redirect output temporarily to config.summary
5930
5931 echo
5932 if [ "$XPLATFORM" = "$PLATFORM" ]; then
5933     echo "Build type:    $PLATFORM"
5934 else
5935     echo "Building on:   $PLATFORM"
5936     echo "Building for:  $XPLATFORM"
5937 fi
5938
5939 # the missing space before $CFG_FEATURES is intentional
5940 echo "Architecture:  $CFG_ARCH, features:$CFG_CPUFEATURES"
5941 echo "Host architecture: $CFG_HOST_ARCH, features:$CFG_HOST_CPUFEATURES"
5942
5943 if [ -n "$PLATFORM_NOTES" ]; then
5944     echo "Platform notes:"
5945     echo "$PLATFORM_NOTES"
5946 else
5947     echo
5948 fi
5949
5950 if [ "$OPT_VERBOSE" = "yes" ]; then
5951     echo $ECHO_N "qmake vars .......... $ECHO_C"
5952     cat "$QMAKE_VARS_FILE" | tr '\n' ' '
5953     echo "qmake switches ......... $QMAKE_SWITCHES"
5954 fi
5955
5956 echo "Build .................. $CFG_BUILD_PARTS"
5957 echo "Configuration .......... $QMAKE_CONFIG $QT_CONFIG"
5958 if [ "$CFG_DEBUG_RELEASE" = "yes" ]; then
5959    echo "Debug .................. yes (combined)"
5960    if [ "$CFG_DEBUG" = "yes" ]; then
5961        echo "Default Link ........... debug"
5962    else
5963        echo "Default Link ........... release"
5964    fi
5965 else
5966    echo "Debug .................. $CFG_DEBUG"
5967 fi
5968 echo "C++11 support .......... $CFG_CXX11"
5969 if [ -n "$PKG_CONFIG" ]; then
5970     echo "pkg-config ............. yes"
5971 else
5972     echo "pkg-config ............. no"
5973 fi
5974 [ "$CFG_DBUS" = "no" ]     && echo "QtDBus module .......... no"
5975 [ "$CFG_DBUS" = "yes" ]    && echo "QtDBus module .......... yes (run-time)"
5976 [ "$CFG_DBUS" = "linked" ] && echo "QtDBus module .......... yes (linked)"
5977 echo "QtConcurrent code ...... $CFG_CONCURRENT"
5978 echo "QtGui module ........... $CFG_GUI"
5979 echo "QtWidgets module ....... $CFG_WIDGETS"
5980 if [ "$CFG_JAVASCRIPTCORE_JIT" = "auto" ]; then
5981     echo "JavaScriptCore JIT ..... To be decided by JavaScriptCore"
5982 else
5983     echo "JavaScriptCore JIT ..... $CFG_JAVASCRIPTCORE_JIT"
5984 fi
5985 echo "QML debugging .......... $CFG_QML_DEBUG"
5986 echo "PCH support ............ $CFG_PRECOMPILE"
5987 if [ "$CFG_ARCH" = "i386" -o "$CFG_ARCH" = "x86_64" ]; then
5988     echo "SSE2/SSE3/SSSE3......... ${CFG_SSE2}/${CFG_SSE3}/${CFG_SSSE3}"
5989     echo "SSE4.1/SSE4.2........... ${CFG_SSSE3}/${CFG_SSE4_1}/${CFG_SSE4_2}"
5990     echo "AVX/AVX2................ ${CFG_AVX}/${CFG_AVX2}"
5991 elif [ "$CFG_ARCH" = "arm" ]; then
5992     echo "iWMMXt support ......... ${CFG_IWMMXT}"
5993     echo "NEON support ........... ${CFG_NEON}"
5994 fi
5995 if [ "$CFG_ARCH" = "mips" ]; then
5996     echo "MIPS_DSP/MIPS_DSPR2..... ${CFG_MIPS_DSP}/${CFG_MIPS_DSPR2}"
5997 fi
5998 echo "IPv6 ifname support .... $CFG_IPV6IFNAME"
5999 echo "getaddrinfo support .... $CFG_GETADDRINFO"
6000 echo "getifaddrs support ..... $CFG_GETIFADDRS"
6001 echo "Accessibility .......... $CFG_ACCESSIBILITY"
6002 echo "NIS support ............ $CFG_NIS"
6003 echo "CUPS support ........... $CFG_CUPS"
6004 echo "Iconv support .......... $CFG_ICONV"
6005 echo "Glib support ........... $CFG_GLIB"
6006 echo "GStreamer support ...... $CFG_GSTREAMER"
6007 echo "PulseAudio support ..... $CFG_PULSEAUDIO"
6008 echo "Large File support ..... $CFG_LARGEFILE"
6009 echo "GIF support ............ $CFG_GIF"
6010 if [ "$CFG_JPEG" = "no" ]; then
6011     echo "JPEG support ........... $CFG_JPEG"
6012 else
6013     echo "JPEG support ........... $CFG_JPEG ($CFG_LIBJPEG)"
6014 fi
6015 if [ "$CFG_PNG" = "no" ]; then
6016     echo "PNG support ............ $CFG_PNG"
6017 else
6018     echo "PNG support ............ $CFG_PNG ($CFG_LIBPNG)"
6019 fi
6020 echo "zlib support ........... $CFG_ZLIB"
6021 echo "Session management ..... $CFG_SM"
6022 echo "libudev support ........ $CFG_LIBUDEV"
6023
6024 if [ "$CFG_OPENGL" = "desktop" ]; then
6025     echo "OpenGL support ......... yes (Desktop OpenGL)"
6026 elif [ "$CFG_OPENGL" = "es2" ]; then
6027     echo "OpenGL support ......... yes (OpenGL ES 2.x)"
6028 else
6029     echo "OpenGL support ......... no"
6030 fi
6031
6032 if [ "$CFG_OPENVG" ]; then
6033     if [ "$CFG_OPENVG_SHIVA" = "yes" ]; then
6034         echo "OpenVG support ......... ShivaVG"
6035     else
6036         echo "OpenVG support ......... $CFG_OPENVG"
6037     fi
6038 fi
6039
6040 echo "XShape support ......... $CFG_XSHAPE"
6041 echo "XVideo support ......... $CFG_XVIDEO"
6042 echo "XSync support .......... $CFG_XSYNC"
6043 echo "Xinerama support ....... $CFG_XINERAMA"
6044 echo "Xcursor support ........ $CFG_XCURSOR"
6045 echo "Xfixes support ......... $CFG_XFIXES"
6046 echo "Xrandr support ......... $CFG_XRANDR"
6047 echo "Xi support ............. $CFG_XINPUT"
6048 echo "MIT-SHM support ........ $CFG_MITSHM"
6049 echo "FontConfig support ..... $CFG_FONTCONFIG"
6050 echo "XKB Support ............ $CFG_XKB"
6051 echo "immodule support ....... $CFG_IM"
6052 echo "GTK theme support ...... $CFG_QGTKSTYLE"
6053
6054 [ "$CFG_SQL_mysql" != "no" ] && echo "MySQL support .......... $CFG_SQL_mysql"
6055 [ "$CFG_SQL_psql" != "no" ] && echo "PostgreSQL support ..... $CFG_SQL_psql"
6056 [ "$CFG_SQL_odbc" != "no" ] && echo "ODBC support ........... $CFG_SQL_odbc"
6057 [ "$CFG_SQL_oci" != "no" ] && echo "OCI support ............ $CFG_SQL_oci"
6058 [ "$CFG_SQL_tds" != "no" ] && echo "TDS support ............ $CFG_SQL_tds"
6059 [ "$CFG_SQL_db2" != "no" ] && echo "DB2 support ............ $CFG_SQL_db2"
6060 [ "$CFG_SQL_ibase" != "no" ] && echo "InterBase support ...... $CFG_SQL_ibase"
6061 [ "$CFG_SQL_sqlite2" != "no" ] && echo "SQLite 2 support ....... $CFG_SQL_sqlite2"
6062 [ "$CFG_SQL_sqlite" != "no" ] && echo "SQLite support ......... $CFG_SQL_sqlite ($CFG_SQLITE)"
6063
6064 OPENSSL_LINKAGE=""
6065 if [ "$CFG_OPENSSL" = "yes" ]; then
6066     OPENSSL_LINKAGE="(run-time)"
6067 elif [ "$CFG_OPENSSL" = "linked" ]; then
6068     OPENSSL_LINKAGE="(linked)"
6069 fi
6070 echo "OpenSSL support ........ $CFG_OPENSSL $OPENSSL_LINKAGE"
6071 echo "Alsa support ........... $CFG_ALSA"
6072 if [ "$BUILD_ON_MAC" = "yes" ]; then
6073     echo "CoreWlan support ....... $CFG_COREWLAN"
6074 fi
6075 echo "libICU support ......... $CFG_ICU"
6076 echo "PCRE support ........... $CFG_PCRE"
6077 if [ "$CFG_XCB_LIMITED" = "yes" ] && [ "$CFG_XCB" = "yes" ]; then
6078     echo "Xcb support ............ limited (old version)"
6079 else
6080     echo "Xcb support ............ $CFG_XCB"
6081 fi
6082 echo "Xrender support ........ $CFG_XRENDER"
6083 if [ "$XPLATFORM_MAEMO" = "yes" ] && [ "$CFG_XCB" = "yes" ]; then
6084     echo "XInput2 support ........ $CFG_XINPUT2"
6085 fi
6086 echo "EGLFS support .......... $CFG_EGLFS"
6087 echo "DirectFB support ....... $CFG_DIRECTFB"
6088 echo
6089
6090 # complain about not being able to use dynamic plugins if we are using a static build
6091 if [ "$CFG_SHARED" = "no" ]; then
6092     echo
6093     echo "WARNING: Using static linking will disable the use of dynamically"
6094     echo "loaded plugins. Make sure to import all needed static plugins,"
6095     echo "or compile needed modules into the library."
6096     echo
6097 fi
6098 if [ "$CFG_OPENSSL" = "linked" ] && [ "$OPENSSL_LIBS" = "" ]; then
6099     echo
6100     echo "NOTE: When linking against OpenSSL, you can override the default"
6101     echo "library names through OPENSSL_LIBS."
6102     echo "For example:"
6103     echo "    OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' ./configure -openssl-linked"
6104     echo
6105 fi
6106
6107 exec 1>&3 3>&- # restore stdout
6108 cat $outpath/config.summary # display config feedback to user
6109
6110 if [ "$BUILD_ON_MAC" = "yes" ] && [ "$CFG_FRAMEWORK" = "yes" ] && [ "$CFG_DEBUG" = "yes" ] && [ "$CFG_DEBUG_RELEASE" = "no" ]; then
6111     echo
6112     echo "Error: debug-only framework builds are not supported. Configure with -no-framework"
6113     echo "if you want a pure debug build."
6114     echo
6115     exit 1
6116 fi
6117
6118 sepath=`echo "$relpath" | sed -e 's/\\./\\\\./g'`
6119 PROCS=1
6120 EXEC=""
6121
6122
6123 #-------------------------------------------------------------------------------
6124 # build makefiles based on the configuration
6125 #-------------------------------------------------------------------------------
6126
6127 echo "Finding project files. Please wait..."
6128 if [ "$CFG_NOPROCESS" != "yes" ]; then
6129     "$outpath/bin/qmake" -prl -r "${relpath}/qtbase.pro"
6130     if [ -f "${relpath}/qtbase.pro" ]; then
6131         mkfile="${outpath}/Makefile"
6132         [ -f "$mkfile" ] && chmod +w "$mkfile"
6133         QTDIR="$outpath" "$outpath/bin/qmake" -spec "$XQMAKESPEC" "${relpath}/qtbase.pro" -o "$mkfile"
6134     fi
6135 fi
6136
6137 # .projects      -> projects to process
6138 # .projects.1    -> qt and moc
6139 # .projects.2    -> subdirs and libs
6140 # .projects.3    -> the rest
6141 rm -f .projects .projects.1 .projects.2 .projects.3
6142
6143 QMAKE_PROJECTS=`find "$relpath/." -name '*.pro' -print | sed 's-/\./-/-'`
6144 if [ -z "$AWK" ]; then
6145     for p in `echo $QMAKE_PROJECTS`; do
6146         echo "$p" >> .projects
6147     done
6148 else
6149     cat >projects.awk <<EOF
6150 BEGIN {
6151     files = 0
6152     target_file = ""
6153     input_file = ""
6154
6155     first = "./.projects.1.tmp"
6156     second = "./.projects.2.tmp"
6157     third = "./.projects.3.tmp"
6158 }
6159
6160 FNR == 1 {
6161     if ( input_file ) {
6162         if ( ! target_file )
6163             target_file = third
6164         print input_file >target_file
6165     }
6166
6167     matched_target = 0
6168     template_lib = 0
6169     input_file = FILENAME
6170     target_file = ""
6171 }
6172
6173 /^(TARGET.*=)/ {
6174     if ( \$3 == "moc" || \$3 ~ /^Qt/ ) {
6175         target_file = first
6176         matched_target = 1
6177     } else if ( \$3 == "lrelease" || \$3 == "qm_phony_target" ) {
6178         target_file = second
6179         matched_target = 1
6180     }
6181 }
6182
6183 matched_target == 0 && /^(TEMPLATE.*=)/ {
6184     if ( \$3 == "subdirs" )
6185         target_file = second
6186     else if ( \$3 == "lib" )
6187         template_lib = 1
6188     else
6189         target_file = third
6190 }
6191
6192 matched_target == 0 && template_lib == 1 && /^(CONFIG.*=)/ {
6193     if ( \$0 ~ /plugin/ )
6194         target_file = third
6195     else
6196         target_file = second
6197 }
6198
6199 END {
6200     if ( input_file ) {
6201         if ( ! target_file )
6202             target_file = third
6203         print input_file >>target_file
6204     }
6205 }
6206
6207 EOF
6208
6209     rm -f .projects.all
6210     for p in `echo $QMAKE_PROJECTS`; do
6211        echo "$p" >> .projects.all
6212     done
6213
6214     # if you get errors about the length of the command line to awk, change the -l arg
6215     # to split below
6216     split -l 100 .projects.all .projects.all.
6217     for p in .projects.all.*; do
6218        "$AWK" -f projects.awk `cat $p`
6219        [ -f .projects.1.tmp ] && cat .projects.1.tmp >> .projects.1
6220        [ -f .projects.2.tmp ] && cat .projects.2.tmp >> .projects.2
6221        [ -f .projects.3.tmp ] && cat .projects.3.tmp >> .projects.3
6222        rm -f .projects.1.tmp .projects.2.tmp .projects.3.tmp $p
6223     done
6224     rm -f .projects.all* projects.awk
6225
6226     [ -f .projects.1 ] && cat .projects.1 >>.projects
6227     [ -f .projects.2 ] && cat .projects.2 >>.projects
6228     rm -f .projects.1 .projects.2
6229     if [ -f .projects.3 ] && [ "$OPT_FAST" = "no" ]; then
6230        cat .projects.3 >>.projects
6231        rm -f .projects.3
6232     fi
6233 fi
6234 # don't sort Qt and MOC in with the other project files
6235 # also work around a segfaulting uniq(1)
6236 if [ -f .sorted.projects.2 ]; then
6237     sort .sorted.projects.2 > .sorted.projects.2.new
6238     mv -f .sorted.projects.2.new .sorted.projects.2
6239     cat .sorted.projects.2 >> .sorted.projects.1
6240 fi
6241 [ -f .sorted.projects.1 ] && sort .sorted.projects.1 >> .sorted.projects
6242 rm -f .sorted.projects.2 .sorted.projects.1
6243
6244 NORM_PROJECTS=0
6245 FAST_PROJECTS=0
6246 if [ -f .projects ]; then
6247    uniq .projects >.tmp
6248    mv -f .tmp .projects
6249    NORM_PROJECTS=`cat .projects | wc -l | sed -e "s, ,,g"`
6250 fi
6251 if [ -f .projects.3 ]; then
6252    uniq .projects.3 >.tmp
6253    mv -f .tmp .projects.3
6254    FAST_PROJECTS=`cat .projects.3 | wc -l | sed -e "s, ,,g"`
6255 fi
6256 echo "  `expr $NORM_PROJECTS + $FAST_PROJECTS` projects found."
6257 echo
6258
6259 PART_ROOTS=
6260 for part in $CFG_BUILD_PARTS; do
6261     case "$part" in
6262     tools) PART_ROOTS="$PART_ROOTS tools" ;;
6263     libs) PART_ROOTS="$PART_ROOTS src" ;;
6264     translations) PART_ROOTS="$PART_ROOTS translations" ;;
6265     examples) PART_ROOTS="$PART_ROOTS examples" ;;
6266     *) ;;
6267     esac
6268 done
6269
6270 if [ "$CFG_DEV" = "yes" ]; then
6271     PART_ROOTS="$PART_ROOTS tests"
6272 fi
6273
6274 echo "Creating makefiles. Please wait..."
6275 for file in .projects .projects.3; do
6276     [ '!' -f "$file" ] && continue
6277     for a in `cat $file`; do
6278         IN_ROOT=no
6279         for r in $PART_ROOTS; do
6280             if echo "$a" | grep "^$r" >/dev/null 2>&1 || echo "$a" | grep "^$relpath/$r" >/dev/null 2>&1; then
6281                 IN_ROOT=yes
6282                 break
6283             fi
6284         done
6285         [ "$IN_ROOT" = "no" ] && continue
6286
6287         case $a in
6288         *winmain/winmain.pro)
6289             if [ "$CFG_NOPROCESS" = "yes" ] || [ "$XPLATFORM_MINGW" != "yes" ]; then
6290                 continue
6291             fi
6292             SPEC=$XQMAKESPEC ;;
6293         */qmake/qmake.pro) continue ;;
6294         *tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*|*tools/qdoc*|*tools/qdbusxml2cpp*|*tools/qdbuscpp2xml*) SPEC=$QMAKESPEC ;;
6295         *) if [ "$CFG_NOPROCESS" = "yes" ]; then
6296               continue
6297            else
6298               SPEC=$XQMAKESPEC
6299            fi;;
6300         esac
6301         dir=`dirname "$a" | sed -e "s;$sepath;.;g"`
6302         test -d "$dir" || mkdir -p "$dir"
6303         OUTDIR="$outpath/$dir"
6304         if [ -f "${OUTDIR}/Makefile" ] && [ "$OPT_FAST" = "yes" ]; then
6305             # fast configure - the makefile exists, skip it
6306             # since the makefile exists, it was generated by qmake, which means we
6307             # can skip it, since qmake has a rule to regenerate the makefile if the .pro
6308             # file changes...
6309             [ "$OPT_VERBOSE" = "yes" ] && echo "  skipping $a"
6310             continue;
6311         fi
6312         QMAKE_SPEC_ARGS="-spec $SPEC"
6313         echo $ECHO_N "  for $a$ECHO_C"
6314
6315         QMAKE="$outpath/bin/qmake"
6316         QMAKE_ARGS="$QMAKE_SWITCHES $QMAKE_SPEC_ARGS"
6317         if [ "$file" = ".projects.3" ]; then
6318             echo " (fast)"
6319
6320             cat >"${OUTDIR}/Makefile" <<EOF
6321 # ${OUTDIR}/Makefile: generated by configure
6322 #
6323 # WARNING: This makefile will be replaced with a real makefile.
6324 # All changes made to this file will be lost.
6325 EOF
6326             [ "$CFG_DEBUG_RELEASE" = "no" ] && echo "first_target: first" >>${OUTDIR}/Makefile
6327
6328             cat >>"${OUTDIR}/Makefile" <<EOF
6329 QMAKE = "$QMAKE"
6330 all clean install qmake first Makefile: FORCE
6331         \$(QMAKE) $QMAKE_ARGS -o "$OUTDIR" "$a"
6332         cd "$OUTDIR"
6333         \$(MAKE) \$@
6334
6335 FORCE:
6336
6337 EOF
6338         else
6339             if [ "$OPT_VERBOSE" = "yes" ]; then
6340                 echo " (`basename $SPEC`)"
6341                 echo "$QMAKE" $QMAKE_ARGS -o "$OUTDIR" "$a"
6342             else
6343                 echo
6344             fi
6345
6346             [ -f "${OUTDIR}/Makefile" ] && chmod +w "${OUTDIR}/Makefile"
6347             QTDIR="$outpath" "$QMAKE" $QMAKE_ARGS -o "$OUTDIR" "$a"
6348        fi
6349     done
6350 done
6351 rm -f .projects .projects.3
6352
6353 #-------------------------------------------------------------------------------
6354 # check for platforms that we don't yet know about
6355 #-------------------------------------------------------------------------------
6356 if [ "$CFG_ARCH" = "unknown" ]; then
6357 cat <<EOF
6358
6359         NOTICE: configure was unable to determine the architecture
6360         for the $XQMAKESPEC target.
6361
6362         Qt will not use a specialized implementation for any atomic
6363         operations. Instead a generic implemention based on either GCC
6364         intrinsics or C++11 std::atomic<T> will be used (when
6365         available). The generic implementations are generally as fast
6366         as and always as safe as a specialized implementation.
6367
6368         If no generic implementation is available, Qt will use a
6369         fallback UNIX implementation which uses a single
6370         pthread_mutex_t to protect all atomic operations. This
6371         implementation is the slow (but safe) fallback implementation
6372         for architectures Qt does not yet support.
6373 EOF
6374 fi
6375
6376 #-------------------------------------------------------------------------------
6377 # check if the user passed the -no-zlib option, which is no longer supported
6378 #-------------------------------------------------------------------------------
6379 if [ -n "$ZLIB_FORCED" ]; then
6380     which_zlib="supplied"
6381     if [ "$CFG_ZLIB" = "system" ]; then
6382         which_zlib="system"
6383     fi
6384
6385 cat <<EOF
6386
6387         NOTICE: The -no-zlib option was supplied but is no longer
6388         supported.
6389
6390         Qt now requires zlib support in all builds, so the -no-zlib
6391         option was ignored. Qt will be built using the $which_zlib
6392         zlib.
6393 EOF
6394 fi
6395
6396 #-------------------------------------------------------------------------------
6397 # check if the user passed the obsoleted -wayland or -no-wayland flag
6398 #-------------------------------------------------------------------------------
6399 if [ "$CFG_OBSOLETE_WAYLAND" = "yes" ]; then
6400 cat <<EOF
6401
6402         NOTICE: The -wayland and -no-wayland flags are now obsolete
6403
6404         All configuring of QtWayland plugin and QtCompositor happens in the module
6405 EOF
6406 fi
6407
6408 #-------------------------------------------------------------------------------
6409 # check if the user passed the obsoleted -arch or -host-arch options
6410 #-------------------------------------------------------------------------------
6411 if [ "$OPT_OBSOLETE_HOST_ARG" = "yes" ]; then
6412 cat <<EOF
6413
6414         NOTICE: The -arch and -host-arch options are obsolete.
6415
6416         Qt now detects the target and host architectures based on compiler
6417         output. Qt will be built using $CFG_ARCH for the target architecture
6418         and $CFG_HOST_ARCH for the host architecture (note that these two
6419         will be the same unless you are cross-compiling).
6420 EOF
6421 fi
6422
6423 #-------------------------------------------------------------------------------
6424 # finally save the executed command to another script
6425 #-------------------------------------------------------------------------------
6426 if [ `basename $0` != "config.status" ]; then
6427     CONFIG_STATUS="$relpath/$relconf $OPT_CMDLINE"
6428
6429     # add the system variables
6430     for varname in $SYSTEM_VARIABLES; do
6431         cmd=`echo \
6432 'if [ -n "\$'${varname}'" ]; then
6433     CONFIG_STATUS="'${varname}'='"'\\\$${varname}'"' \$CONFIG_STATUS"
6434 fi'`
6435         eval "$cmd"
6436     done
6437
6438     echo "$CONFIG_STATUS" | grep '\-confirm\-license' >/dev/null 2>&1 || CONFIG_STATUS="$CONFIG_STATUS -confirm-license"
6439
6440     [ -f "$outpath/config.status" ] && rm -f "$outpath/config.status"
6441     echo "#!/bin/sh" > "$outpath/config.status"
6442     [ -n "$PKG_CONFIG_SYSROOT_DIR" ] && \
6443         echo "export PKG_CONFIG_SYSROOT_DIR=$PKG_CONFIG_SYSROOT_DIR" >> "$outpath/config.status"
6444     [ -n "$PKG_CONFIG_LIBDIR" ] && \
6445         echo "export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR" >> "$outpath/config.status"
6446     echo "if [ \"\$#\" -gt 0 ]; then" >> "$outpath/config.status"
6447     echo "  $CONFIG_STATUS \"\$@\"" >> "$outpath/config.status"
6448     echo "else" >> "$outpath/config.status"
6449     echo "  $CONFIG_STATUS" >> "$outpath/config.status"
6450     echo "fi" >> "$outpath/config.status"
6451     chmod +x "$outpath/config.status"
6452 fi
6453
6454 if [ -n "$RPATH_MESSAGE" ]; then
6455     echo
6456     echo "$RPATH_MESSAGE"
6457 fi
6458
6459 MAKE=`basename "$MAKE"`
6460 echo
6461 echo Qt is now configured for building. Just run \'$MAKE\'.
6462 if [ "$relpath" = "$QT_INSTALL_PREFIX" ]; then
6463     echo Once everything is built, Qt is installed.
6464     echo You should not run \'$MAKE install\'.
6465 else
6466     echo Once everything is built, you must run \'$MAKE install\'.
6467     echo Qt will be installed into $QT_INSTALL_PREFIX
6468 fi
6469 echo
6470 echo To reconfigure, run \'$MAKE confclean\' and \'configure\'.
6471 echo