Skip to content

Commit d79a7cd

Browse files
[native_toolchain_c] Setup Linux RISCV64 toolchain. (#163)
1 parent ce26f75 commit d79a7cd

File tree

7 files changed

+27
-3
lines changed

7 files changed

+27
-3
lines changed

.github/workflows/dart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ jobs:
8282
if: ${{ matrix.sdk == 'stable' }}
8383

8484
- name: Install native toolchains
85-
run: sudo apt-get update && sudo apt-get install clang-15 gcc-i686-linux-gnu gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf
85+
run: sudo apt-get update && sudo apt-get install clang-15 gcc-i686-linux-gnu gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf gcc-riscv64-linux-gnu
8686
if: ${{ matrix.sdk == 'stable' && matrix.os == 'ubuntu' }}
8787

8888
- run: dart test

.github/workflows/native_toolchain_c.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
- run: dart pub get
4545

4646
- name: Install native toolchains
47-
run: sudo apt-get update && sudo apt-get install gcc-i686-linux-gnu gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf
47+
run: sudo apt-get update && sudo apt-get install gcc-i686-linux-gnu gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf gcc-riscv64-linux-gnu
4848
if: ${{ matrix.sdk == 'stable' && matrix.os == 'ubuntu' }}
4949

5050
- run: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

pkgs/native_toolchain_c/lib/src/cbuilder/compiler_resolver.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ class CompilerResolver {
7474
return aarch64LinuxGnuGcc;
7575
case Architecture.ia32:
7676
return i686LinuxGnuGcc;
77+
case Architecture.riscv64:
78+
return riscv64LinuxGnuGcc;
7779
}
7880
}
7981

@@ -158,6 +160,8 @@ class CompilerResolver {
158160
return aarch64LinuxGnuGccAr;
159161
case Architecture.ia32:
160162
return i686LinuxGnuGccAr;
163+
case Architecture.riscv64:
164+
return riscv64LinuxGnuGccAr;
161165
}
162166
}
163167
if (host.os == OS.windows) {

pkgs/native_toolchain_c/lib/src/native_toolchain/gcc.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ final aarch64LinuxGnuGccAr = _gnuArchiver('aarch64-linux-gnu');
4747
/// [gnuLinker] with [Tool.defaultResolver] for [Architecture.arm64].
4848
final aarch64LinuxGnuLd = _gnuLinker('aarch64-linux-gnu');
4949

50+
/// [gcc] with [Tool.defaultResolver] for [Architecture.riscv64].
51+
final riscv64LinuxGnuGcc = _gcc('riscv64-linux-gnu');
52+
53+
/// [gnuArchiver] with [Tool.defaultResolver] for [Architecture.riscv64].
54+
final riscv64LinuxGnuGccAr = _gnuArchiver('riscv64-linux-gnu');
55+
56+
/// [gnuLinker] with [Tool.defaultResolver] for [Architecture.riscv64].
57+
final riscv64LinuxGnuLd = _gnuLinker('riscv64-linux-gnu');
58+
5059
Tool _gcc(String prefix) => Tool(
5160
name: gcc.name,
5261
defaultResolver: CliVersionResolver(

pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_linux_host_test.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,16 @@ void main() {
2424
Target.linuxArm,
2525
Target.linuxArm64,
2626
Target.linuxIA32,
27-
Target.linuxX64
27+
Target.linuxX64,
28+
Target.linuxRiscv64,
2829
];
2930

3031
const readElfMachine = {
3132
Target.linuxArm: 'ARM',
3233
Target.linuxArm64: 'AArch64',
3334
Target.linuxIA32: 'Intel 80386',
3435
Target.linuxX64: 'Advanced Micro Devices X86-64',
36+
Target.linuxRiscv64: 'RISC-V',
3537
};
3638

3739
for (final linkMode in LinkMode.values) {

pkgs/native_toolchain_c/test/native_toolchain/gcc_test.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,10 @@ void main() {
5959
i686LinuxGnuGccAr,
6060
i686LinuxGnuLd,
6161
]);
62+
63+
testToolSet('riscv64LinuxGnuGcc', [
64+
riscv64LinuxGnuGcc,
65+
riscv64LinuxGnuGccAr,
66+
riscv64LinuxGnuLd,
67+
]);
6268
}

pkgs/native_toolchain_c/test/native_toolchain/recognizer_test.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ void main() async {
3939
RecognizerTest(link, LinkerRecognizer.new),
4040
RecognizerTest(lld, LinkerRecognizer.new),
4141
RecognizerTest(llvmAr, ArchiverRecognizer.new),
42+
RecognizerTest(riscv64LinuxGnuGcc, CompilerRecognizer.new),
43+
RecognizerTest(riscv64LinuxGnuGccAr, ArchiverRecognizer.new),
44+
RecognizerTest(riscv64LinuxGnuLd, LinkerRecognizer.new),
4245
];
4346

4447
for (final test in tests) {

0 commit comments

Comments
 (0)