diff --git a/.github/workflows/build-test.sh b/.github/workflows/build-test.sh index 784340ec45..9c3d2e7338 100755 --- a/.github/workflows/build-test.sh +++ b/.github/workflows/build-test.sh @@ -96,6 +96,9 @@ if [[ -n "$CROSS_ARCH" ]]; then armhf) triplet=arm-linux-gnueabihf ;; + riscv64) + triplet=riscv64-linux-gnu + ;; *) fatal "Unsupported cross architecture: $CROSS_ARCH" ;; diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 2596b3edb5..a5b2027139 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -42,6 +42,9 @@ jobs: - env: { COMPILER: "gcc", COMPILER_VERSION: "13", LINKER: "bfd", CROSS_ARCH: "armhf" } runner: [ ubuntu-24.04-arm ] python-version: '' + - env: { COMPILER: "gcc", COMPILER_VERSION: "13", LINKER: "bfd", CROSS_ARCH: "riscv64" } + runner: [ ubuntu-24.04-arm ] + python-version: '' - env: { COMPILER: "clang", COMPILER_VERSION: "18", LINKER: "lld" } runner: [ ubuntu-24.04-s390x ] python-version: '' diff --git a/.github/workflows/riscv64-gcc.cross b/.github/workflows/riscv64-gcc.cross new file mode 100644 index 0000000000..8096e45192 --- /dev/null +++ b/.github/workflows/riscv64-gcc.cross @@ -0,0 +1,21 @@ +[binaries] +c = 'riscv64-linux-gnu-gcc' +cpp = 'riscv64-linux-gnu-g++' +ar = 'riscv64-linux-gnu-gcc-ar' +nm = 'riscv64-linux-gnu-gcc-nm' +strip = 'riscv64-linux-gnu-strip' +pkgconfig = 'pkg-config' + +[properties] +needs_exe_wrapper = true +pkg_config_libdir = '/usr/lib/riscv64-linux-gnu/pkgconfig:/usr/share/pkgconfig' +c_args = ['-O2', '-pipe', '-g', '-feliminate-unused-debug-types'] +c_link_args = ['-fuse-ld=bfd', '-Wl,-O1', '-Wl,--hash-style=gnu', '-Wl,--as-needed', '-Wl,-z,relro,-z,now,-z,noexecstack'] +cpp_args = [] +cpp_link_args = ['-fuse-ld=bfd', '-Wl,-O1', '-Wl,--hash-style=gnu', '-Wl,--as-needed', '-Wl,-z,relro,-z,now,-z,noexecstack'] + +[host_machine] +system = 'linux' +cpu_family = 'riscv64' +cpu = 'riscv64' +endian = 'little'