From ed1d74505c2c0f10e57099ad11a12d2d01dd654b Mon Sep 17 00:00:00 2001 From: xuchang-vivo <72209398@vivo.com> Date: Mon, 11 May 2026 20:04:54 +0800 Subject: [PATCH] feat: add DTS include support for build-time device tree generation Co-Authored-By: Claude Haiku 4.5 --- kernel/BUILD.gn | 8 ++++++++ kernel/src/boards/qemu_riscv64/mod.rs | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/kernel/BUILD.gn b/kernel/BUILD.gn index 06ef5d307..2b3bcbcf4 100644 --- a/kernel/BUILD.gn +++ b/kernel/BUILD.gn @@ -91,6 +91,10 @@ build_rust("kernel_unittest") { cfgs = _kernel_default_cfgs deps = _shared_deps deps += [ "//external/vendor/semihosting-0.1.20:semihosting" ] + if (defined(dts_file)) { + deps += [ "//build/boards/${board}:dts_gen_${board}" ] + rustenv += [ "DTS_OUT_DIR=${dts_out_dir}" ] + } configs += [ "//kernel/kconfig:kconfigs", "//build/boards/${board}:kernel_config", @@ -159,6 +163,10 @@ build_rust("blueos") { rustenv = [ "TARGET_BOARD=${board}" ] cfgs = _kernel_default_cfgs deps = _shared_deps + if (defined(dts_file)) { + deps += [ "//build/boards/${board}:dts_gen_${board}" ] + rustenv += [ "DTS_OUT_DIR=${dts_out_dir}" ] + } public_deps = board_deps public_deps += [ "//kernel/kconfig:generate_rustflags_file" ] public_configs += [ diff --git a/kernel/src/boards/qemu_riscv64/mod.rs b/kernel/src/boards/qemu_riscv64/mod.rs index b8381ebd1..f78fff166 100644 --- a/kernel/src/boards/qemu_riscv64/mod.rs +++ b/kernel/src/boards/qemu_riscv64/mod.rs @@ -20,6 +20,10 @@ // SPDX-License-Identifier: MIT mod config; +/// Device tree generated modules (build-time). +pub mod dts { + include!(concat!(env!("DTS_OUT_DIR"), "/mod.rs")); +} use crate::{ arch, arch::riscv::{local_irq_enabled, trap_entry, Context},