From cc9a1811fd93971ae8c0d3bdc8d60102ce58556e Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Wed, 31 Jul 2024 19:53:02 -0400 Subject: redo build system --- setup.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 setup.sh (limited to 'setup.sh') diff --git a/setup.sh b/setup.sh new file mode 100644 index 0000000..bb20c18 --- /dev/null +++ b/setup.sh @@ -0,0 +1,76 @@ +#!/bin/sh + +LIMINE_TAG=v7.5.1 +MINTSUKI_HEADERS_COMMIT=dd3abd2d7147efc4170dff478d3b7730bed14147 +BINUTILS_TAG=binutils-2_42 +GCC_TAG=releases/gcc-14.1.0 + +PROJECT_ROOT="$(pwd)" + +if [ -e .setup-complete ]; then + echo setup has already completed. refusing to run again. + echo to run again anyway, delete .setup-complete + echo to clean the dependencies, run clean-dependencies.sh + exit 1 +fi + +if [ -e .setup-started ]; then + echo setup has already been started, but failed. refusing to run again. + echo to run again anyway, delete .setup-started + echo to clean the dependencies, run clean-dependencies.sh + exit 1 +fi + +if [ -z "$MAKEOPTS" ]; then + MAKEOPTS=-j$(nproc) +fi + +touch .setup-started + +set -e + +mkdir -p dependencies toolchain/usr +cd dependencies + +git clone --depth 1 -b "$LIMINE_TAG" https://github.com/limine-bootloader/limine limine +cd limine +./bootstrap +./configure --enable-bios --enable-bios-cd +make $MAKEOPTS +cd .. + +git clone --depth 1 https://github.com/osdev0/freestanding-headers mintsuki-headers +cd mintsuki-headers +git fetch --depth=1 origin "$MINTSUKI_HEADERS_COMMIT" +git checkout "$MINTSUKI_HEADERS_COMMIT" +patch stddef.h "$PROJECT_ROOT"/patches/mintsuki-stddef.patch +cd .. + +git clone --depth 1 -b "$BINUTILS_TAG" https://sourceware.org/git/binutils-gdb binutils +mkdir binutils/build +cd binutils/build +../configure --disable-gdb --target=x86_64-elf --prefix="$PROJECT_ROOT"/toolchain/usr +make $MAKEOPTS +make $MAKEOPTS install +cd ../.. + +git clone --depth 1 -b "$GCC_TAG" https://gcc.gnu.org/git/gcc gcc +mkdir gcc/build +cd gcc/build +../configure --disable-fixed-point --disable-gcov --disable-multilib \ + --disable-shared --disable-hosted-libstdcxx --enable-languages=c++ \ + --target=x86_64-elf --enable-cstdio=stdio_pure \ + --prefix="$PROJECT_ROOT"/toolchain/usr --without-headers \ + --enable-cxx-flags=-mno-sse +make $MAKEOPTS all-gcc +make $MAKEOPTS install-gcc +make $MAKEOPTS all-target-libgcc +make $MAKEOPTS install-target-libgcc +make $MAKEOPTS all-target-libstdc++-v3 +make $MAKEOPTS install-target-libstdc++-v3 +patch "$PROJECT_ROOT"/toolchain/usr/x86_64-elf/include/c++/14.1.0/memory \ + "$PROJECT_ROOT"/patches/gcc-memory.patch +cd ../.. + +cd .. +touch .setup-complete -- cgit v1.2.3