#!/usr/bin/env bash # Instala o GCC cruzado m68k-elf (binutils 2.43.1 + GCC 14.2.0, so C, sem libc: o SGDK traz a propria) em # artifacts/tools/m68k-elf-gcc-14.2.0, para compilar jogos de Mega Drive com o SGDK (Builds/sgdk/env.sh). # Precisa de gmp, mpfr, libmpc e isl do Homebrew. Leva uns 15 minutos. set -euo pipefail here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel)" PREFIX="$root/artifacts/tools/m68k-elf-gcc-14.2.0" [ -x "$PREFIX/bin/m68k-elf-gcc" ] && exit 0 work="$root/artifacts/build/m68k-elf-gcc"; mkdir -p "$work"; cd "$work" BU=binutils-2.43.1; BU_SHA=13f74202a3c4c51118b797a39ea4200d3f6cfbe224da6d1d95bb938480132dfd GCC=gcc-14.2.0; GCC_SHA=a7b39bc69cbf9e25826c5a60ab26477001f7c08d85cec04bc0e29cabed6f3cc9 [ -f $BU.tar.xz ] || curl -fsSL https://ftp.gnu.org/gnu/binutils/$BU.tar.xz -o $BU.tar.xz [ -f $GCC.tar.xz ] || curl -fsSL https://ftp.gnu.org/gnu/gcc/$GCC/$GCC.tar.xz -o $GCC.tar.xz echo "$BU_SHA $BU.tar.xz" | shasum -a 256 -c - >/dev/null echo "$GCC_SHA $GCC.tar.xz" | shasum -a 256 -c - >/dev/null rm -rf $BU $GCC b-bu b-gcc; tar -xf $BU.tar.xz; tar -xf $GCC.tar.xz mkdir b-bu && (cd b-bu && ../$BU/configure --target=m68k-elf --prefix="$PREFIX" --disable-nls --disable-werror --disable-gdb --disable-sim --with-system-zlib && make -j8 MAKEINFO=true && make install MAKEINFO=true) B=/opt/homebrew mkdir b-gcc && (cd b-gcc && PATH="$PREFIX/bin:$PATH" ../$GCC/configure --target=m68k-elf --prefix="$PREFIX" --enable-languages=c \ --disable-nls --disable-libssp --disable-threads --disable-shared --disable-multilib --with-cpu=m68000 --without-headers --with-newlib --with-system-zlib \ --with-gmp=$B/opt/gmp --with-mpfr=$B/opt/mpfr --with-mpc=$B/opt/libmpc --with-isl=$B/opt/isl \ && PATH="$PREFIX/bin:$PATH" make -j8 MAKEINFO=true all-gcc all-target-libgcc && make MAKEINFO=true install-gcc install-target-libgcc) rm -rf $BU $GCC b-bu b-gcc "$PREFIX/bin/m68k-elf-gcc" --version | head -1