mirror of
https://github.com/bryanthaboi/gen1recomp
synced 2026-09-26 13:33:27 -04:00
104 lines
3.7 KiB
Bash
Executable File
104 lines
3.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
cmd_env() {
|
|
fingerprint="$RUNNER_TEMP/bridge-environment.txt"
|
|
printf '%s\n' "${ImageOS:-}" "${ImageVersion:-}" > "$fingerprint"
|
|
if [ "$PLAT" = android ]; then
|
|
ndk_ver="$(sed -n "s/^[[:space:]]*ndkVersion[[:space:]]*['\"]\([0-9.]*\)['\"].*/\1/p" mobile/android/app/build.gradle)"
|
|
test -n "$ndk_ver"
|
|
sdk="${ANDROID_SDK_ROOT:-${ANDROID_HOME:-}}"
|
|
test -n "$sdk"
|
|
ndk="$sdk/ndk/$ndk_ver"
|
|
if [ ! -f "$ndk/source.properties" ]; then
|
|
(yes || true) | "$sdk/cmdline-tools/latest/bin/sdkmanager" --install "ndk;$ndk_ver" >/dev/null
|
|
fi
|
|
test -f "$ndk/source.properties"
|
|
grep -Eq "^Pkg\.Revision[[:space:]]*=[[:space:]]*$ndk_ver\$" "$ndk/source.properties"
|
|
cat "$ndk/source.properties" >> "$fingerprint"
|
|
echo "ANDROID_NDK_HOME=$ndk" >> "$GITHUB_ENV"
|
|
echo "ANDROID_NDK_ROOT=$ndk" >> "$GITHUB_ENV"
|
|
fi
|
|
if command -v sha256sum >/dev/null 2>&1; then
|
|
hash="$(sha256sum "$fingerprint")"
|
|
else
|
|
hash="$(shasum -a 256 "$fingerprint")"
|
|
fi
|
|
echo "hash=${hash%% *}" >> "$GITHUB_OUTPUT"
|
|
}
|
|
|
|
cmd_build() {
|
|
out="dist/native/$PLAT"
|
|
mkdir -p "$out"
|
|
cd tools/shaderfx-bridge
|
|
case "$PLAT" in
|
|
win-x64)
|
|
rustup target add x86_64-pc-windows-msvc
|
|
cargo build --locked --release --target x86_64-pc-windows-msvc
|
|
cp "target/x86_64-pc-windows-msvc/release/$LIB" "$GITHUB_WORKSPACE/$out/$LIB"
|
|
;;
|
|
mac)
|
|
rustup target add x86_64-apple-darwin aarch64-apple-darwin
|
|
cargo build --locked --release --target x86_64-apple-darwin
|
|
cargo build --locked --release --target aarch64-apple-darwin
|
|
lipo -create -output "$GITHUB_WORKSPACE/$out/$LIB" \
|
|
"target/x86_64-apple-darwin/release/$LIB" \
|
|
"target/aarch64-apple-darwin/release/$LIB"
|
|
lipo -info "$GITHUB_WORKSPACE/$out/$LIB"
|
|
;;
|
|
ios)
|
|
rustup target add aarch64-apple-ios
|
|
IPHONEOS_DEPLOYMENT_TARGET=15.0 cargo build --locked --release --target aarch64-apple-ios
|
|
cp "target/aarch64-apple-ios/release/$LIB" "$GITHUB_WORKSPACE/$out/$LIB"
|
|
;;
|
|
linux-x64|linux-arm64)
|
|
pipx install 'cargo-zigbuild==0.23.4'
|
|
pipx inject cargo-zigbuild 'ziglang==0.16.0'
|
|
zigpy="$(pipx environment --value PIPX_LOCAL_VENVS)/cargo-zigbuild/bin/python"
|
|
"$zigpy" -m ziglang version
|
|
export CARGO_ZIGBUILD_PYTHON_PATH="$zigpy"
|
|
triple="$GLIBC_TRIPLE"
|
|
rustup target add "${triple%%.*}"
|
|
cargo zigbuild --locked --release --target "$triple"
|
|
cp "target/${triple%%.*}/release/$LIB" "$GITHUB_WORKSPACE/$out/$LIB"
|
|
;;
|
|
android)
|
|
rustup target add aarch64-linux-android armv7-linux-androideabi
|
|
cargo install cargo-ndk --version 4.1.2 --locked
|
|
export CARGO_PROFILE_RELEASE_STRIP=symbols
|
|
cargo ndk -t arm64-v8a -t armeabi-v7a \
|
|
-o "$GITHUB_WORKSPACE/$out" build --locked --release
|
|
for abi in arm64-v8a armeabi-v7a; do
|
|
test -f "$GITHUB_WORKSPACE/$out/$abi/$LIB" \
|
|
|| { echo "::error::no Android bridge for $abi"; exit 1; }
|
|
done
|
|
;;
|
|
esac
|
|
}
|
|
|
|
cmd_verify() {
|
|
if [ "$PLAT" = android ]; then
|
|
for abi in arm64-v8a armeabi-v7a; do
|
|
test -s "dist/native/$PLAT/$abi/$LIB"
|
|
case "$abi" in
|
|
arm64-v8a) triple=aarch64-linux-android ;;
|
|
armeabi-v7a) triple=arm-linux-androideabi ;;
|
|
esac
|
|
libcxx="$(ls "$ANDROID_NDK_HOME"/toolchains/llvm/prebuilt/*/sysroot/usr/lib/"$triple"/libc++_shared.so)"
|
|
bash scripts/android_bridge_link_check.sh "dist/native/$PLAT/$abi/$LIB" "$libcxx"
|
|
done
|
|
else
|
|
test -s "dist/native/$PLAT/$LIB"
|
|
fi
|
|
if [ "$PLAT" = mac ]; then
|
|
lipo "dist/native/$PLAT/$LIB" -verify_arch x86_64 arm64
|
|
fi
|
|
}
|
|
|
|
case "${1:-}" in
|
|
env) cmd_env ;;
|
|
build) cmd_build ;;
|
|
verify) cmd_verify ;;
|
|
*) echo "usage: $0 env|build|verify" >&2; exit 2 ;;
|
|
esac
|