84 lines
2.1 KiB
Docker
84 lines
2.1 KiB
Docker
FROM debian:stretch
|
|
|
|
MAINTAINER Vadim Yanitskiy <axilirator@gmail.com>
|
|
|
|
ENV BINUTILS_SRC=http://ftp.gnu.org/gnu/binutils/binutils-2.21.1a.tar.bz2
|
|
ENV NEWLIB_SRC=https://sourceware.org/pub/newlib/newlib-1.19.0.tar.gz
|
|
ENV GCC_SRC=http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
|
|
ENV PREFIX=/usr/local
|
|
|
|
# Install build tools and dependencies
|
|
RUN apt update && apt install -y \
|
|
build-essential \
|
|
libmpfr-dev \
|
|
libmpc-dev \
|
|
libgmp3-dev \
|
|
zlib1g-dev \
|
|
zlibc \
|
|
texinfo \
|
|
bison \
|
|
flex \
|
|
curl \
|
|
patch \
|
|
file \
|
|
python2.7-minimal \
|
|
autoconf \
|
|
libtool \
|
|
git
|
|
|
|
# Stage 0: Download and patch the source code
|
|
RUN curl -SL ${BINUTILS_SRC} | tar -xj -C /usr/src && \
|
|
curl -SL ${NEWLIB_SRC} | tar -xz -C /usr/src && \
|
|
curl -SL ${GCC_SRC} | tar -xj -C /usr/src
|
|
|
|
COPY patches/ /usr/src/patches
|
|
RUN for patch in /usr/src/patches/gcc-*.patch; do \
|
|
patch -d /usr/src/gcc-* -p1 < $patch; \
|
|
done
|
|
|
|
# Stage 1: Build and install binutils
|
|
RUN mkdir -p /home/build/binutils && cd /home/build/binutils \
|
|
&& /usr/src/binutils-*/configure \
|
|
CFLAGS="-w" \
|
|
--prefix=${PREFIX} \
|
|
--disable-werror \
|
|
--target=arm-none-eabi \
|
|
--enable-interwork \
|
|
--enable-threads=posix \
|
|
--enable-multilib \
|
|
--with-float=soft \
|
|
&& make all install
|
|
|
|
# Stage 2: Build and install GCC (compiler only)
|
|
RUN mkdir -p /home/build/gcc && cd /home/build/gcc \
|
|
&& HDR_PATH=$(realpath /usr/src/newlib-*/newlib/libc/include) \
|
|
&& /usr/src/gcc-*/configure \
|
|
CFLAGS="-w" \
|
|
--prefix=${PREFIX} \
|
|
--disable-shared \
|
|
--disable-werror \
|
|
--target=arm-none-eabi \
|
|
--enable-interwork \
|
|
--enable-multilib \
|
|
--with-float=soft \
|
|
--enable-languages="c,c++" \
|
|
--with-newlib \
|
|
--with-headers=$HDR_PATH \
|
|
--with-system-zlib \
|
|
&& make all-gcc install-gcc
|
|
|
|
# Stage 3: Build and install newlib
|
|
RUN mkdir -p /home/build/newlib && cd /home/build/newlib \
|
|
&& /usr/src/newlib-*/configure \
|
|
CFLAGS="-w" \
|
|
--prefix=${PREFIX} \
|
|
--disable-werror \
|
|
--target=arm-none-eabi \
|
|
--enable-interwork \
|
|
--enable-multilib \
|
|
--with-float=soft \
|
|
&& make all install
|
|
|
|
# Stage 4: Build and install the rest of GCC
|
|
RUN cd /home/build/gcc && make all install
|