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