Facing error while cross-compiling Chromium for RISC-V64.

40 views
Skip to first unread message

Sharath

unread,
Dec 29, 2025, 10:45:08 AM (yesterday) Dec 29
to Chromium-dev
Hi Team,

I am attempting to build the Chromium browser for a RISC-V64 architecture board running Ubuntu 22.04 with a Wayland desktop environment.
I am cross-compiling from an Ubuntu 22.04 x86-64 platform.

Below are the steps I have followed:

# Update package lists
sudo apt-get update

# Install depot-tools and add to PATH
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PWD/depot_tools:$PATH
source ~/.bashrc

# Fetch the Chromium source code
mkdir chromium && cd chromium
fetch --nohooks chromium
cd src/

# Install build dependencies
./build/install-build-deps.sh

# Configure build arguments for RISC-V64 with Wayland
gn args out/riscv64-wayland

The build arguments I'm using are:

target_os = "linux"
target_cpu = "riscv64"
use_ozone = true
ozone_platform_wayland = true
angle_use_wayland = true
is_debug = false
symbol_level = 0
is_component_build = false
ffmpeg_branding = "Chromium"
proprietary_codecs = false
cflags_cc = [ "-Wno-error=deprecated-declarations" ]
use_siso = false

# Install sysroot for RISC-V64
./build/linux/sysroot_scripts/install-sysroot.py --arch=riscv64

# Sync dependencies and generate build files
gclient sync
gn gen out/riscv64-wayland

# Build Chromium
autoninja -C out/riscv64-wayland chrome

During the ninja build step, I'm encountering the following error:

