docker-playground/arm-none-eabi-gcc-4.8.2/Dockerfile

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