Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 47 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,18 @@ jobs:
v8_enable_pointer_compression: false
cargo: cargo

- os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }}
target: riscv64gc-unknown-linux-gnu
variant: debug
v8_enable_pointer_compression: false
cargo: cargo

- os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }}
target: riscv64gc-unknown-linux-gnu
variant: release
v8_enable_pointer_compression: false
cargo: cargo

# simdutf builds
- os: macos-15-large
target: x86_64-apple-darwin
Expand Down Expand Up @@ -174,6 +186,20 @@ jobs:
simdutf: true
cargo: cargo

- os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }}
target: riscv64gc-unknown-linux-gnu
variant: debug
v8_enable_pointer_compression: false
simdutf: true
cargo: cargo

- os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }}
target: riscv64gc-unknown-linux-gnu
variant: release
v8_enable_pointer_compression: false
simdutf: true
cargo: cargo

- os: ${{ github.repository == 'denoland/rusty_v8' && 'windows-2022-xxl' || 'windows-2022' }}
target: x86_64-pc-windows-msvc
variant: release # Note: we do not support windows debug builds.
Expand Down Expand Up @@ -217,7 +243,7 @@ jobs:
python-version: 3.11.x
architecture: x64

- name: Install cross compilation toolchain
- name: Install cross compilation toolchain (aarch64)
if: matrix.config.target == 'aarch64-unknown-linux-gnu'
run: |
rustup target add aarch64-unknown-linux-gnu
Expand All @@ -234,6 +260,23 @@ jobs:
echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/aarch64-linux-gnu-gcc-10" >> ${GITHUB_ENV}
echo "QEMU_LD_PREFIX=/usr/aarch64-linux-gnu" >> ${GITHUB_ENV}

- name: Install cross compilation toolchain (riscv64)
if: matrix.config.target == 'riscv64gc-unknown-linux-gnu'
run: |
rustup target add riscv64gc-unknown-linux-gnu

sudo apt update
sudo apt install -yq --no-install-suggests --no-install-recommends \
binfmt-support g++-10-riscv64-linux-gnu \
gcc-10-riscv64-linux-gnu libc6-riscv64-cross debootstrap qemu qemu-user \
qemu-user-binfmt

sudo ln -s /usr/riscv64-linux-gnu/lib/ld-linux-riscv64-lp64d.so.1 \
/lib/ld-linux-riscv64-lp64d.so.1

echo "CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/riscv64-linux-gnu-gcc-10" >> ${GITHUB_ENV}
echo "QEMU_LD_PREFIX=/usr/riscv64-linux-gnu" >> ${GITHUB_ENV}

- name: Write git_submodule_status.txt
run: git submodule status --recursive > git_submodule_status.txt

Expand Down Expand Up @@ -261,12 +304,14 @@ jobs:
SCCACHE_CACHE_SIZE: 256M
SCCACHE_IDLE_TIMEOUT: 0
run: |
$version = "v0.8.2"
$version = "v0.14.0"
Copy link

Copilot AI Mar 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sccache version is bumped to v0.14.0 for the main build job, but other jobs in this workflow still pin sccache to v0.8.2. If the version bump is intentional, consider updating the other sccache install steps (or centralizing the version into a single env/variable) to avoid inconsistent behavior and harder-to-debug CI issues across jobs.

Copilot uses AI. Check for mistakes.
$platform =
@{ "x86_64-apple-darwin" = "x86_64-apple-darwin"
"aarch64-apple-darwin" = "aarch64-apple-darwin"
"x86_64-unknown-linux-gnu" = "x86_64-unknown-linux-musl"
"aarch64-unknown-linux-gnu" = "aarch64-unknown-linux-musl"
# Unlike aarch64, the riscv64 sccache binary is not static, so use the host architecture one.
"riscv64gc-unknown-linux-gnu" = "x86_64-unknown-linux-musl"
"x86_64-pc-windows-msvc" = "x86_64-pc-windows-msvc"
}['${{ matrix.config.target }}']
$basename = "sccache-$version-$platform"
Expand Down
9 changes: 9 additions & 0 deletions build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,15 @@ fn build_v8(is_asan: bool) {
maybe_install_sysroot("i386");
maybe_install_sysroot("arm");
}
if target_arch == "riscv64" {
gn_args.push(r#"target_cpu="riscv64""#.to_string());
gn_args.push(r#"v8_target_cpu="riscv64""#.to_string());
if target_os == "linux" {
gn_args.push("use_sysroot=true".to_string());
maybe_install_sysroot("riscv64");
maybe_install_sysroot("amd64");
}
}

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