ninja: Entering directory `out/riscv64-wayland'
[3/82260] CXX obj/base/base/process_metrics_posix.o
FAILED: obj/base/base/process_metrics_posix.o
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/base/base/process_metrics_posix.o.d -DBASE_IMPLEMENTATION -DIS_RAW_PTR_IMPL -DUSE_SYMBOLIZE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DCR_CLANG_REVISION=\"llvmorg-22-init-17020-gbd1bd178-2\" -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_INSTRUMENTED_WITH_ASAN=0 -DCR_LIBCXX_REVISION=9d1abf977e3d2ce03f6cc22513412408a932d9ac -DCR_SYSROOT_KEY=20250129T203412Z-1 -DDCHECK_ALWAYS_ON=1 -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_OZONE=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_56 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_56 -DGLOG_EXPORT= -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUSE_LIBCXX_MODULES -I../.. -Igen -I../../third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -I../../base/allocator/partition_allocator/src -Igen/base/allocator/partition_allocator/src -I../../third_party/abseil-cpp -I../../third_party/boringssl/src/include -I../../third_party/protobuf/src -I../../third_party/zlib -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -Wall -Wextra -Wimplicit-fallthrough -Wextra-semi -Wunreachable-code-aggressive -Wgnu -Wno-gnu-anonymous-struct -Wno-gnu-conditional-omitted-operand -Wno-gnu-include-next -Wno-gnu-label-as-value -Wno-gnu-redeclared-enum -Wno-gnu-statement-expression -Wno-gnu-zero-variadic-macro-arguments -Wno-zero-length-array -Wthread-safety -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wno-cast-function-type -Wno-thread-safety-reference-return -Wno-nontrivial-memcall -Wno-uninitialized-const-pointer -Wexit-time-destructors -Wshadow -Werror -fno-delete-null-pointer-checks -fno-strict-overflow -fno-ident -fno-math-errno -fno-strict-aliasing -fstack-protector -funwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../clang-crashreports -mllvm -instcombine-lower-dbg-declare=0 -mllvm -split-threshold-for-reg-with-hint=0 -ffp-contract=off -Wa,--crel,--allow-experimental-crel -fcomplete-member-pointers --target=riscv64-linux-gnu -mabi=lp64d -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -ffile-compilation-dir=. -no-canonical-prefixes -Xclang -fmodule-file-home-is-cwd -Xclang -fmodules-cache-path=/not_exist_dummy_dir --warning-suppression-mappings=../../build/config/warning_suppression.txt -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -g0 -fsanitize=array-bounds -fsanitize-trap=array-bounds -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang check-stack-allocated -Xclang -plugin-arg-find-bad-constructs -Xclang check-ipc -Xclang -add-plugin -Xclang raw-ptr-plugin -Xclang -plugin-arg-raw-ptr-plugin -Xclang check-raw-ptr-to-stack-allocated -Xclang -plugin-arg-raw-ptr-plugin -Xclang disable-check-raw-ptr-to-stack-allocated-error -Xclang -plugin-arg-raw-ptr-plugin -Xclang raw-ptr-exclude-path=../../third_party/dawn/ -Xclang -plugin-arg-raw-ptr-plugin -Xclang raw-ptr-exclude-path=../../build/config/clang/chrome/test/fuzzing/webidl_fuzzing/ -Xclang -plugin-arg-raw-ptr-plugin -Xclang check-raw-ptr-fields -Xclang -plugin-arg-raw-ptr-plugin -Xclang check-span-fields -Xclang -plugin-arg-raw-ptr-plugin -Xclang check-raw-ref-fields -DUNSAFE_BUFFERS_BUILD -Wunsafe-buffer-usage -Wno-error=unsafe-buffer-usage -Xclang -add-plugin -Xclang unsafe-buffers -Xclang -plugin-arg-unsafe-buffers -Xclang ../../build/config/unsafe_buffers_paths.txt -Wimplicit-int-conversion -Wshorten-64-to-32 -Wsign-compare -Wsign-conversion -Wtautological-unsigned-zero-compare -Wglobal-constructors -isystem../../build/linux/debian_trixie_riscv64-sysroot/usr/include/glib-2.0 -isystem../../build/linux/debian_trixie_riscv64-sysroot/usr/include/sysprof-6 -isystem../../build/linux/debian_trixie_riscv64-sysroot/usr/lib/riscv64-linux-gnu/glib-2.0/include -O2 -fdata-sections -ffunction-sections -fno-unique-section-names -Wno-invalid-offsetof -Wenum-compare-conditional -Wno-nullability-completeness -std=c++23 -Wno-trigraphs -gsimple-template-names -fno-exceptions -fno-rtti -nostdinc++ -isystemgen/third_party/libc++/src/include -isystem../../third_party/libc++abi/src/include --sysroot=../../build/linux/debian_trixie_riscv64-sysroot -fvisibility-inlines-hidden -fbuiltin-module-map -fmodules -fno-implicit-module-maps -fno-implicit-modules -Xclang -fmodules-local-submodule-visibility -Wno-modules-ambiguous-internal-linkage -Wno-modules-import-nested-redundant -Xclang -fmodules-disable-diagnostic-validation -Wno-module-import-in-extern-c -fmodule-map-file=gen/build/modules/linux/module.modulemap -fmodule-map-file=gen/third_party/libc++/src/include/module.modulemap -fmodule-file=_Builtin_float=obj/build/modules/linux/_Builtin_float/module.pcm -fmodule-file=_Builtin_intrinsics=obj/build/modules/linux/_Builtin_intrinsics/module.pcm -fmodule-file=_Builtin_inttypes=obj/build/modules/linux/_Builtin_inttypes/module.pcm -fmodule-file=_Builtin_iso646=obj/build/modules/linux/_Builtin_iso646/module.pcm -fmodule-file=_Builtin_limits=obj/build/modules/linux/_Builtin_limits/module.pcm -fmodule-file=_Builtin_stdalign=obj/build/modules/linux/_Builtin_stdalign/module.pcm -fmodule-file=_Builtin_stdarg=obj/build/modules/linux/_Builtin_stdarg/module.pcm -fmodule-file=_Builtin_stdatomic=obj/build/modules/linux/_Builtin_stdatomic/module.pcm -fmodule-file=_Builtin_stdbool=obj/build/modules/linux/_Builtin_stdbool/module.pcm -fmodule-file=_Builtin_stdcountof=obj/build/modules/linux/_Builtin_stdcountof/module.pcm -fmodule-file=_Builtin_stddef=obj/build/modules/linux/_Builtin_stddef/module.pcm -fmodule-file=_Builtin_stddef_wint_t=obj/build/modules/linux/_Builtin_stddef_wint_t/module.pcm -fmodule-file=_Builtin_stdint=obj/build/modules/linux/_Builtin_stdint/module.pcm -fmodule-file=_Builtin_stdnoreturn=obj/build/modules/linux/_Builtin_stdnoreturn/module.pcm -fmodule-file=_Builtin_unwind=obj/build/modules/linux/_Builtin_unwind/module.pcm -fmodule-file=ptrauth=obj/build/modules/linux/ptrauth/module.pcm -fmodule-file=std=obj/build/modules/linux/std/module.pcm -fmodule-file=std_complex_h=obj/build/modules/linux/std_complex_h/module.pcm -fmodule-file=std_core=obj/build/modules/linux/std_core/module.pcm -fmodule-file=std_ctype_h=obj/build/modules/linux/std_ctype_h/module.pcm -fmodule-file=std_errno_h=obj/build/modules/linux/std_errno_h/module.pcm -fmodule-file=std_fenv_h=obj/build/modules/linux/std_fenv_h/module.pcm -fmodule-file=std_float_h=obj/build/modules/linux/std_float_h/module.pcm -fmodule-file=std_inttypes_h=obj/build/modules/linux/std_inttypes_h/module.pcm -fmodule-file=std_math_h=obj/build/modules/linux/std_math_h/module.pcm -fmodule-file=std_private_mbstate_t=obj/build/modules/linux/std_private_mbstate_t/module.pcm -fmodule-file=std_stdatomic_h=obj/build/modules/linux/std_stdatomic_h/module.pcm -fmodule-file=std_string_h=obj/build/modules/linux/std_string_h/module.pcm -fmodule-file=std_tgmath_h=obj/build/modules/linux/std_tgmath_h/module.pcm -fmodule-file=std_uchar_h=obj/build/modules/linux/std_uchar_h/module.pcm -fmodule-file=std_wctype_h=obj/build/modules/linux/std_wctype_h/module.pcm -fmodule-file=sys_stage1=obj/build/modules/linux/sys_stage1/module.pcm -fmodule-file=sys_stage2=obj/build/modules/linux/sys_stage2/module.pcm -c ../../base/process/process_metrics_posix.cc -o obj/base/base/process_metrics_posix.o
../../base/process/process_metrics_posix.cc:122:27: error: 'mallinfo' is deprecated [-Werror,-Wdeprecated-declarations]
  122 |   struct mallinfo minfo = mallinfo();
      |                           ^
../../build/linux/debian_trixie_riscv64-sysroot/usr/include/malloc.h:114:48: note: 'mallinfo' has been explicitly marked deprecated here
  114 | extern struct mallinfo mallinfo (void) __THROW __MALLOC_DEPRECATED;
      |                                                ^
../../build/linux/debian_trixie_riscv64-sysroot/usr/include/malloc.h:32:30: note: expanded from macro '__MALLOC_DEPRECATED'
   32 | # define __MALLOC_DEPRECATED __attribute_deprecated__
      |                              ^
../../build/linux/debian_trixie_riscv64-sysroot/usr/include/riscv64-linux-gnu/sys/cdefs.h:510:51: note: expanded from macro '__attribute_deprecated__'
  510 | # define __attribute_deprecated__ __attribute__ ((__deprecated__))
      |                                                   ^
1 error generated.
[16/82260] CXX clang_x64/obj/third_party/perfetto/src/trace_processor/importers/proto/minimal/track_event_tokenizer.o
ninja: build stopped: subcommand failed.


Could someone please assist me in resolving this issue during the cross-compilation of Chromium for the RISC-V64 architecture?
It would be really helpful if you share some build steps for chromium for riscv64.

Thank you in advance for your assistance.

Best regards,
Sharath

Nico Weber

unread,
Dec 29, 2025, 10:54:40 AM (yesterday) Dec 29
to sharath.g...@gmail.com, Chromium-dev
Hi,

The short answer is that riscv generally isn't a supported build configuration. (We might have a bot that builds cronet for riscv, but not the whole browser.) So you're likely to run into all kinds of issues.

For this particular problem, https://issues.chromium.org/issues/40177365 has some background.

This here https://source.chromium.org/chromium/chromium/src/+/main:base/process/process_metrics_posix.cc;l=115?q=mallinfo2%20f:base%2F%20f:process_me attempts to use mallinfo2 if the glibc in your sysroot is new enough (>= 2.33). It looks like you're using the Debian Trixie sysroot, which according to https://packages.debian.org/source/trixie/glibc should be 2.41, so it should work. You'd have to figure out why mallinfo2 isn't being used in that file.

(Or, if you'd prefer to paper over the problem, you could also set `treat_warnings_as_errors = false` in your args.gn. That's not recommended, of course. It looks like you tried this with `cflags_cc = [ "-Wno-error=deprecated-declarations" ]`, but cflags_cc can't be set in args.gn.)

Good luck,
Nico

--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
---
You received this message because you are subscribed to the Google Groups "Chromium-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-dev...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/chromium-dev/87d06151-d181-4bfc-a371-91e1a555c213n%40chromium.org.

Levi Zim

unread,
Dec 29, 2025, 10:54:06 PM (18 hours ago) Dec 29
to Chromium-dev, Sharath
Hi,

Please add treat_warnings_as_errors=false to your GN args as the unofficial chromium RISC-V port is currently not warning-free.
Here is the configuration I use in my downstream CI:  https://github.com/riscv-forks/chromium-riscv/blob/main/.github/workflows/ci.yml 

Some of the RISC-V support patches haven't made it into the Chromium source tree, so you will need to apply them manually.
For reference, here is the current two patches necessary for passing the build:
 # Sandbox
 git fetch https://chromium.googlesource.com/chromium/src refs/changes/20/4935120/11 && git cherry-pick FETCH_HEAD
 # Swiftshader
 git -C third_party/swiftshader fetch https://swiftshader.googlesource.com/SwiftShader refs/changes/29/75929/2 && git -C third_party/swiftshader cherry-pick FETCH_HEAD


Could someone please assist me in resolving this issue during the cross-compilation of Chromium for the RISC-V64 architecture?
It would be really helpful if you share some build steps for chromium for riscv64.

Thank you in advance for your assistance.

Best regards,
Sharath

Best regards,
Levi 
Reply all
Reply to author
Forward
0 new messages