From 18fbc56c7256430aa5b2c2337628d8a3b78fb632 Mon Sep 17 00:00:00 2001 From: Leap of Azzam Date: Wed, 17 Nov 2021 15:36:43 +0700 Subject: [PATCH] add package: zig Signed-off-by: Leap of Azzam --- build-package.sh | 4 +++ packages/zig/build.sh | 23 +++++++++++++ packages/zig/cmake-Findllvm.cmake.patch | 11 +++++++ scripts/build/setup/termux_setup_zig.sh | 44 +++++++++++++++++++++++++ scripts/setup-offline-bundle.sh | 3 ++ 5 files changed, 85 insertions(+) create mode 100644 packages/zig/build.sh create mode 100644 packages/zig/cmake-Findllvm.cmake.patch create mode 100644 scripts/build/setup/termux_setup_zig.sh diff --git a/build-package.sh b/build-package.sh index 19a01d27b4..bab3422209 100755 --- a/build-package.sh +++ b/build-package.sh @@ -67,6 +67,10 @@ source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_golang.sh" # shellcheck source=scripts/build/setup/termux_setup_rust.sh source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_rust.sh" +# Utility function for zig-using packages to setup a zig toolchain. +# shellcheck source=scripts/build/setup/termux_setup_zig.sh +source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_zig.sh" + # Utility function to setup a current ninja build system. # shellcheck source=scripts/build/setup/termux_setup_ninja.sh source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_ninja.sh" diff --git a/packages/zig/build.sh b/packages/zig/build.sh new file mode 100644 index 0000000000..d2b900a8ae --- /dev/null +++ b/packages/zig/build.sh @@ -0,0 +1,23 @@ +TERMUX_PKG_HOMEPAGE=https://ziglang.org +TERMUX_PKG_DESCRIPTION="General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software." +TERMUX_PKG_LICENSE="MIT" +TERMUX_PKG_MAINTAINER="@leapofazzam123" +TERMUX_PKG_VERSION=0.9.0 +TERMUX_PKG_SRCURL=https://ziglang.org/download/$TERMUX_PKG_VERSION/zig-$TERMUX_PKG_VERSION.tar.xz +TERMUX_PKG_SHA256=cd1be83b12f8269cc5965e59877b49fdd8fa638efb6995ac61eb4cea36a2e381 +TERMUX_PKG_AUTO_UPDATE=true +TERMUX_PKG_DEPENDS="libandroid-spawn, libc++, libxml2, ncurses, zlib" +TERMUX_PKG_BUILD_DEPENDS="llvm, libllvm-static" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" +-DZIG_PREFER_CLANG_CPP_DYLIB=OFF +-DLLVM_LIBDIRS=$TERMUX_PREFIX/lib +" + +termux_step_pre_configure() { + termux_setup_zig + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" + -DZIG_EXECUTABLE=$(which zig) + -DZIG_TARGET_TRIPLE=$ZIG_TARGET_NAME + " + LDFLAGS+=" -landroid-spawn -lncursesw -lxml2 -lz" +} diff --git a/packages/zig/cmake-Findllvm.cmake.patch b/packages/zig/cmake-Findllvm.cmake.patch new file mode 100644 index 0000000000..c42914804d --- /dev/null +++ b/packages/zig/cmake-Findllvm.cmake.patch @@ -0,0 +1,11 @@ +--- a/cmake/Findllvm.cmake ++++ b/cmake/Findllvm.cmake +@@ -353,6 +353,8 @@ + FIND_AND_ADD_LLVM_LIB(LLVMBinaryFormat) + FIND_AND_ADD_LLVM_LIB(LLVMSupport) + FIND_AND_ADD_LLVM_LIB(LLVMDemangle) ++ FIND_AND_ADD_LLVM_LIB(Polly) ++ FIND_AND_ADD_LLVM_LIB(PollyISL) + endif() + + include(FindPackageHandleStandardArgs) diff --git a/scripts/build/setup/termux_setup_zig.sh b/scripts/build/setup/termux_setup_zig.sh new file mode 100644 index 0000000000..8b2b718a48 --- /dev/null +++ b/scripts/build/setup/termux_setup_zig.sh @@ -0,0 +1,44 @@ +termux_setup_zig() { + local ZIG_VERSION=0.9.0 + local ZIG_FOLDER + + if [ "${TERMUX_PACKAGES_OFFLINE-false}" = "true" ]; then + ZIG_FOLDER=${TERMUX_SCRIPTDIR}/build-tools/zig-${ZIG_VERSION} + else + ZIG_FOLDER=${TERMUX_COMMON_CACHEDIR}/zig-${ZIG_VERSION} + fi + + if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then + if [ ! -x "$ZIG_FOLDER/zig" ]; then + mkdir -p "$ZIG_FOLDER" + local ZIG_TARBALL=$TERMUX_PKG_TMPDIR/zig-$ZIG_VERSION.zip + termux_download https://ziglang.org/download/$ZIG_VERSION/zig-linux-x86_64-$ZIG_VERSION.tar.xz \ + "$ZIG_TARBALL" \ + 5c55344a877d557fb1b28939785474eb7f4f2f327aab55293998f501f7869fa6 + tar xf "$ZIG_TARBALL" -C "$ZIG_FOLDER" --strip-components=1 + fi + export PATH=$ZIG_FOLDER:$PATH + else + local ZIG_PKG_VERSION=$(bash -c ". $TERMUX_SCRIPTDIR/packages/zig/build.sh; echo \$TERMUX_PKG_VERSION") + if ([ ! -e "$TERMUX_BUILT_PACKAGES_DIRECTORY/zig" ] || + [ "$(cat "$TERMUX_BUILT_PACKAGES_DIRECTORY/zig")" != "$ZIG_PKG_VERSION" ]) && + [ "$(dpkg-query -W -f '${db:Status-Status}\n' zig 2>/dev/null)" != "installed" ]; then + echo "Package 'zig' is not installed." + echo "You can install it with" + echo + echo " pkg install zig" + echo + echo "or build it from source with" + echo + echo " ./build-package.sh zig" + echo + exit 1 + fi + fi + + if [ $TERMUX_ARCH = "i686" ]; then + ZIG_TARGET_NAME=i386-linux-android + else + ZIG_TARGET_NAME=$TERMUX_ARCH-linux-android + fi +} diff --git a/scripts/setup-offline-bundle.sh b/scripts/setup-offline-bundle.sh index 41aede6922..068a6cebaf 100755 --- a/scripts/setup-offline-bundle.sh +++ b/scripts/setup-offline-bundle.sh @@ -47,6 +47,9 @@ mkdir -p "$TERMUX_PKG_TMPDIR" #(. "$TERMUX_SCRIPTDIR"/scripts/build/setup/termux_setup_rust.sh # termux_setup_rust #) +(. "$TERMUX_SCRIPTDIR"/scripts/build/setup/termux_setup_zig.sh + termux_setup_zig +) rm -rf "${TERMUX_PKG_TMPDIR}" (test -d "$TERMUX_SCRIPTDIR"/build-tools/android-sdk && test -d "$TERMUX_SCRIPTDIR"/build-tools/android-ndk && exit 0 "$TERMUX_SCRIPTDIR"/scripts/setup-android-sdk.sh