# Utility function for cmake-built packages to setup a current cmake.
termux_setup_cmake() {
local TERMUX_CMAKE_MAJORVESION=3.9
- local TERMUX_CMAKE_MINORVERSION="0-rc6"
+ local TERMUX_CMAKE_MINORVERSION="0"
local TERMUX_CMAKE_VERSION=$TERMUX_CMAKE_MAJORVESION.$TERMUX_CMAKE_MINORVERSION
local TERMUX_CMAKE_TARNAME=cmake-${TERMUX_CMAKE_VERSION}-Linux-x86_64.tar.gz
local TERMUX_CMAKE_TARFILE=$TERMUX_PKG_TMPDIR/$TERMUX_CMAKE_TARNAME
if [ ! -d "$TERMUX_CMAKE_FOLDER" ]; then
termux_download https://cmake.org/files/v$TERMUX_CMAKE_MAJORVESION/$TERMUX_CMAKE_TARNAME \
"$TERMUX_CMAKE_TARFILE" \
- 68456efed8207381c7724411558e7a3ed6503932f8f3127a3ba640e624026b1a
+ e714ddd55ab9be7ec5e4d30ca1ceee5e23406d7d3bf14457a67180cf54d9834a
rm -Rf "$TERMUX_PKG_TMPDIR/cmake-${TERMUX_CMAKE_VERSION}-Linux-x86_64"
tar xf "$TERMUX_CMAKE_TARFILE" -C "$TERMUX_PKG_TMPDIR"
mv "$TERMUX_PKG_TMPDIR/cmake-${TERMUX_CMAKE_VERSION}-Linux-x86_64" \
TERMUX_STANDALONE_TOOLCHAIN="$TERMUX_TOPDIR/_lib/${TERMUX_NDK_VERSION}-${TERMUX_ARCH}-${TERMUX_PKG_API_LEVEL}"
# Bump the below version if a change is made in toolchain setup to ensure
# that everyone gets an updated toolchain:
- TERMUX_STANDALONE_TOOLCHAIN+="-v10"
+ TERMUX_STANDALONE_TOOLCHAIN+="-v11"
if [ -n "${TERMUX_PKG_BLACKLISTED_ARCHES:=""}" ] && [ "$TERMUX_PKG_BLACKLISTED_ARCHES" != "${TERMUX_PKG_BLACKLISTED_ARCHES/$TERMUX_ARCH/}" ]; then
echo "Skipping building $TERMUX_PKG_NAME for arch $TERMUX_ARCH"
$_TERMUX_TOOLCHAIN_TMPDIR/aarch64-linux-android/bin/ld
fi
+ if [ "$TERMUX_ARCH" = "arm" ]; then
+ # Linker wrapper script to add '--exclude-libs libgcc.a', see
+ # https://github.com/android-ndk/ndk/issues/379
+ # https://android-review.googlesource.com/#/c/389852/
+ local linker
+ for linker in ld ld.bfd ld.gold; do
+ local wrap_linker=$_TERMUX_TOOLCHAIN_TMPDIR/$TERMUX_HOST_PLATFORM/bin/$linker
+ local real_linker=$_TERMUX_TOOLCHAIN_TMPDIR/$TERMUX_HOST_PLATFORM/bin/$linker.real
+ cp $wrap_linker $real_linker
+ echo '#!/bin/bash' > $wrap_linker
+ echo -n '`dirname $0`/' >> $wrap_linker
+ echo -n $linker.real >> $wrap_linker
+ echo ' --exclude-libs libgcc.a "$@"' >> $wrap_linker
+ done
+ fi
+
cd $_TERMUX_TOOLCHAIN_TMPDIR/sysroot
for f in $TERMUX_SCRIPTDIR/ndk-patches/*.patch; do
fi
local _STL_LIBFILE_NAME=libc++_shared.so
- if [ ! -f $TERMUX_PREFIX/lib/libstdc++.so ] || [ `readlink $TERMUX_PREFIX/lib/libstdc++.so` != $_STL_LIBFILE_NAME ]; then
- # Setup libgnustl_shared.so in $PREFIX/lib and libstdc++.so as a symlink to it,
+ if [ ! -f $TERMUX_PREFIX/lib/libstdc++.so ]; then
+ # Setup libgnustl_shared.so in $PREFIX/lib and libstdc++.so as a link to it,
# so that other C++ using packages links to it instead of the default android
# C++ library which does not support exceptions or STL:
# https://developer.android.com/ndk/guides/cpp-support.html
cp "$_STL_LIBFILE" .
$STRIP --strip-unneeded $_STL_LIBFILE_NAME
$TERMUX_ELF_CLEANER $_STL_LIBFILE_NAME
- ln -f -s $_STL_LIBFILE_NAME libstdc++.so
+ if [ $TERMUX_ARCH = "arm" ]; then
+ # Use a linker script to get libunwind.a.
+ echo 'INPUT(-lunwind -lc++_shared)' > libstdc++.so
+ else
+ ln -f $_STL_LIBFILE_NAME libstdc++.so
+ fi
fi
export PKG_CONFIG_LIBDIR="$TERMUX_PKG_CONFIG_LIBDIR"