quinn-os/make_toolchain.sh
2023-05-09 19:09:34 +10:00

122 lines
2.4 KiB
Bash
Executable File

#!/bin/bash -e
if [ -e $HOME/Quinn ]
then
echo "${HOME}/Quinn exists!"
exit
fi
mkdir $HOME/Quinn
mkdir $HOME/Quinn/tools
mkdir $HOME/Quinn/sysroot
mkdir $HOME/Quinn/cross
mkdir $HOME/Quinn/src
cd $HOME/Quinn/tools
echo "Fetching Tools"
wget ftp://sourceware.org/pub/newlib/newlib-4.1.0.tar.gz
wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.40.tar.xz
wget ftp://ftp.gnu.org/gnu/gcc/gcc-13.1.0/gcc-13.1.0.tar.xz
echo "Fetching Quinn"
cd $HOME/Quinn/src
git clone https://gitlab.com/apamment/quinn-os
cd $HOME/Quinn/tools
echo "Building Tools"
tar xf binutils-2.40.tar.xz
mkdir binutils-build
cd binutils-build
../binutils-2.40/configure --target=i686-elf --prefix=$HOME/Quinn/cross --with-sysroot --disable-nls --disable-werror
make
make install
cd ..
export PATH=$HOME/Quinn/cross/bin:$PATH
tar xf gcc-13.1.0.tar.xz
cd gcc-13.1.0
contrib/download_prerequisites
cd ..
mkdir gcc-build
cd gcc-build
../gcc-13.1.0/configure --target=i686-elf --prefix=$HOME/Quinn/cross --disable-nls --enable-languages=c,c++ --without-headers
make all-gcc
make install-gcc
make all-target-libgcc
make install-target-libgcc
cd ..
rm -rf binutils-build
rm -rf gcc-build
echo "Building Quinn Tools"
tar xf newlib-4.1.0.tar.gz
cd newlib-4.1.0
patch -p1 < $HOME/Quinn/src/quinn-os/newlib-4.1.0.diff
cd ..
mkdir $HOME/Quinn/sysroot/usr
cp -r newlib-4.1.0/newlib/libc/include $HOME/Quinn/sysroot/usr
cd binutils-2.40
patch -p1 < $HOME/Quinn/src/quinn-os/binutils-2.40.diff
cd ..
mkdir binutils-build
cd binutils-build
../binutils-2.40/configure --target=i686-quinn --prefix=$HOME/Quinn/cross --with-sysroot=$HOME/Quinn/sysroot --disable-nls --disable-werror
make
make install
cd ..
rm -rf binutils-build
cd gcc-13.1.0
patch -p1 < $HOME/Quinn/src/quinn-os/gcc-13.1.0.diff
cd ..
mkdir gcc-build
cd gcc-build
../gcc-13.1.0/configure --target=i686-quinn --prefix=$HOME/Quinn/cross --disable-nls --enable-languages=c,c++ --with-sysroot=$HOME/Quinn/sysroot --with-newlib
make all-gcc
make install-gcc
make all-target-libgcc
make install-target-libgcc
cd ..
mkdir newlib-build
cd newlib-build
../newlib-4.1.0/configure --prefix=/usr --target=i686-quinn
make
make DESTDIR=$HOME/Quinn/sysroot install
cd ..
rm -rf newlib-build
cp -r $HOME/Quinn/sysroot/usr/i686-quinn/* $HOME/Quinn/sysroot/usr
cd gcc-build
make all-target-libstdc++-v3
make install-target-libstdc++-v3
cd ..
rm -rf gcc-build
echo "DONE!"