#!/bin/bash set -euxo pipefail if [ -z "$FICUS_ROOT" ]; then echo "$FICUS_ROOT" is blank fi mkdir -p $FICUS_ROOT/toolchain || exit 1 pushd $FICUS_ROOT/toolchain mkdir -p gcc-i686-elf pushd gcc-i686-elf if [ ! -d gcc-13.2.0 ]; then wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz tar xf gcc-13.2.0.tar.xz rm gcc-13.2.0.tar.xz fi cd gcc-13.2.0 SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) patch -p1 -u -i "$SCRIPT_DIR/p1.patch" patch -p1 -u -i "$SCRIPT_DIR/p2.patch" cd .. mkdir -p build pushd build export PREFIX="$FICUS_ROOT/toolchain/gcc-i686-elf-prefix/" export TARGET=i686-elf export PATH="$PREFIX/bin:$PATH" if [ ! -f "$FICUS_ROOT/toolchain/gcc-i686-elf-prefix/bin/i686-elf-as" ]; then echo "binutils not found" exit 1 fi HOMEBREW_LIBS="--with-gmp=/opt/homebrew --with-mpc=/opt/homebrew --with-mpfr=/opt/homebrew" ADDONS="" if [ ! -z ${USE_BREW_LIBS+x} ]; then ADDONS="$HOMEBREW_LIBS $ADDONS" fi pushd ../gcc-13.2.0/ ./contrib/download_prerequisites popd ../gcc-13.2.0/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --with-newlib --without-headers --enable-version-specific-runtime-libs $ADDONS make -j$(nproc) all-gcc make -j$(nproc) all-target-libgcc make install-gcc make install-target-libgcc touch -m ../done