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