#!/usr/bin/env bash # Monta em artifacts/tools/devkitpro-compat o que o Butano (GBA, C++) precisa no lugar do devkitPro, que # nao da para instalar aqui (pkg.devkitpro.org bloqueia download e o instalador escreve em /opt): # devkitARM/ GCC arm-none-eabi 14.3.rel1 (Arm GNU Toolchain, tarball oficial) + as regras base_rules, # base_tools e gba_rules (devkitarm-rules, 51d6f3a) + gba.specs, gba_cart.ld e gba_crt0.o # (devkitarm-crtls, 1c0c102; MPL-2.0 para o crt0, que entra em toda ROM) # tools/bin/ grit e mmutil (blocksds, MIT/zlib; so convertem arquivos), gbafix (gba-tools 054d507, # LGPL; so corrige o cabecalho da ROM) e bin2s (general-tools 4608660, MIT) # Todos os pacotes sao baixados com sha256 conferido. Usado por build-cat-fish.sh; imprime nada (so cria). # # src/FredGames.Bundler/Builds/gba-butano-toolchain.sh set -euo pipefail here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" cache="$root/artifacts/build/cache" dkp="$root/artifacts/tools/devkitpro-compat" mkdir -p "$cache" fetch() { [ -f "$2" ] || curl -fsSL --retry 4 "$1" -o "$2"; echo "$3 $2" | shasum -a 256 -c - >/dev/null; } ARM=arm-gnu-toolchain-14.3.rel1-darwin-arm64-arm-none-eabi fetch "https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/14.3.rel1/binrel/$ARM.tar.xz" "$cache/$ARM.tar.xz" 30f4d08b219190a37cded6aa796f4549504902c53cfc3c7e044a8490b6eba1f7 fetch "https://github.com/devkitPro/devkitarm-rules/archive/51d6f3a928e1c6486afaea114e28093c025feeeb.tar.gz" "$cache/devkitarm-rules-51d6f3a.tar.gz" 1cece4058c6583a2e780ad4ff6f038945f081f69766c512d9f19a2cf6baf2013 fetch "https://github.com/devkitPro/devkitarm-crtls/archive/1c0c10257c44bbb5a433453bb6bba91582825492.tar.gz" "$cache/devkitarm-crtls-1c0c102.tar.gz" 5729f1421496a37c4a26bee2f0484284c95569c56e082230839ef47a55104e1d fetch "https://github.com/devkitPro/gba-tools/archive/054d507f90d32784274b6cf7e03f1c43d02d7a57.tar.gz" "$cache/gba-tools-054d507.tar.gz" cd9218f17c2b803c419645d5c33d53edd256addf0c35d9ac419d875df931dc7b fetch "https://github.com/devkitPro/general-tools/archive/46086605cdc63fb02ba0ed08cdc00801ba00c6f0.tar.gz" "$cache/general-tools-4608660.tar.gz" 4f7ed57ea5be9ffb8f4807ebb558122675fd1cd38b30d111efe2b23121911dde fetch "https://github.com/blocksds/grit/archive/8820a3228c71302244574961d365265a080b501f.tar.gz" "$cache/blocksds-grit-8820a32.tar.gz" 399ae8617fa94f811aa20d995a7b1efb096d29a2ab8fa4ea16d98f9ae97021dc fetch "https://github.com/blocksds/mmutil/archive/eedbb4a6f770cce7a83e5701a939298220c524ce.tar.gz" "$cache/blocksds-mmutil-eedbb4a.tar.gz" 79951403663a46d216fe6ee80fd5102fc1bc596777074a7d968143a8af47fc4f [ -x "$dkp/tools/bin/mmutil" ] && [ -f "$dkp/devkitARM/arm-none-eabi/lib/gba_crt0.o" ] && exit 0 rm -rf "$dkp" "$dkp.src" mkdir -p "$dkp/devkitARM" "$dkp/tools/bin" "$dkp.src"/{rules,crtls,gt,gtool,grit,mmutil} tar -xJf "$cache/$ARM.tar.xz" -C "$dkp/devkitARM" --strip-components 1 tar -xzf "$cache/devkitarm-rules-51d6f3a.tar.gz" -C "$dkp.src/rules" --strip-components 1 tar -xzf "$cache/devkitarm-crtls-1c0c102.tar.gz" -C "$dkp.src/crtls" --strip-components 1 tar -xzf "$cache/gba-tools-054d507.tar.gz" -C "$dkp.src/gt" --strip-components 1 tar -xzf "$cache/general-tools-4608660.tar.gz" -C "$dkp.src/gtool" --strip-components 1 tar -xzf "$cache/blocksds-grit-8820a32.tar.gz" -C "$dkp.src/grit" --strip-components 1 tar -xzf "$cache/blocksds-mmutil-eedbb4a.tar.gz" -C "$dkp.src/mmutil" --strip-components 1 cp "$dkp.src/rules/"{base_rules,base_tools,gba_rules} "$dkp/devkitARM/" lib="$dkp/devkitARM/arm-none-eabi/lib" ( export DEVKITPRO="$dkp" DEVKITARM="$dkp/devkitARM" PATH="$dkp/devkitARM/bin:$PATH" cd "$dkp.src/crtls" make DEPSDIR=. thumb gba_crt0.o thumb/gba_crt0.o er_crt0.o thumb/er_crt0.o >/dev/null cp gba.specs gba_mb.specs gba_er.specs gba_cart.ld gba_mb.ld gba_er.ld gba_crt0.o er_crt0.o "$lib/" mkdir -p "$lib/thumb" cp thumb/gba_crt0.o thumb/er_crt0.o "$lib/thumb/" ) cc -O2 -w -o "$dkp/tools/bin/gbafix" "$dkp.src/gt/src/gbafix.c" cc -O2 -w -DPACKAGE_STRING='"general-tools 4608660"' -o "$dkp/tools/bin/bin2s" "$dkp.src/gtool/bin2s.c" make -C "$dkp.src/grit" -j8 VERSION_STRING=blocksds-8820a32 >/dev/null 2>&1 make -C "$dkp.src/mmutil" -j8 VERSION_STRING=blocksds-eedbb4a >/dev/null 2>&1 cp "$dkp.src/grit/grit" "$dkp.src/mmutil/mmutil" "$dkp/tools/bin/" rm -rf "$dkp.src"