@@ -283,7 +283,7 @@ opt_core() {
283
283
fi
284
284
done
285
285
else
286
- if [ ! -z " $META " ]
286
+ if [ -n " $META " ]
287
287
then
288
288
OP=" $OP =<$META >"
289
289
fi
@@ -317,12 +317,23 @@ envopt() {
317
317
fi
318
318
319
319
# If script or environment provided a value, save it.
320
- if [ ! -z " $VV " ]
320
+ if [ -n " $VV " ]
321
321
then
322
322
putvar $V
323
323
fi
324
324
}
325
325
326
+ enable_if_not_disabled () {
327
+ local OP=$1
328
+ local UOP=$( echo $OP | tr ' [:lower:]' ' [:upper:]' | tr ' \-' ' \_' )
329
+ local ENAB_V=" CFG_ENABLE_$UOP "
330
+ local EXPLICITLY_DISABLED=" CFG_DISABLE_${UOP} _PROVIDED"
331
+ eval VV=\$ $EXPLICITLY_DISABLED
332
+ if [ -z " $VV " ]; then
333
+ eval $ENAB_V =1
334
+ fi
335
+ }
336
+
326
337
to_llvm_triple () {
327
338
case $1 in
328
339
i686-w64-mingw32) echo i686-pc-windows-gnu ;;
@@ -590,7 +601,9 @@ valopt llvm-root "" "set LLVM root"
590
601
valopt python " " " set path to python"
591
602
valopt jemalloc-root " " " set directory where libjemalloc_pic.a is located"
592
603
valopt build " ${DEFAULT_BUILD} " " GNUs ./configure syntax LLVM build triple"
593
- valopt android-cross-path " /opt/ndk_standalone" " Android NDK standalone path"
604
+ valopt android-cross-path " /opt/ndk_standalone" " Android NDK standalone path (deprecated)"
605
+ valopt arm-linux-androideabi-ndk " " " arm-linux-androideabi NDK standalone path"
606
+ valopt aarch64-linux-android-ndk " " " aarch64-linux-android NDK standalone path"
594
607
valopt release-channel " dev" " the name of the release channel to build"
595
608
valopt musl-root " /usr/local" " MUSL root installation directory"
596
609
@@ -671,10 +684,12 @@ if [ -n "$CFG_ENABLE_DEBUG" ]; then
671
684
CFG_DISABLE_OPTIMIZE=1
672
685
CFG_DISABLE_OPTIMIZE_CXX=1
673
686
fi
674
- CFG_ENABLE_DEBUG_ASSERTIONS=1
675
- CFG_ENABLE_DEBUG_JEMALLOC=1
676
- CFG_ENABLE_DEBUGINFO=1
677
- CFG_ENABLE_LLVM_ASSERTIONS=1
687
+
688
+ # Set following variables to 1 unless setting already provided
689
+ enable_if_not_disabled debug-assertions
690
+ enable_if_not_disabled debug-jemalloc
691
+ enable_if_not_disabled debuginfo
692
+ enable_if_not_disabled llvm-assertions
678
693
fi
679
694
680
695
# OK, now write the debugging options
@@ -754,7 +769,7 @@ probe CFG_LLDB lldb
754
769
# On MacOS X, invoking `javac` pops up a dialog if the JDK is not
755
770
# installed. Since `javac` is only used if `antlr4` is available,
756
771
# probe for it only in this case.
757
- if [ ! -z " $CFG_ANTLR4 " ]
772
+ if [ -n " $CFG_ANTLR4 " ]
758
773
then
759
774
probe CFG_JAVAC javac
760
775
fi
@@ -773,14 +788,14 @@ then
773
788
fi
774
789
fi
775
790
776
- if [ ! -z " $CFG_GDB " ]
791
+ if [ -n " $CFG_GDB " ]
777
792
then
778
793
# Store GDB's version
779
794
CFG_GDB_VERSION=$( $CFG_GDB --version 2> /dev/null | head -1)
780
795
putvar CFG_GDB_VERSION
781
796
fi
782
797
783
- if [ ! -z " $CFG_LLDB " ]
798
+ if [ -n " $CFG_LLDB " ]
784
799
then
785
800
# Store LLDB's version
786
801
CFG_LLDB_VERSION=$( $CFG_LLDB --version 2> /dev/null | head -1)
@@ -806,7 +821,7 @@ step_msg "looking for target specific programs"
806
821
807
822
probe CFG_ADB adb
808
823
809
- if [ ! -z " $CFG_PANDOC " ]
824
+ if [ -n " $CFG_PANDOC " ]
810
825
then
811
826
# Extract "MAJOR MINOR" from Pandoc's version number
812
827
PV_MAJOR_MINOR=$( pandoc --version | grep ' ^pandoc' |
832
847
BIN_SUF=.exe
833
848
fi
834
849
835
- if [ ! -z " $CFG_ENABLE_LOCAL_RUST " ]
850
+ if [ -n " $CFG_ENABLE_LOCAL_RUST " ]
836
851
then
837
852
system_rustc=$( which rustc)
838
853
if [ -f ${CFG_LOCAL_RUST_ROOT} /bin/rustc${BIN_SUF} ]
917
932
918
933
# Okay, at this point, we have made up our minds about whether we are
919
934
# going to force CFG_ENABLE_CLANG or not; save the setting if so.
920
- if [ ! -z " $CFG_ENABLE_CLANG " ]
935
+ if [ -n " $CFG_ENABLE_CLANG " ]
921
936
then
922
937
putvar CFG_ENABLE_CLANG
923
938
fi
924
939
925
940
# Same with jemalloc. save the setting here.
926
- if [ ! -z " $CFG_DISABLE_JEMALLOC " ]
941
+ if [ -n " $CFG_DISABLE_JEMALLOC " ]
927
942
then
928
943
putvar CFG_DISABLE_JEMALLOC
929
944
fi
930
945
931
- if [ ! -z " $CFG_LLVM_ROOT " -a -z " $CFG_DISABLE_LLVM_VERSION_CHECK " -a -e " $CFG_LLVM_ROOT /bin/llvm-config" ]
946
+ if [ -n " $CFG_LLVM_ROOT " -a -z " $CFG_DISABLE_LLVM_VERSION_CHECK " -a -e " $CFG_LLVM_ROOT /bin/llvm-config" ]
932
947
then
933
948
step_msg " using custom LLVM at $CFG_LLVM_ROOT "
934
949
957
972
# CFG_ENABLE_CLANG is set, that indicates that we are opting into
958
973
# running such safeguards.
959
974
960
- if [ ! -z " $CC " ]
975
+ if [ -n " $CC " ]
961
976
then
962
977
msg " skipping compiler inference steps; using provided CC=$CC "
963
978
CFG_CC=" $CC "
970
985
putvar CFG_USING_CLANG
971
986
fi
972
987
else
973
- if [ ! -z " $CFG_ENABLE_CLANG " ]
988
+ if [ -n " $CFG_ENABLE_CLANG " ]
974
989
then
975
990
if [ -z " $CFG_CLANG " ]
976
991
then
@@ -984,23 +999,21 @@ else
984
999
fi
985
1000
fi
986
1001
987
- if [ ! -z " $CFG_ENABLE_CLANG " ]
1002
+ if [ -n " $CFG_ENABLE_CLANG " ]
988
1003
then
989
1004
case " $CC " in
990
1005
(' ' |* clang)
991
1006
CFG_CLANG_REPORTED_VERSION=$( $CFG_CC --version | grep version)
992
1007
993
- if [[ $CFG_CLANG_REPORTED_VERSION == * " (based on LLVM " * ]]
994
- then
1008
+ if echo $CFG_CLANG_REPORTED_VERSION | grep -q " (based on LLVM " ; then
995
1009
CFG_CLANG_VERSION=$( echo $CFG_CLANG_REPORTED_VERSION | sed ' s/.*(based on LLVM \(.*\))/\1/' )
996
- elif [[ $CFG_CLANG_REPORTED_VERSION == " Apple LLVM" * ]]
997
- then
1010
+ elif echo $CFG_CLANG_REPORTED_VERSION | grep -q " Apple LLVM" ; then
998
1011
CFG_OSX_CLANG_VERSION=$( echo $CFG_CLANG_REPORTED_VERSION | sed ' s/.*version \(.*\) .*/\1/' )
999
1012
else
1000
1013
CFG_CLANG_VERSION=$( echo $CFG_CLANG_REPORTED_VERSION | sed ' s/.*version \(.*\) .*/\1/' )
1001
1014
fi
1002
1015
1003
- if [ ! -z " $CFG_OSX_CLANG_VERSION " ]
1016
+ if [ -n " $CFG_OSX_CLANG_VERSION " ]
1004
1017
then
1005
1018
case $CFG_OSX_CLANG_VERSION in
1006
1019
(7.0* )
@@ -1029,7 +1042,7 @@ then
1029
1042
esac
1030
1043
fi
1031
1044
1032
- if [ ! -z " $CFG_ENABLE_CCACHE " ]
1045
+ if [ -n " $CFG_ENABLE_CCACHE " ]
1033
1046
then
1034
1047
if [ -z " $CFG_CCACHE " ]
1035
1048
then
@@ -1099,20 +1112,24 @@ do
1099
1112
fi
1100
1113
1101
1114
case $i in
1102
- arm-linux-androideabi)
1103
-
1104
- if [ ! -f $CFG_ANDROID_CROSS_PATH /bin/arm-linux-androideabi-gcc ]
1105
- then
1106
- err " NDK $CFG_ANDROID_CROSS_PATH /bin/arm-linux-androideabi-gcc not found"
1107
- fi
1108
- if [ ! -f $CFG_ANDROID_CROSS_PATH /bin/arm-linux-androideabi-g++ ]
1109
- then
1110
- err " NDK $CFG_ANDROID_CROSS_PATH /bin/arm-linux-androideabi-g++ not found"
1111
- fi
1112
- if [ ! -f $CFG_ANDROID_CROSS_PATH /bin/arm-linux-androideabi-ar ]
1115
+ * android* )
1116
+ upper_snake_target=$( echo " $i " | tr ' [:lower:]' ' [:upper:]' | tr ' \-' ' \_' )
1117
+ eval ndk=\$ " CFG_${upper_snake_target} _NDK"
1118
+ if [ -z " $ndk " ]
1113
1119
then
1114
- err " NDK $CFG_ANDROID_CROSS_PATH /bin/arm-linux-androideabi-ar not found"
1120
+ ndk=$CFG_ANDROID_CROSS_PATH
1121
+ eval " CFG_${upper_snake_target} _NDK" =$CFG_ANDROID_CROSS_PATH
1122
+ warn " generic/default Android NDK option is deprecated (use --$i -ndk option instead)"
1115
1123
fi
1124
+
1125
+ # Perform a basic sanity check of the NDK
1126
+ for android_ndk_tool in " $ndk /bin/$i -gcc" " $ndk /bin/$i -g++" " $ndk /bin/$i -ar"
1127
+ do
1128
+ if [ ! -f $android_ndk_tool ]
1129
+ then
1130
+ err " NDK tool $android_ndk_tool not found (bad or missing --$i -ndk option?)"
1131
+ fi
1132
+ done
1116
1133
;;
1117
1134
1118
1135
arm-apple-darwin)
@@ -1164,8 +1181,13 @@ do
1164
1181
# INCLUDE and LIB variables for MSVC so we can set those in the
1165
1182
# build system as well.
1166
1183
install=$( reg QUERY \
1167
- ' HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12 .0' \
1184
+ ' HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14 .0' \
1168
1185
-v InstallDir)
1186
+ if [ -z " $install " ]; then
1187
+ install=$( reg QUERY \
1188
+ ' HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0' \
1189
+ -v InstallDir)
1190
+ fi
1169
1191
need_ok " couldn't find visual studio install root"
1170
1192
CFG_MSVC_ROOT=$( echo " $install " | grep InstallDir | sed ' s/.*REG_SZ[ ]*//' )
1171
1193
CFG_MSVC_ROOT=$( dirname " $CFG_MSVC_ROOT " )
1186
1208
;;
1187
1209
esac
1188
1210
bindir=" ${CFG_MSVC_ROOT} /VC/bin"
1189
- if [ ! -z " $msvc_part " ]; then
1211
+ if [ -n " $msvc_part " ]; then
1190
1212
bindir=" $bindir /$msvc_part "
1191
1213
fi
1192
1214
eval CFG_MSVC_BINDIR_$bits =" \" $bindir \" "
1216
1238
esac
1217
1239
done
1218
1240
1219
- if [ ! -z " $CFG_PERF " ]
1241
+ if [ -n " $CFG_PERF " ]
1220
1242
then
1221
1243
HAVE_PERF_LOGFD=` $CFG_PERF stat --log-fd 2>&1 | grep ' unknown option' `
1222
1244
if [ -z " $HAVE_PERF_LOGFD " ];
@@ -1326,11 +1348,11 @@ then
1326
1348
" ${CFG_GIT} " submodule init
1327
1349
1328
1350
# Disable submodules that we're not using
1329
- if [ ! -z " ${CFG_LLVM_ROOT} " ]; then
1351
+ if [ -n " ${CFG_LLVM_ROOT} " ]; then
1330
1352
msg " git: submodule deinit src/llvm"
1331
1353
" ${CFG_GIT} " submodule deinit src/llvm
1332
1354
fi
1333
- if [ ! -z " ${CFG_JEMALLOC_ROOT} " ]; then
1355
+ if [ -n " ${CFG_JEMALLOC_ROOT} " ]; then
1334
1356
msg " git: submodule deinit src/jemalloc"
1335
1357
" ${CFG_GIT} " submodule deinit src/jemalloc
1336
1358
fi
1377
1399
if [ -z $CFG_LLVM_ROOT ]
1378
1400
then
1379
1401
LLVM_BUILD_DIR=${CFG_BUILD_DIR} $t /llvm
1380
- if [ ! -z " $CFG_DISABLE_OPTIMIZE_LLVM " ]
1402
+ if [ -n " $CFG_DISABLE_OPTIMIZE_LLVM " ]
1381
1403
then
1382
1404
LLVM_DBG_OPTS=" --enable-debug-symbols --disable-optimized"
1383
1405
# Just use LLVM straight from its build directory to
1433
1455
msg " configuring LLVM for $t with cmake"
1434
1456
1435
1457
CMAKE_ARGS=" -DLLVM_INCLUDE_TESTS=OFF"
1436
- if [ ! -z " $CFG_DISABLE_OPTIMIZE_LLVM " ]; then
1458
+ if [ -n " $CFG_DISABLE_OPTIMIZE_LLVM " ]; then
1437
1459
CMAKE_ARGS=" $CMAKE_ARGS -DCMAKE_BUILD_TYPE=Debug"
1438
1460
else
1439
1461
CMAKE_ARGS=" $CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release"
@@ -1447,12 +1469,22 @@ do
1447
1469
1448
1470
msg " configuring LLVM with:"
1449
1471
msg " $CMAKE_ARGS "
1472
+ case " $CFG_MSVC_ROOT " in
1473
+ * 14.0* )
1474
+ generator=" Visual Studio 14 2015"
1475
+ ;;
1476
+ * 12.0* )
1477
+ generator=" Visual Studio 12 2013"
1478
+ ;;
1479
+ * )
1480
+ err " can't determine generator for LLVM cmake"
1481
+ ;;
1482
+ esac
1450
1483
case " $t " in
1451
1484
x86_64-* )
1452
- generator=" Visual Studio 12 2013 Win64"
1485
+ generator=" $generator Win64"
1453
1486
;;
1454
1487
i686-* )
1455
- generator=" Visual Studio 12 2013"
1456
1488
;;
1457
1489
* )
1458
1490
err " can only build LLVM for x86 platforms"
1525
1557
1526
1558
(* )
1527
1559
msg " inferring LLVM_CXX/CC from CXX/CC = $CXX /$CC "
1528
- if [ ! -z " $CFG_ENABLE_CCACHE " ]
1560
+ if [ -n " $CFG_ENABLE_CCACHE " ]
1529
1561
then
1530
1562
if [ -z " $CFG_CCACHE " ]
1531
1563
then
@@ -1654,25 +1686,26 @@ putvar CFG_HOST
1654
1686
putvar CFG_TARGET
1655
1687
putvar CFG_LIBDIR_RELATIVE
1656
1688
putvar CFG_DISABLE_MANAGE_SUBMODULES
1657
- putvar CFG_ANDROID_CROSS_PATH
1689
+ putvar CFG_AARCH64_LINUX_ANDROID_NDK
1690
+ putvar CFG_ARM_LINUX_ANDROIDEABI_NDK
1658
1691
putvar CFG_MANDIR
1659
1692
1660
1693
# Avoid spurious warnings from clang by feeding it original source on
1661
1694
# ccache-miss rather than preprocessed input.
1662
- if [ ! -z " $CFG_ENABLE_CCACHE " ] && [ ! -z " $CFG_USING_CLANG " ]
1695
+ if [ -n " $CFG_ENABLE_CCACHE " ] && [ -n " $CFG_USING_CLANG " ]
1663
1696
then
1664
1697
CFG_CCACHE_CPP2=1
1665
1698
putvar CFG_CCACHE_CPP2
1666
1699
fi
1667
1700
1668
- if [ ! -z " $CFG_ENABLE_CCACHE " ]
1701
+ if [ -n " $CFG_ENABLE_CCACHE " ]
1669
1702
then
1670
1703
CFG_CCACHE_BASEDIR=${CFG_SRC_DIR}
1671
1704
putvar CFG_CCACHE_BASEDIR
1672
1705
fi
1673
1706
1674
1707
1675
- if [ ! -z $BAD_PANDOC ]
1708
+ if [ -n $BAD_PANDOC ]
1676
1709
then
1677
1710
CFG_PANDOC=
1678
1711
putvar CFG_PANDOC
0 commit comments