Skip to content

Commit 753d669

Browse files
lildengzispeak-agent
authored andcommitted
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 3724102 commit 753d669

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
# x86_64-linux-musl | x86_64-linux-musl-gcc@16.1.0 | windows→linux | linux job
1617
#
@@ -44,8 +45,6 @@ name: cross-build-test
4445
# yet inject `-target <triple>` + a cross sysroot for a
4546
# clang toolchain; cross `--target` resolves to gcc musl
4647
# only. Wire the clang cross path first, then add a row.
47-
# * riscv64-linux-musl: add once xim:riscv64-linux-musl-gcc ships to
48-
# xlings-res + xim-pkgindex.
4948

5049
on:
5150
push:
@@ -70,6 +69,9 @@ jobs:
7069
- target: aarch64-linux-musl
7170
file_arch: "ARM aarch64"
7271
qemu_bin: qemu-aarch64-static
72+
- target: riscv64-linux-musl
73+
file_arch: "UCB RISC-V"
74+
qemu_bin: qemu-riscv64-static
7375
env:
7476
MCPP_HOME: /home/runner/.mcpp
7577
# 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
@@ -308,7 +308,7 @@ the right toolchain payload is resolved and installed automatically.
308308
| `x86_64-windows-gnu` | gcc 16 MinGW-w64 — native on Windows, cross from Linux (wine-verified) *(Windows default without Visual Studio)* ||
309309
| `x86_64-windows-msvc` | `msvc@system` (detected VS/BuildTools) or llvm ¹ *(Windows default with Visual Studio)* ||
310310
| `aarch64-macos` | llvm *(macOS default)* ||
311-
| `riscv64-linux-musl` | | 🔄 |
311+
| `riscv64-linux-musl` | gcc 16, fully static — cross from x86_64 (qemu-verified); base `rv64gc`/`lp64d` ISA, optional extensions (`-march=rv64gcv`, Zb*) pass through | |
312312
| `aarch64-linux-gnu` || 🔄 |
313313
| `x86_64-macos` || 🔄 |
314314

README.zh-CN.md

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

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)