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