68 lines
2.9 KiB
Docker
68 lines
2.9 KiB
Docker
|
|
FROM ubuntu:latest
|
|
|
|
RUN apt-get update
|
|
|
|
COPY packages.txt .
|
|
RUN apt-get install -y --no-install-recommends --no-install-suggests $(cat packages.txt)
|
|
|
|
COPY gnu-keyring.gpg /gnu-keyring.gpg
|
|
RUN gpg --import /gnu-keyring.gpg
|
|
|
|
#ARG BINUTILS_MIRROR="https://ftp.gnu.org/gnu/binutils/"
|
|
ARG BINUTILS_MIRROR="https://gnuftp.uib.no/binutils/"
|
|
ARG BINUTILS_NAME="binutils-2.42"
|
|
ARG BINUTILS_ARCHIVE=${BINUTILS_NAME}".tar.gz"
|
|
|
|
#ARG GCC_MIRROR="https://ftp.gnu.org/gnu/gcc/gcc-14.1.0/"
|
|
ARG GCC_MIRROR="https://gnuftp.uib.no/gcc/gcc-14.1.0/"
|
|
ARG GCC_NAME="gcc-14.1.0"
|
|
ARG GCC_ARCHIVE=${GCC_NAME}".tar.gz"
|
|
|
|
ARG PREFIX=/opt/cross/
|
|
ARG TARGET=i686-elf
|
|
ENV PATH=${PREFIX}bin:${PATH}
|
|
|
|
WORKDIR build
|
|
|
|
# download and build gcc and binutils source
|
|
RUN set -x \
|
|
&& wget --no-verbose ${BINUTILS_MIRROR}${BINUTILS_ARCHIVE} \
|
|
&& wget --no-verbose ${BINUTILS_MIRROR}${BINUTILS_ARCHIVE}.sig \
|
|
&& gpg --verify "${BINUTILS_ARCHIVE}.sig" \
|
|
&& mkdir binutils \
|
|
&& tar -xf ${BINUTILS_ARCHIVE} -C binutils \
|
|
&& mkdir binutils-build \
|
|
&& cd binutils-build \
|
|
&& ../binutils/${BINUTILS_NAME}/configure \
|
|
--target=$TARGET \
|
|
--prefix=$PREFIX \
|
|
--with-sysroot \
|
|
--disable-nls \
|
|
--disable-werror \
|
|
&& make -j 8 \
|
|
&& make install \
|
|
&& rm -rf binutils-build binutils ${BINUTLS_ARCHIVE}
|
|
|
|
RUN set -x \
|
|
&& wget --no-verbose ${GCC_MIRROR}${GCC_ARCHIVE} \
|
|
&& wget --no-verbose ${GCC_MIRROR}${GCC_ARCHIVE}.sig \
|
|
&& gpg --verify "${GCC_ARCHIVE}.sig" \
|
|
&& mkdir gcc \
|
|
&& tar -xf ${GCC_ARCHIVE} -C gcc \
|
|
&& mkdir gcc-build \
|
|
&& cd gcc-build \
|
|
&& ../gcc/${GCC_NAME}/configure \
|
|
--target=$TARGET \
|
|
--prefix=$PREFIX \
|
|
--disable-nls \
|
|
--enable-languages=c \
|
|
--without-headers \
|
|
&& make -j 8 all-gcc \
|
|
&& make -j 8 all-target-libgcc \
|
|
&& make install-gcc \
|
|
&& make install-target-libgcc \
|
|
&& rm -rf gcc-build gcc ${GCC_ARCHIVE}
|
|
|
|
WORKDIR /runtime
|