|
| 1 | +TERMUX_PKG_HOMEPAGE=https://turbo.build/ |
| 2 | +TERMUX_PKG_DESCRIPTION="Rust-based incremental compilation engine and bundler for Next.js" |
| 3 | +TERMUX_PKG_MAINTAINER="@xingguangcuican6666" |
| 4 | +TERMUX_PKG_LICENSE="MIT" |
| 5 | +TERMUX_PKG_VERSION=canary |
| 6 | +TERMUX_PKG_SRCURL=https://github.com/vercel/next.js/archive/dfbc3dc6b7b395956bf47e92e04aa957cbfcc9a2.zip |
| 7 | +TERMUX_PKG_SHA256=b736c7537d161c31ac679fa3ca6aa603fc9636df3ef39e0a4021e4080ca52a1e |
| 8 | +TERMUX_PKG_BUILD_IN_SRC=true |
| 9 | +TERMUX_RUST_VERSION="nightly" |
| 10 | +TERMUX_PKG_EXCLUDED_ARCHES="arm, i686" |
| 11 | +export ANDROID_NDK_ROOT="${NDK}" # Set NDK root globally |
| 12 | + |
| 13 | +termux_step_make() { |
| 14 | + local RUST_TARGET |
| 15 | + case "$TERMUX_ARCH" in |
| 16 | + aarch64) RUST_TARGET="aarch64-linux-android" ;; |
| 17 | + x86_64) RUST_TARGET="x86_64-linux-android" ;; |
| 18 | + esac |
| 19 | + termux_setup_rust |
| 20 | + termux_setup_nodejs |
| 21 | + export RUSTFLAGS="--cfg tokio_unstable" |
| 22 | + local ENV_PREFIX=$(echo "$RUST_TARGET" | tr '[:lower:]-' '[:upper:]_') |
| 23 | + if [ "$TERMUX_ARCH" == "aarch64" ]; then |
| 24 | + export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$(uname -m)-linux/bin/aarch64-linux-android24-clang" |
| 25 | + export CARGO_TARGET_AARCH64_LINUX_ANDROID_AR="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$(uname -m)-linux/bin/llvm-ar" |
| 26 | + export RUSTFLAGS="$RUSTFLAGS -Zshare-generics=y -Csymbol-mangling-version=v0 -Clink-arg=--sysroot=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$(uname -m)-linux/sysroot" |
| 27 | + npm i -g "@napi-rs/cli@2.18.4" # Hardcoded NAPI_CLI_VERSION from workflow |
| 28 | + else |
| 29 | + export "CARGO_TARGET_${ENV_PREFIX}_LINKER"="$CC" |
| 30 | + export "CC_${RUST_TARGET//-/_}"="$CC" |
| 31 | + fi |
| 32 | + npx pnpm install |
| 33 | + cd packages/next-swc |
| 34 | + # export RUSTFLAGS="-C stack-check=no -C link-args=-zstack-size=2097152" |
| 35 | + export RUSTFLAGS="$RUSTFLAGS -C link-args=-zstack-size=2097152" |
| 36 | + npx pnpm run build-native-release --target "$RUST_TARGET" |
| 37 | +} |
| 38 | + |
| 39 | +termux_step_make_install() { |
| 40 | + cd packages/next-swc |
| 41 | + ls -l native |
| 42 | + local NAPI_ARCH |
| 43 | + case "$TERMUX_ARCH" in |
| 44 | + aarch64) NAPI_ARCH="arm64" ;; |
| 45 | + x86_64) NAPI_ARCH="x64" ;; |
| 46 | + esac |
| 47 | + local PACKAGE_NAME="@next/swc-android-${NAPI_ARCH}" |
| 48 | + local INSTALL_DIR="$TERMUX_PREFIX/lib/node_modules/${PACKAGE_NAME}" |
| 49 | + local BINARY_NAME="next-swc.android-${NAPI_ARCH}.node" |
| 50 | + mkdir -p "$INSTALL_DIR" |
| 51 | + install -Dm755 "native/${BINARY_NAME}" "$INSTALL_DIR/${BINARY_NAME}" |
| 52 | + ${STRIP} --strip-unneeded "$INSTALL_DIR/${BINARY_NAME}" |
| 53 | + cat > "$INSTALL_DIR/package.json" <<EOF |
| 54 | +{ |
| 55 | + "name": "${PACKAGE_NAME}", |
| 56 | + "version": "$TERMUX_PKG_VERSION", |
| 57 | + "os": ["android"], |
| 58 | + "cpu": ["${NAPI_ARCH}"], |
| 59 | + "main": "${BINARY_NAME}" |
| 60 | +} |
| 61 | +EOF |
| 62 | +} |
0 commit comments