Skip to content

Commit 86cc405

Browse files
tejlmandmbolivar-nordic
authored andcommitted
[nrf fromtree] 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]> (cherry picked from commit cad0298)
1 parent 4607047 commit 86cc405

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
@@ -24,6 +24,10 @@ set(DEVICETREE_UNFIXED_H ${PROJECT_BINARY_DIR}/include/generated/devicetr
2424
set(DEVICE_EXTERN_H ${PROJECT_BINARY_DIR}/include/generated/device_extern.h)
2525
set(DTS_POST_CPP ${PROJECT_BINARY_DIR}/${BOARD}.dts.pre.tmp)
2626

27+
# Devicetree in CMake.
28+
set(DTS_CMAKE_SCRIPT ${ZEPHYR_BASE}/scripts/dts/gen_dts_cmake.py)
29+
set(DTS_CMAKE ${PROJECT_BINARY_DIR}/dts.cmake)
30+
2731
set_ifndef(DTS_SOURCE ${BOARD_DIR}/${BOARD}.dts)
2832

2933
zephyr_file(APPLICATION_ROOT DTS_ROOT)
@@ -169,6 +173,7 @@ if(SUPPORTS_DTS)
169173
CMAKE_CONFIGURE_DEPENDS
170174
${include_files}
171175
${GEN_DEFINES_SCRIPT}
176+
${DTS_CMAKE_SCRIPT}
172177
)
173178

174179
#
@@ -244,6 +249,20 @@ if(SUPPORTS_DTS)
244249
message(STATUS "Generated device_extern.h: ${DEVICE_EXTERN_H}")
245250
endif()
246251

252+
execute_process(
253+
COMMAND ${PYTHON_EXECUTABLE} ${DTS_CMAKE_SCRIPT}
254+
--edt-pickle ${EDT_PICKLE}
255+
--cmake-out ${DTS_CMAKE}
256+
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
257+
RESULT_VARIABLE ret
258+
)
259+
if(NOT "${ret}" STREQUAL "0")
260+
message(FATAL_ERROR "gen_dts_cmake.py failed with return code: ${ret}")
261+
else()
262+
message(STATUS "Including generated dts.cmake file: ${DTS_CMAKE}")
263+
include(${DTS_CMAKE})
264+
endif()
265+
247266
else()
248267
file(WRITE ${DEVICETREE_UNFIXED_H} "/* WARNING. THIS FILE IS AUTO-GENERATED. DO NOT MODIFY! */")
249268
file(WRITE ${DEVICE_EXTERN_H} "/* WARNING. THIS FILE IS AUTO-GENERATED. DO NOT MODIFY! */")

0 commit comments

Comments
 (0)