diff --git a/Makefile b/Makefile index c406348..b6ec8e1 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ ORG = dockcross BIN = ./bin # These images are built using the "build implicit rule" -STANDARD_IMAGES = android-arm linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-ppc64le windows-x86 windows-x64 +STANDARD_IMAGES = android-arm linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-mipsel linux-ppc64le windows-x86 windows-x64 # These images are expected to have explicit rules for *both* build and testing NON_STANDARD_IMAGES = browser-asmjs manylinux-x64 manylinux-x86 diff --git a/README.rst b/README.rst index 0049d3a..7764a4f 100644 --- a/README.rst +++ b/README.rst @@ -76,6 +76,11 @@ dockcross/linux-armv6 dockcross/linux-armv7 |linux-armv7-images| Generic Linux armv7 cross compiler toolchain. +.. |linux-mipsel-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-mipsel.svg + :target: https://microbadger.com/images/dockcross/linux-mipsel + +dockcross/linux-mipsel + |linux-mipsel-images| Linux mipsel cross compiler toolchain for little endian MIPS GNU systems. .. |linux-ppc64le-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-ppc64le.svg :target: https://microbadger.com/images/dockcross/linux-ppc64le diff --git a/linux-mipsel/Dockerfile b/linux-mipsel/Dockerfile new file mode 100644 index 0000000..6ef58e1 --- /dev/null +++ b/linux-mipsel/Dockerfile @@ -0,0 +1,45 @@ +FROM dockcross/base:latest +MAINTAINER Sergi Alvarez "pancake@nopcode.org" + +# This is for ARMv5 "legacy" (mipsel) devices which do NOT support hard float +# VFP instructions (mipshf). + +# From https://wiki.debian.org/CrossToolchains, installing for jessie +RUN echo "deb http://emdebian.org/tools/debian/ jessie main" > /etc/apt/sources.list.d/emdebian.list \ +&& curl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | apt-key add - \ +&& sed -i 's/httpredir.debian.org/http.debian.net/' /etc/apt/sources.list \ +&& dpkg --add-architecture mipsel \ +&& apt-get update && apt-get install -y crossbuild-essential-mipsel + +# The cross-compiling emulator +RUN apt-get update && apt-get install -y \ + qemu-user \ + qemu-user-static + +ENV CROSS_TRIPLE mips-linux-gnueabi +ENV CROSS_ROOT /usr/bin +ENV AS=/usr/bin/${CROSS_TRIPLE}-as \ + AR=/usr/bin/${CROSS_TRIPLE}-ar \ + CC=/usr/bin/${CROSS_TRIPLE}-gcc \ + CPP=/usr/bin/${CROSS_TRIPLE}-cpp \ + CXX=/usr/bin/${CROSS_TRIPLE}-g++ \ + LD=/usr/bin/${CROSS_TRIPLE}-ld + +ENV QEMU_LD_PREFIX ${CROSS_ROOT}/libc +ENV QEMU_SET_ENV "LD_LIBRARY_PATH=${CROSS_ROOT}/lib:${CROSS_ROOT}/libc/lib/${CROSS_TRIPLE}/" + +ENV DEFAULT_DOCKCROSS_IMAGE dockcross/linux-mipsel + +COPY Toolchain.cmake ${CROSS_ROOT}/ +ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/Toolchain.cmake + +# Build-time metadata as defined at http://label-schema.org +ARG BUILD_DATE +ARG IMAGE +ARG VCS_REF +ARG VCS_URL +LABEL org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$IMAGE \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url=$VCS_URL \ + org.label-schema.schema-version="1.0" diff --git a/linux-mipsel/Toolchain.cmake b/linux-mipsel/Toolchain.cmake new file mode 100644 index 0000000..c4c496a --- /dev/null +++ b/linux-mipsel/Toolchain.cmake @@ -0,0 +1,16 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR mipsel) + +set(cross_triple "mipsel-linux-gnu") + +set(CMAKE_C_COMPILER /usr/bin/${cross_triple}-gcc) +set(CMAKE_CXX_COMPILER /usr/bin/${cross_triple}-g++) +set(CMAKE_Fortran_COMPILER /usr/bin/${cross_triple}-gfortran) + +set(CMAKE_FIND_ROOT_PATH /usr/${cross_triple} /usr/${cross_triple}/libc/usr) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +set(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/qemu-mipsel)