diff --git a/kernel/BUILD.gn b/kernel/BUILD.gn index 06ef5d30..2b3bcbcf 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 b8381ebd..f78fff16 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},