Skip to content

Latest commit

 

History

History
executable file
·
7645 lines (7039 loc) · 250 KB

configure

File metadata and controls

executable file
·
7645 lines (7039 loc) · 250 KB
 
1
2
3
#!/bin/sh
#############################################################################
##
Feb 11, 2015
Feb 11, 2015
4
## Copyright (C) 2015 The Qt Company Ltd.
Sep 22, 2015
Sep 22, 2015
5
## Copyright (C) 2015 Intel Corporation.
Feb 11, 2015
Feb 11, 2015
6
## Contact: http://www.qt.io/licensing/
7
8
9
##
## This file is the build configuration utility of the Qt Toolkit.
##
Sep 24, 2014
Sep 24, 2014
10
## $QT_BEGIN_LICENSE:LGPL21$
Sep 22, 2012
Sep 22, 2012
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
Feb 11, 2015
Feb 11, 2015
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.
Sep 22, 2012
Sep 22, 2012
18
##
19
## GNU Lesser General Public License Usage
Sep 22, 2012
Sep 22, 2012
20
## Alternatively, this file may be used under the terms of the GNU Lesser
Sep 24, 2014
Sep 24, 2014
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.
Sep 22, 2012
Sep 22, 2012
27
##
Feb 11, 2015
Feb 11, 2015
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`
Nov 20, 2013
Nov 20, 2013
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
Jun 26, 2013
Jun 26, 2013
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
Feb 4, 2015
Feb 4, 2015
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
May 5, 2016
May 5, 2016
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
Mar 27, 2012
Mar 27, 2012
107
DEVICE_VARS_FILE=.device.vars
108
109
:> "$QMAKE_VARS_FILE"
Mar 27, 2012
Mar 27, 2012
110
:> "$DEVICE_VARS_FILE"
111
112
113
114
115
116
117
118
119
120
#-------------------------------------------------------------------------------
# utility functions
#-------------------------------------------------------------------------------
shellEscape()
{
echo "$@" | sed 's/ /\ /g'
}
Oct 31, 2013
Oct 31, 2013
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,^[^ ]* .*$,"&",'`
}
Feb 5, 2015
Feb 5, 2015
128
129
makeabs()
{
Jan 8, 2016
Jan 8, 2016
130
131
local FILE="$1"
local RES="$FILE"
Feb 5, 2015
Feb 5, 2015
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"
}
Jul 2, 2012
Jul 2, 2012
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
Mar 5, 2013
Mar 5, 2013
188
expandQMakeConf()
189
190
191
{
while read line; do case "$line" in
include*)
Jan 15, 2014
Jan 15, 2014
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
Mar 5, 2013
Mar 5, 2013
199
expandQMakeConf "$conf_file"
200
;;
Jun 3, 2012
Jun 3, 2012
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
Mar 5, 2013
Mar 5, 2013
207
expandQMakeConf "$conf_file"
Jun 3, 2012
Jun 3, 2012
208
;;
209
210
211
212
213
214
*)
echo "$line"
;;
esac; done < "$1"
}
Mar 5, 2013
Mar 5, 2013
215
extractQMakeVariables()
Feb 21, 2012
Feb 21, 2012
216
{
Sep 9, 2014
Sep 9, 2014
217
LC_ALL=C $AWK '
Feb 21, 2012
Feb 21, 2012
218
219
220
221
BEGIN {
values["LITERAL_WHITESPACE"] = " "
values["LITERAL_DOLLAR"] = "$"
}
Mar 13, 2013
Mar 13, 2013
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)
}
Feb 25, 2012
Feb 25, 2012
228
/^[_A-Z0-9.]+[ \t]*\+?=/ {
Feb 21, 2012
Feb 21, 2012
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)
May 1, 2012
May 1, 2012
247
if (var ~ /^\{/) {
Feb 21, 2012
Feb 21, 2012
248
249
250
251
var = substr(var, 2, length(var) - 2)
}
ovalue = ovalue values[var]
}
Feb 16, 2013
Feb 16, 2013
252
253
254
value = ovalue value
ovalue = ""
Mar 4, 2013
Mar 4, 2013
255
while (match(value, /\$\$system\(("[^"]*"|[^)]*)\)/)) {
Feb 16, 2013
Feb 16, 2013
256
257
ovalue = ovalue substr(value, 1, RSTART - 1)
cmd = substr(value, RSTART + 9, RLENGTH - 10)
Mar 4, 2013
Mar 4, 2013
258
gsub(/^"|"$/, "", cmd)
Feb 16, 2013
Feb 16, 2013
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
Feb 21, 2012
Feb 21, 2012
266
267
268
combinedValue = values[variable]
if (append == 1 && length(combinedValue) > 0) {
Feb 16, 2013
Feb 16, 2013
269
combinedValue = combinedValue " " value
Feb 21, 2012
Feb 21, 2012
270
} else {
Feb 16, 2013
Feb 16, 2013
271
combinedValue = value
Feb 21, 2012
Feb 21, 2012
272
273
274
275
276
277
278
279
280
281
282
}
values[variable] = combinedValue
}
END {
for (var in values) {
print var "=" values[var]
}
}
'
}
Mar 5, 2013
Mar 5, 2013
283
getSingleQMakeVariable()
Feb 21, 2012
Feb 21, 2012
284
285
286
{
echo "$2" | $AWK "/^($1)=/ { print substr(\$0, index(\$0, \"=\") + 1) }"
}
287
Mar 13, 2013
Mar 13, 2013
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
Apr 9, 2013
Apr 9, 2013
295
sysroot=$(/usr/bin/xcodebuild -sdk $sdk -version Path 2>/dev/null)
Mar 13, 2013
Mar 13, 2013
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-)
Apr 9, 2013
Apr 9, 2013
318
sdk_val=$(/usr/bin/xcrun -sdk $sdk -find $(echo $val | cut -d ' ' -f 1))
Mar 13, 2013
Mar 13, 2013
319
320
321
val=$(echo $sdk_val $(echo $val | cut -s -d ' ' -f 2-))
echo "$var=$val"
;;
Oct 9, 2015
Oct 9, 2015
322
QMAKE_CFLAGS=*|QMAKE_CXXFLAGS=*)
Mar 13, 2013
Mar 13, 2013
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()
{
Feb 21, 2012
Feb 21, 2012
339
if [ -z "$specvals" ]; then
Mar 13, 2013
Mar 13, 2013
340
specvals=`expandQMakeConf "$QMAKESPEC/qmake.conf" | extractQMakeVariables "host_build"`
Mar 13, 2013
Mar 13, 2013
341
if [ "$BUILD_ON_MAC" = "yes" ]; then specvals=$(macSDKify "$specvals"); fi
342
fi
Mar 5, 2013
Mar 5, 2013
343
getSingleQMakeVariable "$1" "$specvals"
Feb 21, 2012
Feb 21, 2012
344
345
346
347
348
}
getXQMakeConf()
{
if [ -z "$xspecvals" ]; then
Mar 13, 2013
Mar 13, 2013
349
xspecvals=`expandQMakeConf "$XQMAKESPEC/qmake.conf" | extractQMakeVariables "!host_build"`
Nov 20, 2013
Nov 20, 2013
350
if [ "$XPLATFORM_MAC" = "yes" ]; then xspecvals=$(macSDKify "$xspecvals"); fi
Feb 21, 2012
Feb 21, 2012
351
fi
Mar 5, 2013
Mar 5, 2013
352
getSingleQMakeVariable "$1" "$xspecvals"
353
354
}
May 5, 2016
May 5, 2016
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
Mar 27, 2015
Mar 27, 2015
375
if [ "$OPT_VERBOSE" = "yes" ]; then
Apr 23, 2015
Apr 23, 2015
376
"$@" -o conftest-out conftest.cpp
Mar 27, 2015
Mar 27, 2015
377
else
Apr 23, 2015
Apr 23, 2015
378
"$@" -o conftest-out conftest.cpp >/dev/null 2>&1
Mar 27, 2015
Mar 27, 2015
379
fi
380
ret=$?
Apr 23, 2015
Apr 23, 2015
381
rm -f conftest.cpp conftest-out
382
383
384
385
386
return $ret
}
linkerSupportsFlag()
{
Oct 19, 2012
Oct 19, 2012
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
Apr 23, 2015
Apr 23, 2015
395
396
397
if [ $CFG_USE_GOLD_LINKER = yes ]; then
lflags="-fuse-ld=gold $lflags"
fi
Mar 27, 2015
Mar 27, 2015
398
compilerSupportsFlag $compiler $lflags
399
400
}
Aug 25, 2012
Aug 25, 2012
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`
Feb 5, 2015
Feb 5, 2015
408
path=`makeabs "$path"`
Aug 25, 2012
Aug 25, 2012
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"
}
Mar 27, 2012
Mar 27, 2012
462
463
464
465
466
467
468
469
470
471
#-------------------------------------------------------------------------------
# device options
#-------------------------------------------------------------------------------
DeviceVar()
{
case "$1" in
set)
eq="="
;;
*)
Nov 26, 2015
Nov 26, 2015
472
echo >&2 "BUG: wrong command to DeviceVar: $1"
Mar 27, 2012
Mar 27, 2012
473
474
475
476
477
478
;;
esac
echo "$2" "$eq" "$3" >> "$DEVICE_VARS_FILE"
}
May 18, 2012
May 18, 2012
479
480
resolveDeviceMkspec()
{
Jun 12, 2012
Jun 12, 2012
481
result=$(find "$relpath/mkspecs/devices/" -type d -name "*$1*" | sed "s,^$relpath/mkspecs/,,")
May 18, 2012
May 18, 2012
482
483
match_count=$(echo "$result" | wc -w)
if [ "$match_count" -gt 1 ]; then
Jun 12, 2012
Jun 12, 2012
484
echo >&2 "Error: Multiple matches for device '$1'. Candidates are:"
Jan 15, 2014
Jan 15, 2014
485
tabbed_result=$(echo "$result" | sed 's,^, ,')
May 18, 2012
May 18, 2012
486
487
488
echo >&2 "$tabbed_result"
echo "undefined"
elif [ "$match_count" -eq 0 ]; then
Jun 12, 2012
Jun 12, 2012
489
echo >&2 "Error: No device matching '$1'"
May 18, 2012
May 18, 2012
490
echo "undefined"
May 19, 2012
May 19, 2012
491
492
else
echo "$result"
May 18, 2012
May 18, 2012
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
Feb 19, 2013
Feb 19, 2013
521
BUILD_ON_MSYS=no
Feb 22, 2013
Feb 22, 2013
522
HOST_DIRLIST_SEP=":"
Apr 15, 2013
Apr 15, 2013
523
DEV_NULL=/dev/null
Feb 19, 2013
Feb 19, 2013
524
if [ "$OSTYPE" = "msys" ]; then
Feb 22, 2013
Feb 22, 2013
525
HOST_DIRLIST_SEP=";"
Feb 19, 2013
Feb 19, 2013
526
BUILD_ON_MSYS=yes
Apr 15, 2013
Apr 15, 2013
527
528
DEV_NULL=/tmp/empty-file
echo "" > $DEV_NULL
May 13, 2013
May 13, 2013
529
530
relpath=`(cd "$relpath"; pwd -W)`
outpath=`pwd -W`
Feb 19, 2013
Feb 19, 2013
531
fi
532
Apr 9, 2013
Apr 9, 2013
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
Jul 21, 2016
Jul 21, 2016
546
if ! /usr/bin/xcrun -find xcodebuild >/dev/null 2>&1; then
Apr 9, 2013
Apr 9, 2013
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
#-----------------------------------------------------------------------------
Oct 14, 2015
Oct 14, 2015
558
QT_VERSION=
559
560
561
QT_MAJOR_VERSION=
QT_MINOR_VERSION=0
QT_PATCH_VERSION=0
Oct 14, 2015
Oct 14, 2015
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
Oct 14, 2015
Oct 14, 2015
567
echo "Cannot process version from .qmake.conf"
568
569
570
571
572
573
574
575
echo "Cannot proceed."
exit 1
fi
#-------------------------------------------------------------------------------
# initalize variables
#-------------------------------------------------------------------------------
Apr 7, 2015
Apr 7, 2015
576
SYSTEM_VARIABLES="AR RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS"
577
578
for varname in $SYSTEM_VARIABLES; do
qmakevarname="${varname}"
Apr 7, 2015
Apr 7, 2015
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"
Apr 7, 2015
Apr 7, 2015
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
Apr 7, 2015
Apr 7, 2015
593
QMakeVar set QMAKE_'${qmakevarname}' "\$'${varname}${qmakecmdargs}'"
594
595
596
fi'`
eval "$cmd"
done
Apr 7, 2015
Apr 7, 2015
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"
Oct 22, 2012
Oct 22, 2012
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:
Feb 27, 2013
Feb 27, 2013
609
MIN_DBUS_1_VERSION=1.2
610
611
612
613
# initalize internal variables
CFG_CONFIGURE_EXIT_ON_ERROR=yes
CFG_PROFILE=no
Sep 24, 2012
Sep 24, 2012
614
CFG_STRIP=yes
615
CFG_GUI=auto # (yes|no|auto)
Mar 15, 2012
Mar 15, 2012
616
CFG_WIDGETS=yes
617
618
619
CFG_QCONFIG=full
CFG_DEBUG=auto
CFG_MYSQL_CONFIG=
Feb 25, 2015
Feb 25, 2015
620
CFG_PSQL_CONFIG=
621
CFG_DEBUG_RELEASE=no
Aug 9, 2012
Aug 9, 2012
622
CFG_FORCEDEBUGINFO=no
Nov 17, 2015
Nov 17, 2015
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
Dec 30, 2013
Dec 30, 2013
632
CFG_MTDEV=auto
Jan 21, 2014
Jan 21, 2014
633
CFG_JOURNALD=no
Aug 9, 2015
Aug 9, 2015
634
CFG_SYSLOG=no
635
CFG_SQLITE=qt
Oct 3, 2016
Oct 3, 2016
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
Jun 23, 2016
Jun 23, 2016
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
Mar 21, 2012
Mar 21, 2012
652
CFG_EGL=auto
Feb 9, 2014
Feb 9, 2014
653
CFG_EGL_X=auto
654
CFG_FONTCONFIG=auto
Sep 8, 2013
Sep 8, 2013
655
CFG_FREETYPE=auto
Aug 20, 2014
Aug 20, 2014
656
CFG_HARFBUZZ=qt
657
CFG_SQL_AVAILABLE=
Jun 19, 2013
Jun 19, 2013
658
QT_ALL_BUILD_PARTS=" libs tools examples tests "
Jul 10, 2012
Jul 10, 2012
659
QT_DEFAULT_BUILD_PARTS="libs tools examples"
660
661
CFG_BUILD_PARTS=""
CFG_NOBUILD_PARTS=""
Feb 20, 2013
Feb 20, 2013
662
CFG_SKIP_MODULES=""
Jul 22, 2013
Jul 22, 2013
663
CFG_COMPILE_EXAMPLES=yes
664
CFG_AUDIO_BACKEND=auto
Mar 31, 2012
Mar 31, 2012
665
CFG_QML_DEBUG=yes
Apr 11, 2012
Apr 11, 2012
666
CFG_PKGCONFIG=auto
Oct 1, 2012
Oct 1, 2012
667
CFG_STACK_PROTECTOR_STRONG=auto
Oct 4, 2012
Oct 4, 2012
668
CFG_SLOG2=auto
Nov 23, 2013
Nov 23, 2013
669
CFG_PPS=auto
Nov 26, 2013
Nov 26, 2013
670
CFG_QNX_IMF=auto
Feb 14, 2014
Feb 14, 2014
671
CFG_LGMON=auto
Oct 29, 2012
Oct 29, 2012
672
CFG_SYSTEM_PROXIES=no
Oct 2, 2014
Oct 2, 2014
673
CFG_ANDROID_STYLE_ASSETS=yes
Feb 16, 2015
Feb 16, 2015
674
675
CFG_GSTREAMER=auto
CFG_GSTREAMER_VERSION=""
Sep 22, 2015
Sep 22, 2015
676
CFG_ATOMIC64=auto
677
Mar 13, 2012
Mar 13, 2012
678
# Target architecture
679
CFG_ARCH=
May 30, 2012
May 30, 2012
680
CFG_CPUFEATURES=
Mar 13, 2012
Mar 13, 2012
681
# Host architecture, same as CFG_ARCH when not cross-compiling
682
CFG_HOST_ARCH=
May 30, 2012
May 30, 2012
683
CFG_HOST_CPUFEATURES=
Mar 13, 2012
Mar 13, 2012
684
685
686
# Set when the -arch or -host-arch arguments are used
OPT_OBSOLETE_HOST_ARG=no
687
CFG_USE_GNUMAKE=no
Oct 17, 2011
Oct 17, 2011
688
CFG_XINPUT2=auto
689
690
CFG_XINPUT=runtime
CFG_XKB=auto
Aug 9, 2014
Aug 9, 2014
691
CFG_XKBCOMMON=yes
Dec 20, 2014
Dec 20, 2014
692
CFG_XKBCOMMON_EVDEV=auto
Mar 6, 2014
Mar 6, 2014
693
CFG_XKB_CONFIG_ROOT=auto
Jun 10, 2011
Jun 10, 2011
694
CFG_XCB=auto
Nov 28, 2013
Nov 28, 2013
695
CFG_XCB_XLIB=auto
Oct 19, 2012
Oct 19, 2012
696
CFG_XCB_GLX=no
Mar 21, 2012
Mar 21, 2012
697
CFG_EGLFS=auto
Jul 17, 2015
Jul 17, 2015
698
CFG_EGLFS_BRCM=no
Oct 14, 2015
Oct 14, 2015
699
CFG_EGLFS_EGLDEVICE=no
Jul 17, 2015
Jul 17, 2015
700
701
CFG_EGLFS_MALI=no
CFG_EGLFS_VIV=no
Nov 2, 2015
Nov 2, 2015
702
CFG_EGLFS_VIV_WL=no
Apr 28, 2016
Apr 28, 2016
703
CFG_DIRECTFB=no
Oct 14, 2015
Oct 14, 2015
704
CFG_GBM=auto
Jul 11, 2012
Jul 11, 2012
705
CFG_LINUXFB=auto
Jul 18, 2012
Jul 18, 2012
706
CFG_KMS=auto
Aug 9, 2015
Aug 9, 2015
707
CFG_MIRCLIENT=auto
Feb 8, 2012
Feb 8, 2012
708
CFG_LIBUDEV=auto
Dec 20, 2014
Dec 20, 2014
709
CFG_LIBINPUT=auto
Mar 12, 2012
Mar 12, 2012
710
CFG_OBSOLETE_WAYLAND=no
Feb 8, 2012
Feb 8, 2012
711
CFG_EVDEV=auto
Oct 17, 2014
Oct 17, 2014
712
CFG_TSLIB=auto
713
714
CFG_CUPS=auto
CFG_ICONV=auto
Feb 25, 2015
Feb 25, 2015
715
CFG_DBUS=auto
716
717
718
719
CFG_GLIB=auto
CFG_QGTKSTYLE=auto
CFG_LARGEFILE=auto
CFG_OPENSSL=auto
Feb 5, 2015
Feb 5, 2015
720
CFG_LIBPROXY=auto
Feb 2, 2015
Feb 2, 2015
721
CFG_SECURETRANSPORT=auto
722
CFG_PRECOMPILE=auto
Nov 2, 2015
Nov 2, 2015
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
Mar 23, 2012
Mar 23, 2012
732
CFG_AVX2=auto
Dec 7, 2011
Dec 7, 2011
733
CFG_REDUCE_RELOCATIONS=auto
734
CFG_ACCESSIBILITY=auto
Jan 23, 2013
Jan 23, 2013
735
CFG_ACCESSIBILITY_ATSPI_BRIDGE=no # will be enabled depending on dbus and accessibility being enabled
736
CFG_NEON=auto
Sep 1, 2012
Sep 1, 2012
737
738
CFG_MIPS_DSP=auto
CFG_MIPS_DSPR2=auto
739
740
CFG_CLOCK_GETTIME=auto
CFG_CLOCK_MONOTONIC=auto
Dec 1, 2013
Dec 1, 2013
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
Jan 15, 2013
Jan 15, 2013
747
CFG_EVENTFD=auto
Jul 17, 2015
Jul 17, 2015
748
CFG_CLOEXEC=no
749
750
CFG_RPATH=yes
CFG_FRAMEWORK=auto
Jul 23, 2014
Jul 23, 2014
751
CFG_USE_GOLD_LINKER=auto
May 5, 2015
May 5, 2015
752
CFG_ENABLE_NEW_DTAGS=auto
Jun 1, 2012
Jun 1, 2012
753
DEFINES=
Dec 22, 2013
Dec 22, 2013
754
INCLUDES=
755
756
757
758
D_FLAGS=
I_FLAGS=
L_FLAGS=
RPATH_FLAGS=
Oct 27, 2011
Oct 27, 2011
759
W_FLAGS=
760
QCONFIG_FLAGS=
Nov 7, 2011
Nov 7, 2011
761
XPLATFORM= # This seems to be the QMAKESPEC, like "linux-g++"
Oct 1, 2014
Oct 1, 2014
762
763
XPLATFORM_MAC=no # Whether target platform is OS X or iOS
XPLATFORM_IOS=no # Whether target platform is iOS
Mar 5, 2013
Mar 5, 2013
764
XPLATFORM_ANDROID=no
765
XPLATFORM_MINGW=no # Whether target platform is MinGW (win32-g++*)
Jun 7, 2012
Jun 7, 2012
766
XPLATFORM_QNX=no
Dec 21, 2014
Dec 21, 2014
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
Nov 11, 2011
Nov 11, 2011
779
CFG_FORCE_ASSERTS=no
Oct 2, 2014
Oct 2, 2014
780
781
782
783
784
CFG_SANITIZERS=none
CFG_SANITIZE_ADDRESS=no
CFG_SANITIZE_THREAD=no
CFG_SANITIZE_MEMORY=no
CFG_SANITIZE_UNDEFINED=no
Jan 26, 2012
Jan 26, 2012
785
CFG_PCRE=auto
Mar 16, 2012
Mar 16, 2012
786
QPA_PLATFORM_GUARD=yes
Sep 5, 2015
Sep 5, 2015
787
CFG_STDCXX=auto
Dec 12, 2012
Dec 12, 2012
788
CFG_DIRECTWRITE=no
Feb 28, 2013
Feb 28, 2013
789
CFG_WERROR=auto
Apr 17, 2015
Apr 17, 2015
790
CFG_HEADERSCLEAN=auto
Oct 31, 2013
Oct 31, 2013
791
CFG_QREAL=double
Oct 30, 2013
Oct 30, 2013
792
OPT_MAC_SDK=
Nov 20, 2013
Nov 20, 2013
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=
Nov 28, 2012
Nov 28, 2012
803
QT_INSTALL_LIBEXECS=
804
805
QT_INSTALL_PLUGINS=
QT_INSTALL_IMPORTS=
Nov 19, 2012
Nov 19, 2012
806
QT_INSTALL_QML=
Nov 11, 2012
Nov 11, 2012
807
QT_INSTALL_ARCHDATA=
808
809
810
811
QT_INSTALL_DATA=
QT_INSTALL_TRANSLATIONS=
QT_INSTALL_SETTINGS=
QT_INSTALL_EXAMPLES=
Nov 22, 2011
Nov 22, 2011
812
QT_INSTALL_TESTS=
Mar 1, 2012
Mar 1, 2012
813
CFG_SYSROOT=
Aug 1, 2012
Aug 1, 2012
814
CFG_GCC_SYSROOT="yes"
815
QT_HOST_PREFIX=
Mar 1, 2012
Mar 1, 2012
816
QT_HOST_BINS=
May 13, 2013
May 13, 2013
817
QT_HOST_LIBS=
Mar 1, 2012
Mar 1, 2012
818
QT_HOST_DATA=
Aug 15, 2013
Aug 15, 2013
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=
Apr 19, 2012
Apr 19, 2012
840
841
842
# default qpa platform
QT_QPA_DEFAULT_PLATFORM=
Nov 25, 2013
Nov 25, 2013
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
Nov 18, 2014
Nov 18, 2014
848
CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION=4.9
Nov 25, 2013
Nov 25, 2013
849
850
CFG_DEFAULT_ANDROID_NDK_HOST=$ANDROID_NDK_HOST
851
#-------------------------------------------------------------------------------
Mar 9, 2012
Mar 9, 2012
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-*)
Jan 15, 2014
Jan 15, 2014
892
VAR=`echo $1 | sed 's,^--enable-\(.*\),\1,'`
893
894
895
VAL=yes
;;
--disable-*)
Jan 15, 2014
Jan 15, 2014
896
VAR=`echo $1 | sed 's,^--disable-\(.*\),\1,'`
897
898
899
VAL=no
;;
--*=*)
Jan 15, 2014
Jan 15, 2014
900
901
VAR=`echo $1 | sed 's,^--\(.*\)=.*,\1,'`
VAL=`echo $1 | sed 's,^--.*=\(.*\),\1,'`
902
903
;;
--no-*)
Jan 15, 2014
Jan 15, 2014
904
VAR=`echo $1 | sed 's,^--no-\(.*\),\1,'`
905
906
907
VAL=no
;;
--*)
Jan 15, 2014
Jan 15, 2014
908
VAR=`echo $1 | sed 's,^--\(.*\),\1,'`
909
910
911
912
VAL=yes
;;
#Qt plugin options
-no-*-*|-plugin-*-*|-qt-*-*)
Jan 15, 2014
Jan 15, 2014
913
914
VAR=`echo $1 | sed 's,^-[^-]*-\(.*\),\1,'`
VAL=`echo $1 | sed 's,^-\([^-]*\).*,\1,'`
915
916
917
;;
#Qt style no options
-no-*)
Jan 15, 2014
Jan 15, 2014
918
VAR=`echo $1 | sed 's,^-no-\(.*\),\1,'`
919
920
921
VAL=no
;;
#Qt style options that pass an argument
Jun 17, 2013
Jun 17, 2013
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| \
Aug 15, 2013
Aug 15, 2013
940
-extprefix| \
Jun 17, 2013
Jun 17, 2013
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| \
Sep 5, 2015
Sep 5, 2015
953
-c++std | \
Jun 17, 2013
Jun 17, 2013
954
-mysql_config| \
Feb 25, 2015
Feb 25, 2015
955
-psql_config| \
Jun 17, 2013
Jun 17, 2013
956
957
-qpa| \
-qconfig| \
Oct 31, 2013
Oct 31, 2013
958
-qreal| \
Oct 2, 2014
Oct 2, 2014
959
-sanitize| \
Mar 6, 2014
Mar 6, 2014
960
-xkb-config-root| \
Jun 17, 2013
Jun 17, 2013
961
962
963
964
965
966
-android-sdk| \
-android-ndk| \
-android-ndk-platform| \
-android-ndk-host| \
-android-arch| \
-android-toolchain-version)
Jan 15, 2014
Jan 15, 2014
967
VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
968
969
970
971
972
shift
VAL="$1"
;;
#Qt style complex options in one command
-enable-*|-disable-*)
Jan 15, 2014
Jan 15, 2014
973
974
VAR=`echo $1 | sed 's,^-\([^-]*\)-.*,\1,'`
VAL=`echo $1 | sed 's,^-[^-]*-\(.*\),\1,'`
975
;;
Oct 29, 2012
Oct 29, 2012
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-*)
Jan 15, 2014
Jan 15, 2014
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;