From 2883e4ce0fb6b24d8953217074e2550d183c6dca Mon Sep 17 00:00:00 2001
From: Wang Xuerui <git@xen0n.name>
Date: Wed, 31 Jul 2019 13:22:45 +0800
Subject: [PATCH] ci: Add mips64(el)-unknown-linux-muslabi64 as initially
 no_core targets

---
 ci/build.sh                                       |  2 ++
 .../mips64-unknown-linux-muslabi64/Dockerfile     | 15 +++++++++++++++
 .../mips64el-unknown-linux-muslabi64/Dockerfile   | 15 +++++++++++++++
 ci/install-musl.sh                                | 14 ++++++++++++++
 4 files changed, 46 insertions(+)
 create mode 100644 ci/docker/mips64-unknown-linux-muslabi64/Dockerfile
 create mode 100644 ci/docker/mips64el-unknown-linux-muslabi64/Dockerfile

diff --git a/ci/build.sh b/ci/build.sh
index e63b4f7e..0df169c4 100644
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -204,6 +204,8 @@ i686-unknown-netbsd \
 i686-unknown-openbsd \
 mips-unknown-linux-uclibc \
 mipsel-unknown-linux-uclibc \
+mips64-unknown-linux-muslabi64 \
+mips64el-unknown-linux-muslabi64 \
 nvptx64-nvidia-cuda \
 powerpc-unknown-linux-gnuspe \
 powerpc-unknown-netbsd \
diff --git a/ci/docker/mips64-unknown-linux-muslabi64/Dockerfile b/ci/docker/mips64-unknown-linux-muslabi64/Dockerfile
new file mode 100644
index 00000000..8f63ade6
--- /dev/null
+++ b/ci/docker/mips64-unknown-linux-muslabi64/Dockerfile
@@ -0,0 +1,15 @@
+FROM ubuntu:19.04
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+  gcc make libc6-dev git curl ca-certificates \
+  gcc-mips64-linux-gnuabi64 qemu-user
+
+COPY install-musl.sh /
+RUN sh /install-musl.sh mips64
+
+# FIXME: shouldn't need the `-lgcc` here, shouldn't that be in libstd?
+ENV PATH=$PATH:/musl-mips64/bin:/rust/bin \
+    CC_mips64_unknown_linux_muslabi64=musl-gcc \
+    RUSTFLAGS='-Clink-args=-lgcc' \
+    CARGO_TARGET_MIPS64_UNKNOWN_LINUX_MUSLABI64_LINKER=musl-gcc \
+    CARGO_TARGET_MIPS64_UNKNOWN_LINUX_MUSLABI64_RUNNER="qemu-mips64 -L /musl-mips64"
diff --git a/ci/docker/mips64el-unknown-linux-muslabi64/Dockerfile b/ci/docker/mips64el-unknown-linux-muslabi64/Dockerfile
new file mode 100644
index 00000000..c42c2ba6
--- /dev/null
+++ b/ci/docker/mips64el-unknown-linux-muslabi64/Dockerfile
@@ -0,0 +1,15 @@
+FROM ubuntu:19.04
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+  gcc make libc6-dev git curl ca-certificates \
+  gcc-mips64el-linux-gnuabi64 qemu-user
+
+COPY install-musl.sh /
+RUN sh /install-musl.sh mips64el
+
+# FIXME: shouldn't need the `-lgcc` here, shouldn't that be in libstd?
+ENV PATH=$PATH:/musl-mips64el/bin:/rust/bin \
+    CC_mips64el_unknown_linux_muslabi64=musl-gcc \
+    RUSTFLAGS='-Clink-args=-lgcc' \
+    CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_MUSLABI64_LINKER=musl-gcc \
+    CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_MUSLABI64_RUNNER="qemu-mips64el -L /musl-mips64el"
diff --git a/ci/install-musl.sh b/ci/install-musl.sh
index ab98c4f0..d6ec17e6 100644
--- a/ci/install-musl.sh
+++ b/ci/install-musl.sh
@@ -46,6 +46,20 @@ case ${1} in
         ./configure --prefix="/musl-${musl_arch}"
         make install -j4
         ;;
+    mips64)
+        musl_arch=mips64
+        kernel_arch=mips
+        CC=mips64-linux-gnuabi64-gcc CFLAGS="-march=mips64r2 -mabi=64" \
+          ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
+        make install -j4
+        ;;
+    mips64el)
+        musl_arch=mips64el
+        kernel_arch=mips
+        CC=mips64el-linux-gnuabi64-gcc CFLAGS="-march=mips64r2 -mabi=64" \
+          ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
+        make install -j4
+        ;;
     *)
         echo "Unknown target arch: \"${1}\""
         exit 1
-- 
GitLab