bump(main/zig): 0.11.0 (#17733)
This commit is contained in:
parent
003c814212
commit
d47c544b06
|
@ -154,7 +154,7 @@ jobs:
|
|||
|
||||
- name: Free additional disk space (if necessary)
|
||||
run: |
|
||||
if grep -q '^clvk$\|^dart$\|^rust$\|^rustc-nightly$' ./built_termux-main_packages.txt || \
|
||||
if grep -q '^clvk$\|^dart$\|^rust$\|^rustc-nightly$\|^zig$' ./built_termux-main_packages.txt || \
|
||||
grep -q '^firefox$' ./built_termux-x11_packages.txt; then
|
||||
echo "Free additional disk space on host"
|
||||
sudo apt purge -yq $(dpkg -l | grep '^ii' | awk '{ print $2 }' | grep -P '(cabal-|dotnet-|ghc-|libmono|php|aspnetcore)') \
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
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.1
|
||||
TERMUX_PKG_SRCURL=https://ziglang.org/download/$TERMUX_PKG_VERSION/zig-$TERMUX_PKG_VERSION.tar.xz
|
||||
TERMUX_PKG_SHA256=38cf4e84481f5facc766ba72783e7462e08d6d29a5d47e3b75c8ee3142485210
|
||||
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=$(command -v zig)
|
||||
-DZIG_TARGET_TRIPLE=$ZIG_TARGET_NAME
|
||||
"
|
||||
LDFLAGS+=" -landroid-spawn -lncursesw -lxml2 -lz"
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
--- 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)
|
|
@ -0,0 +1,123 @@
|
|||
diff --git a/build b/build
|
||||
index b1917f6b..c1a5844c 100755
|
||||
--- a/build
|
||||
+++ b/build
|
||||
@@ -20,10 +20,19 @@ case $TARGET_OS_CMAKE in
|
||||
native) TARGET_OS_CMAKE="";;
|
||||
esac
|
||||
|
||||
+# When we know we are not host building zig,
|
||||
+# we can disable unused targets ahead of time
|
||||
+case "${TARGET}" in
|
||||
+aarch64-*) ARCH="AArch64" ;;
|
||||
+arm-*) ARCH="ARM" ;;
|
||||
+x86-*) ARCH="X86" ;;
|
||||
+x86_64-*) ARCH="X86" ;;
|
||||
+esac
|
||||
+
|
||||
# First build the libraries for Zig to link against, as well as native `llvm-tblgen`.
|
||||
mkdir -p "$ROOTDIR/out/build-llvm-host"
|
||||
cd "$ROOTDIR/out/build-llvm-host"
|
||||
-cmake "$ROOTDIR/llvm" \
|
||||
+cmake -G Ninja "$ROOTDIR/llvm" \
|
||||
-DCMAKE_INSTALL_PREFIX="$ROOTDIR/out/host" \
|
||||
-DCMAKE_PREFIX_PATH="$ROOTDIR/out/host" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
@@ -38,6 +47,7 @@ cmake "$ROOTDIR/llvm" \
|
||||
-DLLVM_ENABLE_BINDINGS=OFF \
|
||||
-DLLVM_ENABLE_OCAMLDOC=OFF \
|
||||
-DLLVM_ENABLE_Z3_SOLVER=OFF \
|
||||
+ -DLLVM_TARGETS_TO_BUILD="$ARCH" \
|
||||
-DLLVM_TOOL_LLVM_LTO2_BUILD=OFF \
|
||||
-DLLVM_TOOL_LLVM_LTO_BUILD=OFF \
|
||||
-DLLVM_TOOL_LTO_BUILD=OFF \
|
||||
@@ -50,27 +60,29 @@ cmake "$ROOTDIR/llvm" \
|
||||
-DCLANG_TOOL_ARCMT_TEST_BUILD=OFF \
|
||||
-DCLANG_TOOL_C_ARCMT_TEST_BUILD=OFF \
|
||||
-DCLANG_TOOL_LIBCLANG_BUILD=OFF
|
||||
-cmake --build . --target install
|
||||
+ninja -j$(nproc) llvm-ar llvm-ranlib llvm-rc llvm-tblgen clang-tblgen
|
||||
|
||||
# Now we build Zig, still with system C/C++ compiler, linking against LLVM,
|
||||
# Clang, LLD we just built from source.
|
||||
+if ! :; then
|
||||
mkdir -p "$ROOTDIR/out/build-zig-host"
|
||||
cd "$ROOTDIR/out/build-zig-host"
|
||||
-cmake "$ROOTDIR/zig" \
|
||||
+cmake -G Ninja "$ROOTDIR/zig" \
|
||||
-DCMAKE_INSTALL_PREFIX="$ROOTDIR/out/host" \
|
||||
-DCMAKE_PREFIX_PATH="$ROOTDIR/out/host" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DZIG_VERSION="$ZIG_VERSION"
|
||||
-cmake --build . --target install
|
||||
+ninja -j$(nproc) install
|
||||
+fi
|
||||
|
||||
# Now we have Zig as a cross compiler.
|
||||
-ZIG="$ROOTDIR/out/host/bin/zig"
|
||||
+ZIG=$(command -v zig)
|
||||
|
||||
# First cross compile zlib for the target, as we need the LLVM linked into
|
||||
# the final zig binary to have zlib support enabled.
|
||||
mkdir -p "$ROOTDIR/out/build-zlib-$TARGET-$MCPU"
|
||||
cd "$ROOTDIR/out/build-zlib-$TARGET-$MCPU"
|
||||
-cmake "$ROOTDIR/zlib" \
|
||||
+cmake -G Ninja "$ROOTDIR/zlib" \
|
||||
-DCMAKE_INSTALL_PREFIX="$ROOTDIR/out/$TARGET-$MCPU" \
|
||||
-DCMAKE_PREFIX_PATH="$ROOTDIR/out/$TARGET-$MCPU" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
@@ -79,10 +91,10 @@ cmake "$ROOTDIR/zlib" \
|
||||
-DCMAKE_C_COMPILER="$ZIG;cc;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
||||
-DCMAKE_CXX_COMPILER="$ZIG;c++;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
||||
-DCMAKE_ASM_COMPILER="$ZIG;cc;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
||||
- -DCMAKE_RC_COMPILER="$ROOTDIR/out/host/bin/llvm-rc" \
|
||||
- -DCMAKE_AR="$ROOTDIR/out/host/bin/llvm-ar" \
|
||||
- -DCMAKE_RANLIB="$ROOTDIR/out/host/bin/llvm-ranlib"
|
||||
-cmake --build . --target install
|
||||
+ -DCMAKE_RC_COMPILER="$ROOTDIR/out/build-llvm-host/bin/llvm-rc" \
|
||||
+ -DCMAKE_AR="$ROOTDIR/out/build-llvm-host/bin/llvm-ar" \
|
||||
+ -DCMAKE_RANLIB="$ROOTDIR/out/build-llvm-host/bin/llvm-ranlib"
|
||||
+ninja -j$(nproc) install
|
||||
|
||||
# Same deal for zstd.
|
||||
# The build system for zstd is whack so I just put all the files here.
|
||||
@@ -132,7 +144,7 @@ $ZIG build-lib \
|
||||
# Rebuild LLVM with Zig.
|
||||
mkdir -p "$ROOTDIR/out/build-llvm-$TARGET-$MCPU"
|
||||
cd "$ROOTDIR/out/build-llvm-$TARGET-$MCPU"
|
||||
-cmake "$ROOTDIR/llvm" \
|
||||
+cmake -G Ninja "$ROOTDIR/llvm" \
|
||||
-DCMAKE_INSTALL_PREFIX="$ROOTDIR/out/$TARGET-$MCPU" \
|
||||
-DCMAKE_PREFIX_PATH="$ROOTDIR/out/$TARGET-$MCPU" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
@@ -141,9 +153,9 @@ cmake "$ROOTDIR/llvm" \
|
||||
-DCMAKE_C_COMPILER="$ZIG;cc;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
||||
-DCMAKE_CXX_COMPILER="$ZIG;c++;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
||||
-DCMAKE_ASM_COMPILER="$ZIG;cc;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
||||
- -DCMAKE_RC_COMPILER="$ROOTDIR/out/host/bin/llvm-rc" \
|
||||
- -DCMAKE_AR="$ROOTDIR/out/host/bin/llvm-ar" \
|
||||
- -DCMAKE_RANLIB="$ROOTDIR/out/host/bin/llvm-ranlib" \
|
||||
+ -DCMAKE_RC_COMPILER="$ROOTDIR/out/build-llvm-host/bin/llvm-rc" \
|
||||
+ -DCMAKE_AR="$ROOTDIR/out/build-llvm-host/bin/llvm-ar" \
|
||||
+ -DCMAKE_RANLIB="$ROOTDIR/out/build-llvm-host/bin/llvm-ranlib" \
|
||||
-DLLVM_ENABLE_BACKTRACES=OFF \
|
||||
-DLLVM_ENABLE_BINDINGS=OFF \
|
||||
-DLLVM_ENABLE_CRASH_OVERRIDES=OFF \
|
||||
@@ -158,7 +170,7 @@ cmake "$ROOTDIR/llvm" \
|
||||
-DLLVM_ENABLE_ZLIB=FORCE_ON \
|
||||
-DLLVM_ENABLE_ZSTD=FORCE_ON \
|
||||
-DLLVM_USE_STATIC_ZSTD=ON \
|
||||
- -DLLVM_TABLEGEN="$ROOTDIR/out/host/bin/llvm-tblgen" \
|
||||
+ -DLLVM_TABLEGEN="$ROOTDIR/out/build-llvm-host/bin/llvm-tblgen" \
|
||||
-DLLVM_BUILD_UTILS=OFF \
|
||||
-DLLVM_BUILD_TOOLS=OFF \
|
||||
-DLLVM_BUILD_STATIC=ON \
|
||||
@@ -185,7 +197,7 @@ cmake "$ROOTDIR/llvm" \
|
||||
-DCLANG_TOOL_LIBCLANG_BUILD=OFF \
|
||||
-DLIBCLANG_BUILD_STATIC=ON \
|
||||
-DLLD_BUILD_TOOLS=OFF
|
||||
-cmake --build . --target install
|
||||
+ninja -j$(nproc) install
|
||||
|
||||
# Finally, we can cross compile Zig itself, with Zig.
|
||||
cd "$ROOTDIR/zig"
|
|
@ -0,0 +1,38 @@
|
|||
TERMUX_PKG_HOMEPAGE=https://ziglang.org
|
||||
TERMUX_PKG_DESCRIPTION="General-purpose programming language and toolchain"
|
||||
TERMUX_PKG_LICENSE="MIT"
|
||||
TERMUX_PKG_LICENSE_FILE="zig/LICENSE"
|
||||
TERMUX_PKG_MAINTAINER="@termux"
|
||||
TERMUX_PKG_VERSION=0.11.0
|
||||
TERMUX_PKG_SRCURL=https://github.com/ziglang/zig-bootstrap/archive/${TERMUX_PKG_VERSION}.tar.gz
|
||||
TERMUX_PKG_SHA256=046cede54ae0627c6ac98a1b3915242b35bc550ac7aaec3ec4cef6904c95019e
|
||||
TERMUX_PKG_BUILD_IN_SRC=true
|
||||
TERMUX_PKG_AUTO_UPDATE=true
|
||||
TERMUX_PKG_UPDATE_TAG_TYPE="newest-tag"
|
||||
|
||||
termux_step_pre_configure() {
|
||||
termux_setup_cmake
|
||||
termux_setup_ninja
|
||||
termux_setup_zig
|
||||
}
|
||||
|
||||
termux_step_make() {
|
||||
# zig 0.11.0+ uses 3 stages bootstrapping build system
|
||||
# which NDK cant be used anymore
|
||||
unset AS CC CFLAGS CPP CPPFLAGS CXX CXXFLAGS LD LDFLAGS
|
||||
|
||||
# zig 0.9.1 android triples never worked and uses musl
|
||||
export ZIG_TARGET_NAME="${TERMUX_ARCH}-linux-musl"
|
||||
case "${TERMUX_ARCH}" in
|
||||
arm) ZIG_TARGET_NAME="arm-linux-musleabihf" ;;
|
||||
i686) ZIG_TARGET_NAME="x86-linux-musl" ;;
|
||||
esac
|
||||
|
||||
# build.patch skipped various steps to make CI build <6 hours
|
||||
./build "${ZIG_TARGET_NAME}" baseline
|
||||
}
|
||||
|
||||
termux_step_make_install() {
|
||||
cp -fr "out/zig-${ZIG_TARGET_NAME}-baseline" "${TERMUX_PREFIX}/lib/zig"
|
||||
ln -fsv "../lib/zig/zig" "${TERMUX_PREFIX}/bin/zig"
|
||||
}
|
|
@ -1,44 +1,40 @@
|
|||
# shellcheck shell=bash disable=SC2155
|
||||
termux_setup_zig() {
|
||||
local ZIG_VERSION=0.9.1
|
||||
local ZIG_FOLDER
|
||||
|
||||
if [ "${TERMUX_PACKAGES_OFFLINE-false}" = "true" ]; then
|
||||
local ZIG_VERSION=0.11.0
|
||||
local ZIG_TXZ_URL=https://ziglang.org/download/${ZIG_VERSION}/zig-linux-x86_64-${ZIG_VERSION}.tar.xz
|
||||
local ZIG_TXZ_SHA256=2d00e789fec4f71790a6e7bf83ff91d564943c5ee843c5fd966efc474b423047
|
||||
local ZIG_TXZ_FILE=${TERMUX_PKG_TMPDIR}/zig-${ZIG_VERSION}.tar.xz
|
||||
local ZIG_FOLDER=${TERMUX_COMMON_CACHEDIR}/zig-${ZIG_VERSION}
|
||||
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
|
||||
local ZIG_PKG_VERSION=$(. "${TERMUX_SCRIPTDIR}/packages/zig/build.sh"; echo ${TERMUX_PKG_VERSION})
|
||||
|
||||
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" \
|
||||
be8da632c1d3273f766b69244d80669fe4f5e27798654681d77c992f17c237d7
|
||||
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
|
||||
if [[ "${TERMUX_ON_DEVICE_BUILD}" == "true" ]]; then
|
||||
if [[ "$(cat "${TERMUX_BUILT_PACKAGES_DIRECTORY}/zig" 2>/dev/null)" != "${ZIG_PKG_VERSION}" && -z "$(command -v zig)" ]]; then
|
||||
cat <<- EOL
|
||||
Package 'zig' is not installed.
|
||||
You can install it with
|
||||
|
||||
pkg install zig
|
||||
|
||||
or build it from source with
|
||||
|
||||
./build-package.sh zig
|
||||
EOL
|
||||
exit 1
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
if [ $TERMUX_ARCH = "i686" ]; then
|
||||
ZIG_TARGET_NAME=i386-linux-android
|
||||
else
|
||||
ZIG_TARGET_NAME=$TERMUX_ARCH-linux-android
|
||||
if [[ ! -x "${ZIG_FOLDER}/zig" ]]; then
|
||||
mkdir -p "${ZIG_FOLDER}"
|
||||
termux_download "${ZIG_TXZ_URL}" "${ZIG_TXZ_FILE}" "${ZIG_TXZ_SHA256}"
|
||||
tar -xf "${ZIG_TXZ_FILE}" -C "${ZIG_FOLDER}" --strip-components=1
|
||||
fi
|
||||
|
||||
export PATH="${ZIG_FOLDER}:${PATH}"
|
||||
if [[ -z "$(command -v zig)" ]]; then
|
||||
termux_error_exit "termux_setup_zig: No zig executable found!"
|
||||
fi
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue