Update script to build aarch64-linux

This commit is contained in:
Eric Van Albert
2025-11-27 14:25:08 -05:00
parent ff50d23d65
commit a6e168594d
2 changed files with 46 additions and 19 deletions
+44 -17
View File
@@ -3,8 +3,38 @@ set -euo pipefail
# Usage: TARGET=x86_64-pc-windows-gnu ./generate-rustflags.sh
# Set linkers for cross-compilation targets using clang
case "$TARGET" in
x86_64-unknown-linux-gnu)
OS=LINUX
EXE=radiance
STRIP=strip
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER="gcc"
;;
aarch64-unknown-linux-gnu)
OS=LINUX
EXE=radiance
STRIP=aarch64-linux-gnu-strip
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER="aarch64-linux-gnu-gcc"
;;
x86_64-pc-windows-gnu)
OS=WINDOWS
EXE=radiance.exe
STRIP=x86_64-w64-mingw32-strip
;;
*)
echo "Unknown TARGET" >&2
exit 1
;;
esac
LIBMPV_STATIC_BUILD="$(cd "../libmpv-static-build" && pwd)"
# Set PKG_CONFIG_PATH based on target
export PKG_CONFIG_PATH="../libmpv-static-build/${TARGET}/output/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${LIBMPV_STATIC_BUILD}/${TARGET}/output/lib/pkgconfig"
export PKG_CONFIG_PATH="$PKG_CONFIG_LIBDIR"
export PKG_CONFIG_ALLOW_CROSS=1
# Get all the static library dependencies
LIBS=$(pkg-config --static --libs mpv)
@@ -23,8 +53,8 @@ for flag in $LIBS; do
done
# Platform-specific linking
case "$TARGET" in
x86_64-pc-windows-gnu)
case "$OS" in
WINDOWS)
RUSTFLAGS="$RUSTFLAGS -C link-arg=-Wl,--allow-multiple-definition"
# Wrap all static libraries in a group to resolve circular dependencies
RUSTFLAGS="$RUSTFLAGS -C link-arg=-Wl,-Bstatic"
@@ -49,22 +79,18 @@ case "$TARGET" in
RUSTFLAGS="$RUSTFLAGS -C link-arg=-ladvapi32"
RUSTFLAGS="$RUSTFLAGS -C link-arg=-lshell32"
RUSTFLAGS="$RUSTFLAGS -C link-arg=-lole32"
export RUSTFLAGS
echo "Generated RUSTFLAGS: $RUSTFLAGS"
cargo build --release --target "$TARGET"
x86_64-w64-mingw32-strip "target/${TARGET}/release/radiance.exe"
;;
x86_64-unknown-linux-gnu)
LINUX)
RUSTFLAGS="$RUSTFLAGS -C link-arg=-Wl,-Bstatic"
RUSTFLAGS="$RUSTFLAGS -C link-arg=-lstdc++"
RUSTFLAGS="$RUSTFLAGS -C link-arg=-lgcc"
RUSTFLAGS="$RUSTFLAGS -C link-arg=-Wl,-Bdynamic"
# Populate /tmp/native-lib-pc with fake pkg-config files so we only dynamically link the things we want to
rm -rf /tmp/native-lib-pc/
mkdir -p /tmp/native-lib-pc/
# Skip linker flags for mpv since we need more fine-grained control over it
cat <<EOF >/tmp/native-lib-pc/mpv.pc
Name: mpv
Description: placeholder
@@ -89,16 +115,17 @@ Cflags:
Libs: -lasound
EOF
export RUSTFLAGS
echo "Generated RUSTFLAGS: $RUSTFLAGS"
PKG_CONFIG_LIBDIR="/tmp/native-lib-pc/" \
PKG_CONFIG_PATH="/tmp/native-lib-pc/" \
cargo build --release --target "$TARGET"
strip "target/${TARGET}/release/radiance"
#PKG_CONFIG_LIBDIR="/tmp/native-lib-pc/" \
#PKG_CONFIG_PATH="/tmp/native-lib-pc/" \
;;
*)
echo "Unknown target: $TARGET" >&2
exit 1
;;
esac
export RUSTFLAGS
echo "Generated RUSTFLAGS: $RUSTFLAGS"
cargo build --release --target "$TARGET"
$STRIP "target/${TARGET}/release/${EXE}"