Skip to content

Commit 83c4bf9

Browse files
Xeonacidbartlomieju
andcommitted
ci: build riscv64
Co-authored-by: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= <biwanczuk@gmail.com>
1 parent 6577454 commit 83c4bf9

2 files changed

Lines changed: 57 additions & 2 deletions

File tree

.github/workflows/ci.yml

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,18 @@ jobs:
117117
v8_enable_pointer_compression: false
118118
cargo: cargo
119119

120+
- os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }}
121+
target: riscv64gc-unknown-linux-gnu
122+
variant: debug
123+
v8_enable_pointer_compression: false
124+
cargo: cargo
125+
126+
- os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }}
127+
target: riscv64gc-unknown-linux-gnu
128+
variant: release
129+
v8_enable_pointer_compression: false
130+
cargo: cargo
131+
120132
# simdutf builds
121133
- os: macos-15-large
122134
target: x86_64-apple-darwin
@@ -174,6 +186,20 @@ jobs:
174186
simdutf: true
175187
cargo: cargo
176188

189+
- os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }}
190+
target: riscv64gc-unknown-linux-gnu
191+
variant: debug
192+
v8_enable_pointer_compression: false
193+
simdutf: true
194+
cargo: cargo
195+
196+
- os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }}
197+
target: riscv64gc-unknown-linux-gnu
198+
variant: release
199+
v8_enable_pointer_compression: false
200+
simdutf: true
201+
cargo: cargo
202+
177203
- os: ${{ github.repository == 'denoland/rusty_v8' && 'windows-2022-xxl' || 'windows-2022' }}
178204
target: x86_64-pc-windows-msvc
179205
variant: release # Note: we do not support windows debug builds.
@@ -217,7 +243,7 @@ jobs:
217243
python-version: 3.11.x
218244
architecture: x64
219245

220-
- name: Install cross compilation toolchain
246+
- name: Install cross compilation toolchain (aarch64)
221247
if: matrix.config.target == 'aarch64-unknown-linux-gnu'
222248
run: |
223249
rustup target add aarch64-unknown-linux-gnu
@@ -228,12 +254,29 @@ jobs:
228254
gcc-10-aarch64-linux-gnu libc6-arm64-cross qemu qemu-user \
229255
qemu-user-binfmt
230256
231-
sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 \
257+
sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 \
232258
/lib/ld-linux-aarch64.so.1
233259
234260
echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/aarch64-linux-gnu-gcc-10" >> ${GITHUB_ENV}
235261
echo "QEMU_LD_PREFIX=/usr/aarch64-linux-gnu" >> ${GITHUB_ENV}
236262
263+
- name: Install cross compilation toolchain (riscv64)
264+
if: matrix.config.target == 'riscv64gc-unknown-linux-gnu'
265+
run: |
266+
rustup target add riscv64gc-unknown-linux-gnu
267+
268+
sudo apt update
269+
sudo apt install -yq --no-install-suggests --no-install-recommends \
270+
binfmt-support g++-10-riscv64-linux-gnu \
271+
gcc-10-riscv64-linux-gnu libc6-riscv64-cross qemu qemu-user \
272+
qemu-user-binfmt
273+
274+
sudo ln -sf /usr/riscv64-linux-gnu/lib/ld-linux-riscv64-lp64d.so.1 \
275+
/lib/ld-linux-riscv64-lp64d.so.1
276+
277+
echo "CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/riscv64-linux-gnu-gcc-10" >> ${GITHUB_ENV}
278+
echo "QEMU_LD_PREFIX=/usr/riscv64-linux-gnu" >> ${GITHUB_ENV}
279+
237280
- name: Write git_submodule_status.txt
238281
run: git submodule status --recursive > git_submodule_status.txt
239282

@@ -267,6 +310,8 @@ jobs:
267310
"aarch64-apple-darwin" = "aarch64-apple-darwin"
268311
"x86_64-unknown-linux-gnu" = "x86_64-unknown-linux-musl"
269312
"aarch64-unknown-linux-gnu" = "aarch64-unknown-linux-musl"
313+
# Unlike aarch64, the riscv64 sccache binary is not static, so use the host architecture one.
314+
"riscv64gc-unknown-linux-gnu" = "x86_64-unknown-linux-musl"
270315
"x86_64-pc-windows-msvc" = "x86_64-pc-windows-msvc"
271316
}['${{ matrix.config.target }}']
272317
$basename = "sccache-$version-$platform"

build.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,16 @@ fn build_v8(is_asan: bool) {
372372
maybe_install_sysroot("i386");
373373
maybe_install_sysroot("arm");
374374
}
375+
if target_arch == "riscv64" {
376+
gn_args.push(r#"target_cpu="riscv64""#.to_string());
377+
// Cross compiling needs to set v8_target_cpu
378+
gn_args.push(r#"v8_target_cpu="riscv64""#.to_string());
379+
if target_os == "linux" {
380+
gn_args.push("use_sysroot=true".to_string());
381+
maybe_install_sysroot("riscv64");
382+
maybe_install_sysroot("amd64");
383+
}
384+
}
375385

376386
let target_triple = env::var("TARGET").unwrap();
377387
// check if the target triple describes a non-native environment

0 commit comments

Comments
 (0)