Skip to content

Commit 633b553

Browse files
committed
Promote riscv64-linux-musl from planned to verified cross target
- triple.cppm: mark riscv64-linux-musl verified, pin gcc@16.1.0 - cross-build-test.yml: add riscv64-linux-musl qemu matrix row - 103_target_vocabulary.sh: use aarch64-linux-gnu as the planned-tier example - test_linkmodel.cpp: assert riscv64 loader names (musl + glibc) - README/README.zh-CN: riscv64-linux-musl now verified with rv64gc/lp64d note Requires xim riscv64-linux-musl-gcc@16.1.0 (openxlings/xim-pkgindex#585).
1 parent c765e83 commit 633b553

6 files changed

Lines changed: 10 additions & 6 deletions

File tree

.github/workflows/cross-build-test.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ name: cross-build-test
1111
# target | toolchain | host→target | run
1212
# ----------------------|---------------------------------|---------------|-----
1313
# aarch64-linux-musl | aarch64-linux-musl-gcc@16.1.0 | x86_64→arm64 | qemu
14+
# riscv64-linux-musl | riscv64-linux-musl-gcc@16.1.0 | x86_64→riscv64| qemu
1415
# x86_64-w64-mingw32 | mingw-cross-gcc@16.1.0 (MSVCRT) | linux→windows | wine
1516
#
1617
# The mingw row is OS-cross (same arch, different OS/ABI: ELF→PE), so it lives
@@ -34,8 +35,6 @@ name: cross-build-test
3435
# yet inject `-target <triple>` + a cross sysroot for a
3536
# clang toolchain; cross `--target` resolves to gcc musl
3637
# only. Wire the clang cross path first, then add a row.
37-
# * riscv64-linux-musl: add once xim:riscv64-linux-musl-gcc ships to
38-
# xlings-res + xim-pkgindex.
3938

4039
on:
4140
push:
@@ -60,6 +59,9 @@ jobs:
6059
- target: aarch64-linux-musl
6160
file_arch: "ARM aarch64"
6261
qemu_bin: qemu-aarch64-static
62+
- target: riscv64-linux-musl
63+
file_arch: "UCB RISC-V"
64+
qemu_bin: qemu-riscv64-static
6365
env:
6466
MCPP_HOME: /home/runner/.mcpp
6567
# Verbose every mcpp invocation for richer CI diagnostics (src/cli.cppm).

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ the right toolchain payload is resolved and installed automatically.
249249
| `x86_64-windows-gnu` | gcc 16 MinGW-w64 — native on Windows, cross from Linux (wine-verified) ||
250250
| `x86_64-windows-msvc` | `msvc@system` (detected VS/BuildTools) or llvm ¹ *(Windows default)* ||
251251
| `aarch64-macos` | llvm *(macOS default)* ||
252-
| `riscv64-linux-musl` | | 🔄 |
252+
| `riscv64-linux-musl` | gcc 16, fully static — cross from x86_64 (qemu-verified); base `rv64gc`/`lp64d` ISA, optional extensions (`-march=rv64gcv`, Zb*) pass through | |
253253
| `aarch64-linux-gnu` || 🔄 |
254254
| `x86_64-macos` || 🔄 |
255255

README.zh-CN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ mcpp 的身份模型是两条正交轴:**工具链** = `family@version`(family
247247
| `x86_64-windows-gnu` | gcc 16 MinGW-w64——Windows 原生,Linux 交叉(wine 实测) ||
248248
| `x86_64-windows-msvc` | `msvc@system`(探测 VS/BuildTools)或 llvm ¹(*Windows 默认*) ||
249249
| `aarch64-macos` | llvm(*macOS 默认*) ||
250-
| `riscv64-linux-musl` | | 🔄 |
250+
| `riscv64-linux-musl` | gcc 16,全静态——x86_64 交叉(qemu 实测);基础 `rv64gc`/`lp64d` ISA,可选扩展(`-march=rv64gcv`、Zb*)自行指定 | |
251251
| `aarch64-linux-gnu` || 🔄 |
252252
| `x86_64-macos` || 🔄 |
253253

src/toolchain/triple.cppm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ inline constexpr TargetInfo kKnownTargets[] = {
106106
{ "x86_64-windows-gnu", "verified", "PE", "gcc@16.1.0", true },
107107
{ "x86_64-windows-msvc", "verified", "PE", "", false },
108108
{ "aarch64-macos", "verified", "", "", false },
109-
{ "riscv64-linux-musl", "planned", "", "", true },
109+
{ "riscv64-linux-musl", "verified", "", "gcc@16.1.0", true },
110110
{ "aarch64-linux-gnu", "planned", "", "", false },
111111
{ "x86_64-macos", "planned", "", "", false },
112112
};

tests/e2e/103_target_vocabulary.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ grep -q "did you mean 'x86_64-linux-musl'" "$TMP/typo.log" || {
2626
echo "FAIL: missing did-you-mean suggestion"; cat "$TMP/typo.log"; exit 1; }
2727

2828
# ── 2. planned tier: registered but unsupported → error, not a host build ───
29-
if "$MCPP" build --target riscv64-linux-musl > "$TMP/planned.log" 2>&1; then
29+
if "$MCPP" build --target aarch64-linux-gnu > "$TMP/planned.log" 2>&1; then
3030
echo "FAIL: planned-tier target built"; cat "$TMP/planned.log"; exit 1
3131
fi
3232
grep -q "not yet supported" "$TMP/planned.log" || {

tests/unit/test_linkmodel.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ TEST(LoaderFilename, TripleMap) {
4242
EXPECT_EQ(tc::loader_filename("aarch64-linux-gnu"), "ld-linux-aarch64.so.1");
4343
EXPECT_EQ(tc::loader_filename("x86_64-linux-musl"), "ld-musl-x86_64.so.1");
4444
EXPECT_EQ(tc::loader_filename("aarch64-linux-musl"), "ld-musl-aarch64.so.1");
45+
EXPECT_EQ(tc::loader_filename("riscv64-linux-musl"), "ld-musl-riscv64.so.1");
46+
EXPECT_EQ(tc::loader_filename("riscv64-linux-gnu"), "ld-linux-riscv64-lp64d.so.1");
4547
EXPECT_EQ(tc::loader_filename("wasm32-unknown-unknown"), "");
4648
}
4749

0 commit comments

Comments
 (0)