+# Utility function for cmake-built packages to setup a current ninja.
+termux_setup_ninja() {
+ local NINJA_VERSION=1.7.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 \
+ 38fa8cfb9c1632a5cdf7a32fe1a7c5aa89e96c1d492c28624f4cc018e68458b9
+ unzip $NINJA_ZIP_FILE -d $NINJA_FOLDER
+ fi
+ export PATH=$NINJA_FOLDER:$PATH
+}
+
+# Utility function for cmake-built packages to setup a current meson.
+termux_setup_meson() {
+ termux_setup_ninja
+ local MESON_VERSION=0.42.0
+ local MESON_FOLDER=$TERMUX_COMMON_CACHEDIR/meson-$MESON_VERSION
+ if [ ! -d "$MESON_FOLDER" ]; then
+ local MESON_TAR_NAME=meson-$MESON_VERSION.tar.gz
+ local MESON_TAR_FILE=$TERMUX_PKG_TMPDIR/$MESON_TAR_NAME
+ termux_download \
+ https://github.com/mesonbuild/meson/releases/download/$MESON_VERSION/meson-$MESON_VERSION.tar.gz \
+ $MESON_TAR_FILE \
+ a74c7387a3dd8171e931bcd948355f7f9529368eae72c3c22a9beef6c2e73498
+ tar xf "$MESON_TAR_FILE" -C "$TERMUX_COMMON_CACHEDIR"
+ (cd $MESON_FOLDER && patch -p1 < $TERMUX_SCRIPTDIR/scripts/meson-android.patch)
+ fi
+ TERMUX_MESON="$MESON_FOLDER/meson.py"
+ TERMUX_MESON_CROSSFILE=$TERMUX_COMMON_CACHEDIR/meson-crossfile-$TERMUX_ARCH-v1.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'
+ pkg-config = '$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
+}
+