Skip to content

Commit 02084ac

Browse files
authored
Re-enable MIPS targets (#217)
1 parent 64cf300 commit 02084ac

File tree

3 files changed

+30
-18
lines changed

3 files changed

+30
-18
lines changed

.github/workflows/Build.yml

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -138,22 +138,26 @@ jobs:
138138
TARGET: powerpc64le-unknown-linux-musl
139139
RUST_MUSL_MAKE_CONFIG: config.mak
140140
TOOLCHAIN: stable
141-
# - IMAGE_TAG: mips-musl
142-
# TARGET: mips-unknown-linux-musl
143-
# RUST_MUSL_MAKE_CONFIG: config.mak
144-
# TOOLCHAIN: stable
145-
# - IMAGE_TAG: mips64-muslabi64
146-
# TARGET: mips64-unknown-linux-muslabi64
147-
# RUST_MUSL_MAKE_CONFIG: config.mak
148-
# TOOLCHAIN: stable
149-
# - IMAGE_TAG: mips64el-muslabi64
150-
# TARGET: mips64el-unknown-linux-muslabi64
151-
# RUST_MUSL_MAKE_CONFIG: config.mak
152-
# TOOLCHAIN: stable
153-
# - IMAGE_TAG: mipsel-musl
154-
# TARGET: mipsel-unknown-linux-musl
155-
# RUST_MUSL_MAKE_CONFIG: config.mak
156-
# TOOLCHAIN: stable
141+
- IMAGE_TAG: mips-musl
142+
TARGET: mips-unknown-linux-musl
143+
RUST_MUSL_MAKE_CONFIG: config.mak
144+
TOOLCHAIN: nightly
145+
- IMAGE_TAG: mips64-openwrt-musl
146+
TARGET: mips64-openwrt-linux-musl
147+
RUST_MUSL_MAKE_CONFIG: config.mak
148+
TOOLCHAIN: nightly
149+
- IMAGE_TAG: mips64-muslabi64
150+
TARGET: mips64-unknown-linux-muslabi64
151+
RUST_MUSL_MAKE_CONFIG: config.mak
152+
TOOLCHAIN: nightly
153+
- IMAGE_TAG: mips64el-muslabi64
154+
TARGET: mips64el-unknown-linux-muslabi64
155+
RUST_MUSL_MAKE_CONFIG: config.mak
156+
TOOLCHAIN: nightly
157+
- IMAGE_TAG: mipsel-musl
158+
TARGET: mipsel-unknown-linux-musl
159+
RUST_MUSL_MAKE_CONFIG: config.mak
160+
TOOLCHAIN: nightly
157161
- IMAGE_TAG: s390x-musl
158162
TARGET: s390x-unknown-linux-musl
159163
RUST_MUSL_MAKE_CONFIG: config.mak
@@ -213,7 +217,8 @@ jobs:
213217
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/rust-musl-cross:buildcache-${{ matrix.env.IMAGE_TAG }}-${{ matrix.os.arch }}
214218
cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/rust-musl-cross:buildcache-${{ matrix.env.IMAGE_TAG }}-${{ matrix.os.arch }},mode=max
215219
- name: Test Docker cargo build
216-
if: ${{ matrix.os.arch != 'armv7' && !startsWith(matrix.env.TARGET, 'armv5te') && !startsWith(matrix.env.TARGET, 's390x') && !startsWith(matrix.env.TARGET, 'riscv64') }}
220+
# OpenWrt target isn't supported in openssl-src yet
221+
if: ${{ matrix.os.arch != 'armv7' && !startsWith(matrix.env.TARGET, 'armv5te') && !startsWith(matrix.env.TARGET, 's390x') && !startsWith(matrix.env.TARGET, 'riscv64') && !startsWith(matrix.env.TARGET, 'mips64-openwrt') }}
217222
run: |
218223
docker run --rm \
219224
-v "$(pwd)/tests":/home/rust/src \

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ ENV CFLAGS_armv7_unknown_linux_musleabihf='-mfpu=vfpv3-d16'
128128
# Build statically linked binaries for MIPS targets
129129
ENV CARGO_TARGET_MIPS_UNKNOWN_LINUX_MUSL_RUSTFLAGS='-C target-feature=+crt-static'
130130
ENV CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_RUSTFLAGS='-C target-feature=+crt-static'
131+
ENV CARGO_TARGET_MIPS64_OPENWRT_LINUX_MUSL_RUSTFLAGS='-C target-feature=+crt-static'
131132
ENV CARGO_TARGET_MIPS64_UNKNOWN_LINUX_MUSLABI64_RUSTFLAGS='-C target-feature=+crt-static'
132133
ENV CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_MUSLABI64_RUSTFLAGS='-C target-feature=+crt-static'
133134

build-std.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
set -e
3-
if [[ "$TOOLCHAIN" = "nightly" && ("$TARGET" =~ ^s390x || "$TARGET" = "powerpc64-unknown-linux-musl") ]]
3+
if [[ "$TOOLCHAIN" = "nightly" && ("$TARGET" =~ ^s390x || "$TARGET" = "powerpc64-unknown-linux-musl" || "$TARGET" =~ ^mips) ]]
44
then
55
export CARGO_NET_GIT_FETCH_WITH_CLI=true
66
export CARGO_UNSTABLE_SPARSE_REGISTRY=true
@@ -47,6 +47,12 @@ then
4747
else
4848
echo "Warning: GCC C runtime objects not found in $GCC_LIB_DIR, skipping"
4949
fi
50+
# For MIPS targets: create libunwind.a from libgcc.a since musl doesn't ship libunwind
51+
# The unwind symbols are provided by libgcc on these platforms
52+
if [[ "$TARGET" =~ ^mips ]] && [ -f "$GCC_LIB_DIR/libgcc.a" ]; then
53+
echo "Creating libunwind.a from libgcc.a for MIPS target"
54+
cp "$GCC_LIB_DIR/libgcc.a" "/root/.rustup/toolchains/$TOOLCHAIN-$HOST/lib/rustlib/$TARGET/lib/self-contained/libunwind.a"
55+
fi
5056
else
5157
echo "Warning: GCC library directory not found, skipping C runtime objects"
5258
fi

0 commit comments

Comments
 (0)