Skip to content

Commit fcf7209

Browse files
tejlmandnashif
authored andcommitted
cmake: dts: import devicetree symbols into CMake
This commit introduces devicetree API in CMake so that devicetree properties and register block can be used in the CMake build system. The script scripts/dts/gen_dts_cmake.py processes the edt.pickle and generates a corresponding devicetree property map in a devicetree_target that is then used in CMake. The following devicetree API has been made available in Zephyr CMake: - dt_nodelabel(<var> NODELABEL <label>) - dt_node_exists(<var> PATH <path>) - dt_node_has_status(<var> PATH <path> STATUS <status>) - dt_prop(<var> PATH <path> PROPERTY <prop>) - dt_prop(<var> PATH <path> INDEX <idx> PROPERTY <prop>) - dt_num_regs(<var> PATH <path>) - dt_reg_addr(<var> PATH <path> [INDEX <idx>]) - dt_reg_size(<var> PATH <path> [INDEX <idx>]) - dt_has_chosen(<var> PROPERTY <prop>) - dt_chosen(<var> PROPERTY <prop>) Signed-off-by: Martí Bolívar <[email protected]> Signed-off-by: Torsten Rasmussen <[email protected]>
1 parent 4c32e21 commit fcf7209

File tree

3 files changed

+596
-0
lines changed

3 files changed

+596
-0
lines changed

cmake/dts.cmake

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ set(DTS_POST_CPP ${PROJECT_BINARY_DIR}/${BOARD}.dts.pre.tmp)
2727
# This is relative to each element of DTS_ROOT.
2828
set(VENDOR_PREFIXES dts/bindings/vendor-prefixes.txt)
2929

30+
# Devicetree in CMake.
31+
set(DTS_CMAKE_SCRIPT ${ZEPHYR_BASE}/scripts/dts/gen_dts_cmake.py)
32+
set(DTS_CMAKE ${PROJECT_BINARY_DIR}/dts.cmake)
33+
3034
set_ifndef(DTS_SOURCE ${BOARD_DIR}/${BOARD}.dts)
3135

3236
zephyr_file(APPLICATION_ROOT DTS_ROOT)
@@ -175,6 +179,7 @@ if(SUPPORTS_DTS)
175179
CMAKE_CONFIGURE_DEPENDS
176180
${include_files}
177181
${GEN_DEFINES_SCRIPT}
182+
${DTS_CMAKE_SCRIPT}
178183
)
179184

180185
#
@@ -250,6 +255,20 @@ if(SUPPORTS_DTS)
250255
message(STATUS "Generated device_extern.h: ${DEVICE_EXTERN_H}")
251256
endif()
252257

258+
execute_process(
259+
COMMAND ${PYTHON_EXECUTABLE} ${DTS_CMAKE_SCRIPT}
260+
--edt-pickle ${EDT_PICKLE}
261+
--cmake-out ${DTS_CMAKE}
262+
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
263+
RESULT_VARIABLE ret
264+
)
265+
if(NOT "${ret}" STREQUAL "0")
266+
message(FATAL_ERROR "gen_dts_cmake.py failed with return code: ${ret}")
267+
else()
268+
message(STATUS "Including generated dts.cmake file: ${DTS_CMAKE}")
269+
include(${DTS_CMAKE})
270+
endif()
271+
253272
else()
254273
file(WRITE ${DEVICETREE_UNFIXED_H} "/* WARNING. THIS FILE IS AUTO-GENERATED. DO NOT MODIFY! */")
255274
file(WRITE ${DEVICE_EXTERN_H} "/* WARNING. THIS FILE IS AUTO-GENERATED. DO NOT MODIFY! */")

0 commit comments

Comments
 (0)