From d339e27080ba8a243b8519596012cbace0d5b153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Sat, 11 Nov 2017 17:53:09 +0100 Subject: [PATCH] Compile binutils and gcc from scratch Turns out the alpine versione doesn't quite work well with low-level 32 bit code... --- toolchain/Dockerfile | 6 ++--- toolchain/build-toolchain.sh | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) create mode 100755 toolchain/build-toolchain.sh diff --git a/toolchain/Dockerfile b/toolchain/Dockerfile index f98aae8..e1eb583 100644 --- a/toolchain/Dockerfile +++ b/toolchain/Dockerfile @@ -1,8 +1,8 @@ FROM alpine -RUN apk --update add make binutils gcc && \ - apk add grub-bios xorriso qemu-system-x86_64 gdb && \ - rm -rf /var/cache/apk/* +ADD build-toolchain.sh /opt/build-toolchain.sh + +RUN /opt/build-toolchain.sh ENV PATH "/opt/toolchain:$PATH" ENV MITTOS64 "true" diff --git a/toolchain/build-toolchain.sh b/toolchain/build-toolchain.sh new file mode 100755 index 0000000..c1135b7 --- /dev/null +++ b/toolchain/build-toolchain.sh @@ -0,0 +1,46 @@ +#!/bin/sh -e + +apk --update add build-base +apk add gmp-dev mpfr-dev mpc1-dev + +apk add make +apk add grub-bios xorriso +apk add qemu-system-x86_64 gdb + +rm -rf /var/cache/apk/* + +target=x86_64-elf +binutils=binutils-2.26 +gcc=gcc-6.1.0 + + +cd /opt +wget http://ftp.gnu.org/gnu/binutils/${binutils}.tar.gz +tar -xf ${binutils}.tar.gz +mkdir binutils-build && cd binutils-build +../${binutils}/configure \ + --target=${target} \ + --disable-nls \ + --disable-werror \ + --with-sysroot \ + +make +make install + +cd /opt +wget http://ftp.gnu.org/gnu/gcc/${gcc}/${gcc}.tar.gz +tar -xf ${gcc}.tar.gz +mkdir gcc-build && cd gcc-build +../${gcc}/configure \ + --target=${target} \ + --disable-nls \ + --enable-languages=c \ + --without-headers \ + +make all-gcc all-target-libgcc +make install-gcc install-target-libgcc + +apk del build-base + +cd / +rm -rf /opt