/
configure
executable file
·7645 lines (7039 loc) · 250 KB
1
2
3
#!/bin/sh
#############################################################################
##
4
## Copyright (C) 2015 The Qt Company Ltd.
5
## Copyright (C) 2015 Intel Corporation.
6
## Contact: http://www.qt.io/licensing/
7
8
9
##
## This file is the build configuration utility of the Qt Toolkit.
##
10
## $QT_BEGIN_LICENSE:LGPL21$
11
12
13
14
## Commercial License Usage
## Licensees holding valid commercial Qt licenses may use this file in
## accordance with the commercial license agreement provided with the
## Software or, alternatively, in accordance with the terms contained in
15
16
17
## a written agreement between you and The Qt Company. For licensing terms
## and conditions see http://www.qt.io/terms-conditions. For further
## information use the contact form at http://www.qt.io/contact-us.
18
##
19
## GNU Lesser General Public License Usage
20
## Alternatively, this file may be used under the terms of the GNU Lesser
21
22
23
24
25
26
## General Public License version 2.1 or version 3 as published by the Free
## Software Foundation and appearing in the file LICENSE.LGPLv21 and
## LICENSE.LGPLv3 included in the packaging of this file. Please review the
## following information to ensure the GNU Lesser General Public License
## requirements will be met: https://www.gnu.org/licenses/lgpl.html and
## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
27
##
28
29
## As a special exception, The Qt Company gives you certain additional
## rights. These rights are described in The Qt Company LGPL Exception
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
##
## $QT_END_LICENSE$
##
#############################################################################
#-------------------------------------------------------------------------------
# script initialization
#-------------------------------------------------------------------------------
# the name of this script
relconf=`basename $0`
# the directory of this script is the "source tree"
relpath=`dirname $0`
relpath=`(cd "$relpath"; /bin/pwd)`
# the current directory is the "build tree" or "object tree"
outpath=`/bin/pwd`
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# where to find which..
unixtests="$relpath/config.tests/unix"
mactests="$relpath/config.tests/mac"
WHICH="$unixtests/which.test"
PERL=`$WHICH perl 2>/dev/null`
# find out which awk we want to use, prefer gawk, then nawk, then regular awk
AWK=
for e in gawk nawk awk; do
if "$WHICH" $e >/dev/null 2>&1 && ( $e -f /dev/null /dev/null ) >/dev/null 2>&1; then
AWK=$e
break
fi
done
# find a make command
if [ -z "$MAKE" ]; then
MAKE=
for mk in gmake make; do
if "$WHICH" $mk >/dev/null 2>&1; then
MAKE=`"$WHICH" $mk`
break
fi
done
if [ -z "$MAKE" ]; then
echo >&2 "You don't seem to have 'make' or 'gmake' in your PATH."
echo >&2 "Cannot proceed."
exit 1
fi
# export MAKE, we need it later in the config.tests
export MAKE
80
81
fi
82
83
84
85
86
87
88
# do this early so we don't store it in config.status
CFG_TOPLEVEL=
if [ x"$1" = x"-top-level" ]; then
CFG_TOPLEVEL=yes
shift
fi
89
# later cache the command line in config.status
90
91
92
93
94
95
96
OPT_CMDLINE=
for i in "$@"; do
if [ "x$i" != "x-v" ]; then
[ -z "${i##* *}" ] && i="'$i'"
OPT_CMDLINE="$OPT_CMDLINE $i"
fi
done
97
98
# initialize global variables
99
CONFIG_SEPARATORS=`printf ' \t'`
100
101
102
103
104
105
106
QMAKE_SWITCHES=
QMAKE_VARS=
QMAKE_CONFIG=
QTCONFIG_CONFIG=
QT_CONFIG=
SUPPORTED=
QMAKE_VARS_FILE=.qmake.vars
107
DEVICE_VARS_FILE=.device.vars
108
109
:> "$QMAKE_VARS_FILE"
110
:> "$DEVICE_VARS_FILE"
111
112
113
114
115
116
117
118
119
120
#-------------------------------------------------------------------------------
# utility functions
#-------------------------------------------------------------------------------
shellEscape()
{
echo "$@" | sed 's/ /\ /g'
}
121
122
123
124
125
126
127
shellQuoteLines()
{
# The call of the outer echo makes the shell word-split the output of
# the nested pipe, thus effectively converting newlines to spaces.
echo `echo "$1" | sed 's,^[^ ]* .*$,"&",'`
}
128
129
makeabs()
{
130
131
local FILE="$1"
local RES="$FILE"
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
if [ -z "${FILE##/*}" ]; then
true
elif [ "$OSTYPE" = "msys" -a -z "${FILE##[a-zA-Z]:[/\\]*}" ]; then
true
else
RES=$PWD/$FILE
fi
RES=$RES/
while true; do
nres=`echo "$RES" | sed 's,/[^/][^/]*/\.\./,/,g; s,/\./,/,g'`
test x"$nres" = x"$RES" && break
RES=$nres
done
echo "$RES" | sed 's,//,/,g; s,/$,,'
}
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# Adds a new qmake variable to the cache
# Usage: QMakeVar mode varname contents
# where mode is one of: set, add, del
QMakeVar()
{
case "$1" in
set)
eq="="
;;
add)
eq="+="
;;
del)
eq="-="
;;
*)
echo >&2 "BUG: wrong command to QMakeVar: $1"
;;
esac
echo "$2" "$eq" "$3" >> "$QMAKE_VARS_FILE"
}
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
shellArgumentListToQMakeListHelper()
{
local retval
for arg in "$@"; do retval="$retval \"$arg\""; done
echo "$retval"
}
# Convert a string usable on a shell command line into word-by-word quoted
# qmake list.
shellArgumentListToQMakeList()
{
# eval is needed for the shell to interpret the backslash escape sequences
eval shellArgumentListToQMakeListHelper "$@"
}
186
187
# Helper function for getQMakeConf. It parses include statements in
# qmake.conf and prints out the expanded file
188
expandQMakeConf()
189
190
191
{
while read line; do case "$line" in
include*)
192
inc_file=`echo "$line" | sed -n -e '/^include.*(.*)/s/include.*(\(.*\)).*$/\1/p'`
193
194
195
196
197
198
current_dir=`dirname "$1"`
conf_file="$current_dir/$inc_file"
if [ ! -f "$conf_file" ]; then
echo "WARNING: Unable to find file $conf_file" >&2
continue
fi
199
expandQMakeConf "$conf_file"
200
;;
201
202
203
204
205
206
*load\(device_config\)*)
conf_file="$DEVICE_VARS_FILE"
if [ ! -f "$conf_file" ]; then
echo "WARNING: Unable to find file $conf_file" >&2
continue
fi
207
expandQMakeConf "$conf_file"
208
;;
209
210
211
212
213
214
*)
echo "$line"
;;
esac; done < "$1"
}
215
extractQMakeVariables()
216
{
217
LC_ALL=C $AWK '
218
219
220
221
BEGIN {
values["LITERAL_WHITESPACE"] = " "
values["LITERAL_DOLLAR"] = "$"
}
222
223
224
225
226
227
/^!?host_build:/ {
scopeStart = index($0, ":") + 1
condition = substr($0, 0, scopeStart - 2)
if (condition != "'"$1"'") { next }
$0 = substr($0, scopeStart)
}
228
/^[_A-Z0-9.]+[ \t]*\+?=/ {
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
valStart = index($0, "=") + 1
append = 0
if (substr($0, valStart - 2, 1) == "+") {
append = 1
}
variable = substr($0, 0, valStart - 2 - append)
value = substr($0, valStart)
gsub("[ \t]+", "", variable)
gsub("^[ \t]+", "", value)
gsub("[ \t]+$", "", value)
ovalue = ""
while (match(value, /\$\$(\{[_A-Z0-9.]+\}|[_A-Z0-9.]+)/)) {
ovalue = ovalue substr(value, 1, RSTART - 1)
var = substr(value, RSTART + 2, RLENGTH - 2)
value = substr(value, RSTART + RLENGTH)
247
if (var ~ /^\{/) {
248
249
250
251
var = substr(var, 2, length(var) - 2)
}
ovalue = ovalue values[var]
}
252
253
254
value = ovalue value
ovalue = ""
255
while (match(value, /\$\$system\(("[^"]*"|[^)]*)\)/)) {
256
257
ovalue = ovalue substr(value, 1, RSTART - 1)
cmd = substr(value, RSTART + 9, RLENGTH - 10)
258
gsub(/^"|"$/, "", cmd)
259
260
261
262
263
264
265
value = substr(value, RSTART + RLENGTH)
while ((cmd | getline line) > 0) {
ovalue = ovalue line
}
close(cmd)
}
value = ovalue value
266
267
268
combinedValue = values[variable]
if (append == 1 && length(combinedValue) > 0) {
269
combinedValue = combinedValue " " value
270
} else {
271
combinedValue = value
272
273
274
275
276
277
278
279
280
281
282
}
values[variable] = combinedValue
}
END {
for (var in values) {
print var "=" values[var]
}
}
'
}
283
getSingleQMakeVariable()
284
285
286
{
echo "$2" | $AWK "/^($1)=/ { print substr(\$0, index(\$0, \"=\") + 1) }"
}
287
288
289
290
291
292
293
294
macSDKify()
{
# Normally we take care of sysrootifying in sdk.prf, but configure extracts some
# values before qmake is even built, so we have to duplicate the logic here.
sdk=$(getSingleQMakeVariable "QMAKE_MAC_SDK" "$1")
if [ -z "$sdk" ]; then echo "QMAKE_MAC_SDK must be set when building on Mac" >&2; exit 1; fi
295
sysroot=$(/usr/bin/xcodebuild -sdk $sdk -version Path 2>/dev/null)
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
if [ -z "$sysroot" ]; then echo "Failed to resolve SDK path for '$sdk'" >&2; exit 1; fi
case "$sdk" in
macosx*)
version_min_flag="-mmacosx-version-min=$(getSingleQMakeVariable QMAKE_MACOSX_DEPLOYMENT_TARGET "$1")"
;;
iphoneos*)
version_min_flag="-miphoneos-version-min=$(getSingleQMakeVariable QMAKE_IOS_DEPLOYMENT_TARGET "$1")"
;;
iphonesimulator*)
version_min_flag="-mios-simulator-version-min=$(getSingleQMakeVariable QMAKE_IOS_DEPLOYMENT_TARGET "$1")"
;;
*)
;;
esac
echo "$1" | while read line; do
case "$line" in
QMAKE_CC=*|QMAKE_CXX=*|QMAKE_FIX_RPATH=*|QMAKE_AR=*|QMAKE_RANLIB=*|QMAKE_LINK=*|QMAKE_LINK_SHLIB=*)
# Prefix tool with toolchain path
var=$(echo "$line" | cut -d '=' -f 1)
val=$(echo "$line" | cut -d '=' -f 2-)
318
sdk_val=$(/usr/bin/xcrun -sdk $sdk -find $(echo $val | cut -d ' ' -f 1))
319
320
321
val=$(echo $sdk_val $(echo $val | cut -s -d ' ' -f 2-))
echo "$var=$val"
;;
322
QMAKE_CFLAGS=*|QMAKE_CXXFLAGS=*)
323
324
325
326
327
328
329
330
331
332
333
334
echo "$line -isysroot $sysroot $version_min_flag"
;;
QMAKE_LFLAGS=*)
echo "$line -Wl,-syslibroot,$sysroot $version_min_flag"
;;
*)
echo "$line"
;;
esac
done
}
335
336
337
338
# relies on $QMAKESPEC being set correctly. parses include statements in
# qmake.conf and prints out the expanded file
getQMakeConf()
{
339
if [ -z "$specvals" ]; then
340
specvals=`expandQMakeConf "$QMAKESPEC/qmake.conf" | extractQMakeVariables "host_build"`
341
if [ "$BUILD_ON_MAC" = "yes" ]; then specvals=$(macSDKify "$specvals"); fi
342
fi
343
getSingleQMakeVariable "$1" "$specvals"
344
345
346
347
348
}
getXQMakeConf()
{
if [ -z "$xspecvals" ]; then
349
xspecvals=`expandQMakeConf "$XQMAKESPEC/qmake.conf" | extractQMakeVariables "!host_build"`
350
if [ "$XPLATFORM_MAC" = "yes" ]; then xspecvals=$(macSDKify "$xspecvals"); fi
351
fi
352
getSingleQMakeVariable "$1" "$xspecvals"
353
354
}
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
testXConfig()
{
# Put a space on each end of the CONFIG value so that searching for the
# target with whitespace on either side will work even when it's the
# first/last/only item in the CONFIG value.
case \ `getXQMakeConf CONFIG`\ in
*[${CONFIG_SEPARATORS}]$1[${CONFIG_SEPARATORS}]*)
return 0
;;
*)
return 1
;;
esac
}
370
371
372
373
374
compilerSupportsFlag()
{
cat >conftest.cpp <<EOF
int main() { return 0; }
EOF
375
if [ "$OPT_VERBOSE" = "yes" ]; then
376
"$@" -o conftest-out conftest.cpp
377
else
378
"$@" -o conftest-out conftest.cpp >/dev/null 2>&1
379
fi
380
ret=$?
381
rm -f conftest.cpp conftest-out
382
383
384
385
386
return $ret
}
linkerSupportsFlag()
{
387
388
compiler=$1
shift
389
390
391
392
393
394
lflags=-Wl
for flag
do
safe_flag=`shellEscape "$flag"`
lflags=$lflags,$safe_flag
done
395
396
397
if [ $CFG_USE_GOLD_LINKER = yes ]; then
lflags="-fuse-ld=gold $lflags"
fi
398
compilerSupportsFlag $compiler $lflags
399
400
}
401
402
403
404
405
406
407
# $1: newline-separated list of default paths
# stdin: input path
# stdout: input path or nothing
filterDefaultPaths()
{
local path
path=`cat`
408
path=`makeabs "$path"`
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
echo "$1" | grep "^$path\$" > /dev/null || echo "$path"
}
filterIncludePath()
{
filterDefaultPaths "$DEFAULT_INCDIRS"
}
filterLibraryPath()
{
filterDefaultPaths "$DEFAULT_LIBDIRS"
}
filterPathOptionsHelper()
{
local flag defpaths sep p path
flag=$1; shift
defpaths=$1; shift
sep=
for p in "$@"; do
path=${p#$flag}
if [ "x$path" != "x$p" ]; then
path=`echo "$path" | filterDefaultPaths "$defpaths"`
test -z "$path" && continue
fi
# Re-quote for shell & qmake
p=`echo "$p" | sed 's,[^ ]* .*,"&",g'`
printf "%s%s" "$sep" "$p"
sep=" "
done
echo
}
# $1: flag
# $2: newline-separated list of default paths
# stdin: list of command line options
# sdout: stdin without the options naming default paths
filterPathOptions()
{
# The eval does escape interpretation for us
eval filterPathOptionsHelper $1 "\"$2\"" "`cat`"
}
filterIncludeOptions()
{
filterPathOptions -I "$DEFAULT_INCDIRS"
}
filterLibraryOptions()
{
filterPathOptions -L "$DEFAULT_LIBDIRS"
}
462
463
464
465
466
467
468
469
470
471
#-------------------------------------------------------------------------------
# device options
#-------------------------------------------------------------------------------
DeviceVar()
{
case "$1" in
set)
eq="="
;;
*)
472
echo >&2 "BUG: wrong command to DeviceVar: $1"
473
474
475
476
477
478
;;
esac
echo "$2" "$eq" "$3" >> "$DEVICE_VARS_FILE"
}
479
480
resolveDeviceMkspec()
{
481
result=$(find "$relpath/mkspecs/devices/" -type d -name "*$1*" | sed "s,^$relpath/mkspecs/,,")
482
483
match_count=$(echo "$result" | wc -w)
if [ "$match_count" -gt 1 ]; then
484
echo >&2 "Error: Multiple matches for device '$1'. Candidates are:"
485
tabbed_result=$(echo "$result" | sed 's,^, ,')
486
487
488
echo >&2 "$tabbed_result"
echo "undefined"
elif [ "$match_count" -eq 0 ]; then
489
echo >&2 "Error: No device matching '$1'"
490
echo "undefined"
491
492
else
echo "$result"
493
494
495
fi
}
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
#-------------------------------------------------------------------------------
# operating system detection
#-------------------------------------------------------------------------------
# need that throughout the script
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
# detect the "echo without newline" style. usage: echo $ECHO_N "<string>$ECHO_C"
if echo '\c' | grep '\c' >/dev/null; then
ECHO_N=-n
else
ECHO_C='\c'
fi
#-------------------------------------------------------------------------------
# window system detection
#-------------------------------------------------------------------------------
BUILD_ON_MAC=no
if [ -d /System/Library/Frameworks/Carbon.framework ]; then
BUILD_ON_MAC=yes
fi
521
BUILD_ON_MSYS=no
522
HOST_DIRLIST_SEP=":"
523
DEV_NULL=/dev/null
524
if [ "$OSTYPE" = "msys" ]; then
525
HOST_DIRLIST_SEP=";"
526
BUILD_ON_MSYS=yes
527
528
DEV_NULL=/tmp/empty-file
echo "" > $DEV_NULL
529
530
relpath=`(cd "$relpath"; pwd -W)`
outpath=`pwd -W`
531
fi
532
533
534
535
536
537
538
539
540
541
542
543
544
545
#-------------------------------------------------------------------------------
# Verify Xcode installation on Mac OS
#-------------------------------------------------------------------------------
if [ "$BUILD_ON_MAC" = "yes" ]; then
if ! /usr/bin/xcode-select --print-path >/dev/null 2>&1; then
echo >&2
echo " No Xcode is selected. Use xcode-select -switch to choose an Xcode" >&2
echo " version. See the xcode-select man page for more information." >&2
echo >&2
exit 2
fi
546
if ! /usr/bin/xcrun -find xcodebuild >/dev/null 2>&1; then
547
548
549
550
551
552
553
554
echo >&2
echo " Xcode not set up properly. You may need to confirm the license" >&2
echo " agreement by running /usr/bin/xcodebuild without arguments." >&2
echo >&2
exit 2
fi
fi
555
556
557
#-----------------------------------------------------------------------------
# Qt version detection
#-----------------------------------------------------------------------------
558
QT_VERSION=
559
560
561
QT_MAJOR_VERSION=
QT_MINOR_VERSION=0
QT_PATCH_VERSION=0
562
563
564
565
eval `sed -n -e 's/^MODULE_VERSION = \(\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*\)$/QT_VERSION=\1\
QT_MAJOR_VERSION=\2\
QT_MINOR_VERSION=\3\
QT_PATCH_VERSION=\4/p' < "$relpath"/.qmake.conf`
566
if [ -z "$QT_MAJOR_VERSION" ]; then
567
echo "Cannot process version from .qmake.conf"
568
569
570
571
572
573
574
575
echo "Cannot proceed."
exit 1
fi
#-------------------------------------------------------------------------------
# initalize variables
#-------------------------------------------------------------------------------
576
SYSTEM_VARIABLES="AR RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS"
577
578
for varname in $SYSTEM_VARIABLES; do
qmakevarname="${varname}"
579
qmakecmdargs=""
580
581
582
583
584
# use LDFLAGS for autoconf compat, but qmake uses QMAKE_LFLAGS
if [ "${varname}" = "LDFLAGS" ]; then
qmakevarname="LFLAGS"
elif [ "${varname}" = "LD" ]; then
qmakevarname="LINK"
585
586
587
588
589
elif [ "${varname}" = "AR" ]; then
# QMAKE_AR needs to be set to "/path/to/ar cqs" but the
# environment variable will be set to the command only so we
# need to append " cqs" for autoconf compatibility
qmakecmdargs=" cqs"
590
591
592
fi
cmd=`echo \
'if [ -n "\$'${varname}'" ]; then
593
QMakeVar set QMAKE_'${qmakevarname}' "\$'${varname}${qmakecmdargs}'"
594
595
596
fi'`
eval "$cmd"
done
597
598
599
600
601
602
# Use CC/CXX to run config.tests
mkdir -p "$outpath/config.tests"
rm -f "$outpath/config.tests/.qmake.cache"
cp "$QMAKE_VARS_FILE" "$outpath/config.tests/.qmake.cache"
603
QMakeVar add styles "mac fusion windows"
604
605
606
607
608
# QTDIR may be set and point to an old or system-wide Qt installation
unset QTDIR
# the minimum version of libdbus-1 that we require:
609
MIN_DBUS_1_VERSION=1.2
610
611
612
613
# initalize internal variables
CFG_CONFIGURE_EXIT_ON_ERROR=yes
CFG_PROFILE=no
614
CFG_STRIP=yes
615
CFG_GUI=auto # (yes|no|auto)
616
CFG_WIDGETS=yes
617
618
619
CFG_QCONFIG=full
CFG_DEBUG=auto
CFG_MYSQL_CONFIG=
620
CFG_PSQL_CONFIG=
621
CFG_DEBUG_RELEASE=no
622
CFG_FORCEDEBUGINFO=no
623
CFG_RELEASE_TOOLS=no
624
625
626
627
628
629
630
631
CFG_SHARED=yes
CFG_SM=auto
CFG_XSHAPE=auto
CFG_XSYNC=auto
CFG_XVIDEO=auto
CFG_XINERAMA=runtime
CFG_XFIXES=runtime
CFG_ZLIB=auto
632
CFG_MTDEV=auto
633
CFG_JOURNALD=no
634
CFG_SYSLOG=no
635
CFG_SQLITE=qt
636
CFG_LIBSYSTRACE=auto
637
638
639
640
641
642
643
644
645
646
CFG_GIF=auto
CFG_PNG=yes
CFG_LIBPNG=auto
CFG_JPEG=auto
CFG_LIBJPEG=auto
CFG_XCURSOR=runtime
CFG_XRANDR=runtime
CFG_XRENDER=auto
CFG_MITSHM=auto
CFG_OPENGL=auto
647
CFG_OPENGLES3=yes # still depends on CFG_OPENGL, so auto in practice
648
649
650
651
CFG_OPENVG=auto
CFG_OPENVG_LC_INCLUDES=no
CFG_OPENVG_SHIVA=auto
CFG_OPENVG_ON_OPENGL=auto
652
CFG_EGL=auto
653
CFG_EGL_X=auto
654
CFG_FONTCONFIG=auto
655
CFG_FREETYPE=auto
656
CFG_HARFBUZZ=qt
657
CFG_SQL_AVAILABLE=
658
QT_ALL_BUILD_PARTS=" libs tools examples tests "
659
QT_DEFAULT_BUILD_PARTS="libs tools examples"
660
661
CFG_BUILD_PARTS=""
CFG_NOBUILD_PARTS=""
662
CFG_SKIP_MODULES=""
663
CFG_COMPILE_EXAMPLES=yes
664
CFG_AUDIO_BACKEND=auto
665
CFG_QML_DEBUG=yes
666
CFG_PKGCONFIG=auto
667
CFG_STACK_PROTECTOR_STRONG=auto
668
CFG_SLOG2=auto
669
CFG_PPS=auto
670
CFG_QNX_IMF=auto
671
CFG_LGMON=auto
672
CFG_SYSTEM_PROXIES=no
673
CFG_ANDROID_STYLE_ASSETS=yes
674
675
CFG_GSTREAMER=auto
CFG_GSTREAMER_VERSION=""
676
CFG_ATOMIC64=auto
677
678
# Target architecture
679
CFG_ARCH=
680
CFG_CPUFEATURES=
681
# Host architecture, same as CFG_ARCH when not cross-compiling
682
CFG_HOST_ARCH=
683
CFG_HOST_CPUFEATURES=
684
685
686
# Set when the -arch or -host-arch arguments are used
OPT_OBSOLETE_HOST_ARG=no
687
CFG_USE_GNUMAKE=no
688
CFG_XINPUT2=auto
689
690
CFG_XINPUT=runtime
CFG_XKB=auto
691
CFG_XKBCOMMON=yes
692
CFG_XKBCOMMON_EVDEV=auto
693
CFG_XKB_CONFIG_ROOT=auto
694
CFG_XCB=auto
695
CFG_XCB_XLIB=auto
696
CFG_XCB_GLX=no
697
CFG_EGLFS=auto
698
CFG_EGLFS_BRCM=no
699
CFG_EGLFS_EGLDEVICE=no
700
701
CFG_EGLFS_MALI=no
CFG_EGLFS_VIV=no
702
CFG_EGLFS_VIV_WL=no
703
CFG_DIRECTFB=no
704
CFG_GBM=auto
705
CFG_LINUXFB=auto
706
CFG_KMS=auto
707
CFG_MIRCLIENT=auto
708
CFG_LIBUDEV=auto
709
CFG_LIBINPUT=auto
710
CFG_OBSOLETE_WAYLAND=no
711
CFG_EVDEV=auto
712
CFG_TSLIB=auto
713
714
CFG_CUPS=auto
CFG_ICONV=auto
715
CFG_DBUS=auto
716
717
718
719
CFG_GLIB=auto
CFG_QGTKSTYLE=auto
CFG_LARGEFILE=auto
CFG_OPENSSL=auto
720
CFG_LIBPROXY=auto
721
CFG_SECURETRANSPORT=auto
722
CFG_PRECOMPILE=auto
723
CFG_LTCG=no
724
725
726
727
728
729
730
731
CFG_SEPARATE_DEBUG_INFO=no
CFG_REDUCE_EXPORTS=auto
CFG_SSE2=auto
CFG_SSE3=auto
CFG_SSSE3=auto
CFG_SSE4_1=auto
CFG_SSE4_2=auto
CFG_AVX=auto
732
CFG_AVX2=auto
733
CFG_REDUCE_RELOCATIONS=auto
734
CFG_ACCESSIBILITY=auto
735
CFG_ACCESSIBILITY_ATSPI_BRIDGE=no # will be enabled depending on dbus and accessibility being enabled
736
CFG_NEON=auto
737
738
CFG_MIPS_DSP=auto
CFG_MIPS_DSPR2=auto
739
740
CFG_CLOCK_GETTIME=auto
CFG_CLOCK_MONOTONIC=auto
741
CFG_POSIX_FALLOCATE=auto
742
743
744
745
746
CFG_MREMAP=auto
CFG_GETADDRINFO=auto
CFG_IPV6IFNAME=auto
CFG_GETIFADDRS=auto
CFG_INOTIFY=auto
747
CFG_EVENTFD=auto
748
CFG_CLOEXEC=no
749
750
CFG_RPATH=yes
CFG_FRAMEWORK=auto
751
CFG_USE_GOLD_LINKER=auto
752
CFG_ENABLE_NEW_DTAGS=auto
753
DEFINES=
754
INCLUDES=
755
756
757
758
D_FLAGS=
I_FLAGS=
L_FLAGS=
RPATH_FLAGS=
759
W_FLAGS=
760
QCONFIG_FLAGS=
761
XPLATFORM= # This seems to be the QMAKESPEC, like "linux-g++"
762
763
XPLATFORM_MAC=no # Whether target platform is OS X or iOS
XPLATFORM_IOS=no # Whether target platform is iOS
764
XPLATFORM_ANDROID=no
765
XPLATFORM_MINGW=no # Whether target platform is MinGW (win32-g++*)
766
XPLATFORM_QNX=no
767
XPLATFORM_HAIKU=no
768
769
770
771
772
773
774
775
776
777
778
PLATFORM=$QMAKESPEC
QT_CROSS_COMPILE=no
OPT_CONFIRM_LICENSE=no
OPT_SHADOW=maybe
OPT_VERBOSE=no
OPT_HELP=
CFG_SILENT=no
CFG_ALSA=auto
CFG_PULSEAUDIO=auto
CFG_COREWLAN=auto
CFG_ICU=auto
779
CFG_FORCE_ASSERTS=no
780
781
782
783
784
CFG_SANITIZERS=none
CFG_SANITIZE_ADDRESS=no
CFG_SANITIZE_THREAD=no
CFG_SANITIZE_MEMORY=no
CFG_SANITIZE_UNDEFINED=no
785
CFG_PCRE=auto
786
QPA_PLATFORM_GUARD=yes
787
CFG_STDCXX=auto
788
CFG_DIRECTWRITE=no
789
CFG_WERROR=auto
790
CFG_HEADERSCLEAN=auto
791
CFG_QREAL=double
792
OPT_MAC_SDK=
793
794
795
COMMERCIAL_USER=ask
LICENSE_FILE=
CFG_DEV=no
796
797
798
799
800
801
802
# initalize variables used for installation
QT_INSTALL_PREFIX=
QT_INSTALL_DOCS=
QT_INSTALL_HEADERS=
QT_INSTALL_LIBS=
QT_INSTALL_BINS=
803
QT_INSTALL_LIBEXECS=
804
805
QT_INSTALL_PLUGINS=
QT_INSTALL_IMPORTS=
806
QT_INSTALL_QML=
807
QT_INSTALL_ARCHDATA=
808
809
810
811
QT_INSTALL_DATA=
QT_INSTALL_TRANSLATIONS=
QT_INSTALL_SETTINGS=
QT_INSTALL_EXAMPLES=
812
QT_INSTALL_TESTS=
813
CFG_SYSROOT=
814
CFG_GCC_SYSROOT="yes"
815
QT_HOST_PREFIX=
816
QT_HOST_BINS=
817
QT_HOST_LIBS=
818
QT_HOST_DATA=
819
QT_EXT_PREFIX=
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
#flags for SQL drivers
QT_CFLAGS_PSQL=
QT_LFLAGS_PSQL=
QT_CFLAGS_MYSQL=
QT_LFLAGS_MYSQL=
QT_LFLAGS_MYSQL_R=
QT_CFLAGS_SQLITE=
QT_LFLAGS_SQLITE=
QT_LFLAGS_ODBC="-lodbc"
QT_LFLAGS_TDS=
# flags for libdbus-1
QT_CFLAGS_DBUS=
QT_LIBS_DBUS=
# flags for Glib (X11 only)
QT_CFLAGS_GLIB=
QT_LIBS_GLIB=
840
841
842
# default qpa platform
QT_QPA_DEFAULT_PLATFORM=
843
844
845
846
847
# Android vars
CFG_DEFAULT_ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT
CFG_DEFAULT_ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT
CFG_DEFAULT_ANDROID_PLATFORM=android-9
CFG_DEFAULT_ANDROID_TARGET_ARCH=armeabi-v7a
848
CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION=4.9
849
850
CFG_DEFAULT_ANDROID_NDK_HOST=$ANDROID_NDK_HOST
851
#-------------------------------------------------------------------------------
852
# check SQL drivers available in this package
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
#-------------------------------------------------------------------------------
# opensource version removes some drivers, so force them to be off
CFG_SQL_tds=no
CFG_SQL_oci=no
CFG_SQL_db2=no
CFG_SQL_AVAILABLE=
if [ -d "$relpath/src/plugins/sqldrivers" ]; then
for a in "$relpath/src/plugins/sqldrivers/"*; do
if [ -d "$a" ]; then
base_a=`basename "$a"`
CFG_SQL_AVAILABLE="${CFG_SQL_AVAILABLE} ${base_a}"
eval "CFG_SQL_${base_a}=auto"
fi
done
fi
CFG_IMAGEFORMAT_PLUGIN_AVAILABLE=
if [ -d "$relpath/src/plugins/imageformats" ]; then
for a in "$relpath/src/plugins/imageformats/"*; do
if [ -d "$a" ]; then
base_a=`basename "$a"`
CFG_IMAGEFORMAT_PLUGIN_AVAILABLE="${CFG_IMAGEFORMAT_PLUGIN_AVAILABLE} ${base_a}"
fi
done
fi
#-------------------------------------------------------------------------------
# parse command line arguments
#-------------------------------------------------------------------------------
# parse the arguments, setting things to "yes" or "no"
while [ "$#" -gt 0 ]; do
CURRENT_OPT="$1"
UNKNOWN_ARG=no
case "$1" in
#Autoconf style options
--enable-*)
892
VAR=`echo $1 | sed 's,^--enable-\(.*\),\1,'`
893
894
895
VAL=yes
;;
--disable-*)
896
VAR=`echo $1 | sed 's,^--disable-\(.*\),\1,'`
897
898
899
VAL=no
;;
--*=*)
900
901
VAR=`echo $1 | sed 's,^--\(.*\)=.*,\1,'`
VAL=`echo $1 | sed 's,^--.*=\(.*\),\1,'`
902
903
;;
--no-*)
904
VAR=`echo $1 | sed 's,^--no-\(.*\),\1,'`
905
906
907
VAL=no
;;
--*)
908
VAR=`echo $1 | sed 's,^--\(.*\),\1,'`
909
910
911
912
VAL=yes
;;
#Qt plugin options
-no-*-*|-plugin-*-*|-qt-*-*)
913
914
VAR=`echo $1 | sed 's,^-[^-]*-\(.*\),\1,'`
VAL=`echo $1 | sed 's,^-\([^-]*\).*,\1,'`
915
916
917
;;
#Qt style no options
-no-*)
918
VAR=`echo $1 | sed 's,^-no-\(.*\),\1,'`
919
920
921
VAL=no
;;
#Qt style options that pass an argument
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
-prefix| \
-docdir| \
-headerdir| \
-plugindir| \
-importdir| \
-qmldir| \
-archdatadir| \
-datadir| \
-libdir| \
-bindir| \
-libexecdir| \
-translationdir| \
-sysconfdir| \
-examplesdir| \
-testsdir| \
-hostdatadir| \
-hostbindir| \
-hostlibdir| \
940
-extprefix| \
941
942
943
944
945
946
947
948
949
950
951
952
-sysroot| \
-depths| \
-make| \
-nomake| \
-skip| \
-platform| \
-xplatform| \
-device| \
-device-option| \
-sdk| \
-arch| \
-host-arch| \
953
-c++std | \
954
-mysql_config| \
955
-psql_config| \
956
957
-qpa| \
-qconfig| \
958
-qreal| \
959
-sanitize| \
960
-xkb-config-root| \
961
962
963
964
965
966
-android-sdk| \
-android-ndk| \
-android-ndk-platform| \
-android-ndk-host| \
-android-arch| \
-android-toolchain-version)
967
VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
968
969
970
971
972
shift
VAL="$1"
;;
#Qt style complex options in one command
-enable-*|-disable-*)
973
974
VAR=`echo $1 | sed 's,^-\([^-]*\)-.*,\1,'`
VAL=`echo $1 | sed 's,^-[^-]*-\(.*\),\1,'`
975
;;
976
977
978
979
980
981
982
983
-system-proxies)
VAR=system-proxies
VAL=yes
;;
-no-system-proxies)
VAR=system-proxies
VAL=no
;;
984
985
#Qt Builtin/System style options
-no-*|-system-*|-qt-*)
986
987
VAR=`echo $1 | sed 's,^-[^-]*-\(.*\),\1,'`
VAL=`echo $1 | sed 's,^-\([^-]*\)-.*,\1,'`
988
989
990
991
992
993
994
995
996
997
998
999
1000
;;
#Options that cannot be generalized
-k|-continue)
VAR=fatal_error
VAL=no
;;
-opengl)
VAR=opengl
# this option may or may not be followed by an argument
if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
VAL=yes
else
shift;