#!/usr/bin/env bash # Compila Lane (homebrew de Game Boy Advance de Corwin Kuiper, GBA Jam 2022; MPL-2.0, feito com o agb 0.20.0, # tambem MPL-2.0) do commit 3ea589f do repositorio corwinkuiper/lane. O repositorio nao traz ROM. Usa o Rust # nightly de 2024-05-15 (rustup em artifacts/tools; o agb 0.20 e de 2024-05-14) e o agb-gbafix 0.20.0. # Mudanca nossa (Builds/lane/share-tech-mono-font.patch): a fonte VCR OSD Mono (sem licenca registrada) vira a # Share Tech Mono (OFL-1.1, google/fonts no commit 8c3ea24). # # src/FredGames.Bundler/Builds/build-lane.sh # # Saida: artifacts/build/lane-3ea589f/lane.gba set -euo pipefail COMMIT=3ea589f83abefdcc3ab96493b16c90e98ac63d8a SHA256=6e4486350f0f1c5280e1b1a272ee177e130fb25c649fe3ca60e2a8dced73bd91 TOOLCHAIN=nightly-2024-05-15 GFONTS=8c3ea249848f15b7ff6092b3e16d44ef91771cad STM_TTF_SHA256=9ceab1f87414829af259c0f537573ae03ef7dd3147c0b27a36a1a0beb6732677 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/lane-${COMMIT:0:7}" cache="$root/artifacts/build/cache" export RUSTUP_HOME="$root/artifacts/tools/rustup" export CARGO_HOME="$root/artifacts/tools/cargo" export PATH="$CARGO_HOME/bin:$PATH" if [ ! -x "$CARGO_HOME/bin/rustup" ]; then curl -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal --default-toolchain none fi rustup toolchain install "$TOOLCHAIN" --profile minimal --component rust-src >/dev/null gbafix="$root/artifacts/tools/agb-gbafix-0.20.0/bin/agb-gbafix" if [ ! -x "$gbafix" ]; then RUSTUP_TOOLCHAIN=1.92.0 cargo install agb-gbafix --version 0.20.0 --locked --root "$root/artifacts/tools/agb-gbafix-0.20.0" fi export RUSTUP_TOOLCHAIN="$TOOLCHAIN" mkdir -p "$cache" fetch() { [ -f "$2" ] || curl -fsSL --retry 4 "$1" -o "$2"; echo "$3 $2" | shasum -a 256 -c -; } fetch "https://github.com/corwinkuiper/lane/archive/$COMMIT.tar.gz" "$cache/lane-3ea589f.tar.gz" "$SHA256" fetch "https://raw.githubusercontent.com/google/fonts/$GFONTS/ofl/sharetechmono/ShareTechMono-Regular.ttf" "$cache/stm-ShareTechMono-Regular.ttf" "$STM_TTF_SHA256" rm -rf "$out" && mkdir -p "$out/tree" tar -xzf "$cache/lane-3ea589f.tar.gz" -C "$out/tree" --strip-components 1 cd "$out/tree" patch -p1 --quiet < "$here/lane/share-tech-mono-font.patch" cd lane_gba rm fnt/VCR_OSD_MONO_1.001.ttf cp "$cache/stm-ShareTechMono-Regular.ttf" fnt/ShareTechMono-Regular.ttf export CARGO_TARGET_DIR="$out/target" remap="--remap-path-prefix=$out/tree=lane --remap-path-prefix=$CARGO_HOME=cargo --remap-path-prefix=$RUSTUP_HOME=rustup" sep=$'\x1f' export CARGO_ENCODED_RUSTFLAGS="-Clink-arg=-Tgba.ld${sep}-Ctarget-cpu=arm7tdmi${sep}${remap// /$sep}" cargo build --release --locked >"$out/cargo.log" 2>&1 || { tail -30 "$out/cargo.log"; exit 1; } "$gbafix" --title LANE --gamecode LANE --makercode GC "$CARGO_TARGET_DIR/thumbv4t-none-eabi/release/lane" -o "$out/lane.gba" shasum -a 256 "$out/lane.gba"