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