+# Utility function to setup a current ninja build system.
+termux_setup_ninja() {
+ local NINJA_VERSION=1.8.2
+ local NINJA_FOLDER=$TERMUX_COMMON_CACHEDIR/ninja-$NINJA_VERSION
+ if [ ! -x $NINJA_FOLDER/ninja ]; then
+ mkdir -p $NINJA_FOLDER
+ local NINJA_ZIP_FILE=$TERMUX_PKG_TMPDIR/ninja-$NINJA_VERSION.zip
+ termux_download https://github.com/ninja-build/ninja/releases/download/v$NINJA_VERSION/ninja-linux.zip \
+ $NINJA_ZIP_FILE \
+ d2fea9ff33b3ef353161ed906f260d565ca55b8ca0568fa07b1d2cab90a84a07
+ unzip $NINJA_ZIP_FILE -d $NINJA_FOLDER
+ fi
+ export PATH=$NINJA_FOLDER:$PATH
+}
+
+# Utility function to setup a current meson build system.
+termux_setup_meson() {
+ termux_setup_ninja
+ local MESON_VERSION=0.44.0
+ local MESON_FOLDER=$TERMUX_COMMON_CACHEDIR/meson-$MESON_VERSION-v1
+ if [ ! -d "$MESON_FOLDER" ]; then
+ local MESON_TAR_NAME=meson-$MESON_VERSION.tar.gz
+ local MESON_TAR_FILE=$TERMUX_PKG_TMPDIR/$MESON_TAR_NAME
+ local MESON_TMP_FOLDER=$TERMUX_PKG_TMPDIR/meson-$MESON_VERSION
+ termux_download \
+ https://github.com/mesonbuild/meson/releases/download/$MESON_VERSION/meson-$MESON_VERSION.tar.gz \
+ $MESON_TAR_FILE \
+ 50f9b12b77272ef6ab064d26b7e06667f07fa9f931e6a20942bba2216ba4281b
+ tar xf "$MESON_TAR_FILE" -C "$TERMUX_PKG_TMPDIR"
+ cd $MESON_TMP_FOLDER
+ patch -p1 < $TERMUX_SCRIPTDIR/scripts/meson-android.patch
+ mv $MESON_TMP_FOLDER $MESON_FOLDER
+ fi
+ TERMUX_MESON="$MESON_FOLDER/meson.py"
+ TERMUX_MESON_CROSSFILE=$TERMUX_COMMON_CACHEDIR/meson-crossfile-$TERMUX_ARCH-v2.txt
+ if [ ! -f $TERMUX_MESON_CROSSFILE ]; then
+ local MESON_CPU MESON_CPU_FAMILY
+ if [ $TERMUX_ARCH = "arm" ]; then
+ MESON_CPU_FAMILY="arm"
+ MESON_CPU="armv7"
+ elif [ $TERMUX_ARCH = "i686" ]; then
+ MESON_CPU_FAMILY="x86"
+ MESON_CPU="i686"
+ elif [ $TERMUX_ARCH = "x86_64" ]; then
+ MESON_CPU_FAMILY="x86_64"
+ MESON_CPU="x86_64"
+ elif [ $TERMUX_ARCH = "aarch64" ]; then
+ MESON_CPU_FAMILY="arm"
+ MESON_CPU="aarch64"
+ else
+ termux_error_exit "Unsupported arch: $TERMUX_ARCH"
+ fi
+
+ cat > $TERMUX_MESON_CROSSFILE <<-HERE
+ [binaries]
+ ar = '$AR'
+ c = '$CC'
+ cpp = '$CXX'
+ ld = '$LD'
+ pkgconfig = '$PKG_CONFIG'
+ strip = '$STRIP'
+ [properties]
+ needs_exe_wrapper = true
+ [host_machine]
+ cpu_family = '$MESON_CPU_FAMILY'
+ cpu = '$MESON_CPU'
+ endian = 'little'
+ system = 'android'
+ HERE
+ fi
+}
+
+# Utility function to setup a current cmake build system
+termux_setup_cmake() {
+ local TERMUX_CMAKE_MAJORVESION=3.10
+ local TERMUX_CMAKE_MINORVERSION=2
+ 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
+ local TERMUX_CMAKE_FOLDER=$TERMUX_COMMON_CACHEDIR/cmake-$TERMUX_CMAKE_VERSION
+ if [ ! -d "$TERMUX_CMAKE_FOLDER" ]; then
+ termux_download https://cmake.org/files/v$TERMUX_CMAKE_MAJORVESION/$TERMUX_CMAKE_TARNAME \
+ "$TERMUX_CMAKE_TARFILE" \
+ 7a82b46c35f4e68a0807e8dc04e779dee3f36cd42c6387fd13b5c29fe62a69ea
+ 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_CMAKE_FOLDER"
+ fi
+ export PATH=$TERMUX_CMAKE_FOLDER/bin:$PATH
+ export CMAKE_INSTALL_ALWAYS=1
+}
+