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