#!/bin/bash set -e DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" echo $DIR ARCH="x86_64" TARGET="$ARCH-pc-acadia" TOOLCHAIN="$DIR/../toolchain" PREFIX="$TOOLCHAIN/local" BUILD="$DIR/../builddbg" SYSROOT="$DIR/../sysroot" BINUTILS_VERSION="2.40" BINUTILS_NAME="binutils-$BINUTILS_VERSION" BINUTILS_PKG="${BINUTILS_NAME}.tar.xz" BINUTILS_BASE_URL="https://ftp.gnu.org/gnu/binutils" NEWLIB_VERSION="4.1.0" NEWLIB_NAME="newlib-$NEWLIB_VERSION" NEWLIB_PKG="${NEWLIB_NAME}.tar.gz" NEWLIB_BASE_URL="ftp://sourceware.org/pub/newlib" GCC_VERSION="13.1.0" GCC_NAME="gcc-$GCC_VERSION" GCC_PKG="${GCC_NAME}.tar.xz" GCC_BASE_URL="https://ftp.gnu.org/gnu/gcc" mkdir -p "$TOOLCHAIN/srcs" pushd "$TOOLCHAIN/srcs" # TODO: Check md5sum if [ ! -e "$BINUTILS_PKG" ]; then curl -LO "$BINUTILS_BASE_URL/$BINUTILS_PKG" fi if [ ! -d "$BINUTILS_NAME" ]; then tar -xJf ${BINUTILS_PKG} pushd $BINUTILS_NAME patch -p1 <$TOOLCHAIN/patches/binutils/00-first.patch popd fi if [ ! -e $NEWLIB_PKG ]; then curl -LO $NEWLIB_BASE_URL/$NEWLIB_PKG fi if [ ! -d $NEWLIB_NAME ]; then tar -xzf $NEWLIB_PKG fi if [ ! -e "$GCC_PKG" ]; then curl -LO "$GCC_BASE_URL/$GCC_NAME/$GCC_PKG" fi if [ ! -d "$GCC_NAME" ]; then tar -xJf $GCC_PKG pushd $GCC_NAME patch -p1 <$TOOLCHAIN/patches/gcc/00-first.patch popd fi popd mkdir -p "$TOOLCHAIN/build" pushd "$TOOLCHAIN/build" # rm -rf binutils if [ ! -d binutils ]; then mkdir -p binutils pushd binutils # skip building documentation export ac_cv_prog_MAKEINFO=true "$TOOLCHAIN"/srcs/$BINUTILS_NAME/configure \ --prefix=$PREFIX \ --target="$TARGET" \ --with-sysroot="$SYSROOT" \ --enable-shared \ --disable-nls make MAKEINFO=true -j 8 make install MAKEINFO=true -j 8 popd fi # rm -rf newlib if [ ! -d newlib ]; then mkdir -p newlib pushd newlib $TOOLCHAIN/srcs/$NEWLIB_NAME/configure \ --prefix=$SYSROOT/usr \ --target=x86_64-elf \ --with-sysroot=$SYSROOT make -j 8 make -j 8 install popd fi rm -rf gcc mkdir -p gcc pushd gcc $TOOLCHAIN/srcs/$GCC_NAME/configure \ --prefix=$PREFIX \ --target=$TARGET \ --with-sysroot=$SYSROOT \ --disable-nls \ --enable-languages=c,c++ make -j 8 all-gcc make -j 8 all-target-libgcc make -j 8 install-gcc install-target-libgcc popd popd