d5754d3d0d
The Zephyr SDK distributes a device-tree-compiler with version "1.4.6-dirty". As of recently, we have started using flags that are only present in recent versions of dtc. Like the flag "-E unit_address_vs_reg". Users that are opting out of using the Zephyr SDK's host tools are reporting obscure error messages. To avoid this we use an appropriate error message when the detected version is unsupported. Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
54 lines
1.5 KiB
CMake
54 lines
1.5 KiB
CMake
include(${ZEPHYR_BASE}/cmake/host-tools-zephyr.cmake)
|
|
|
|
# Search for the must-have program dtc on PATH and in
|
|
# TOOLCHAIN_HOME. Usually DTC will be provided by an SDK, but for
|
|
# SDK-less projects like gnuarmemb, it is up to the user to install
|
|
# dtc.
|
|
find_program(
|
|
DTC
|
|
dtc
|
|
)
|
|
if(${DTC} STREQUAL DTC-NOTFOUND)
|
|
message(FATAL_ERROR "Unable to find dtc")
|
|
endif()
|
|
|
|
# Parse the 'dtc --version' and make sure it is at least MIN_DTC_VERSION
|
|
set(MIN_DTC_VERSION 1.4.6)
|
|
execute_process(
|
|
COMMAND
|
|
${DTC} --version
|
|
OUTPUT_VARIABLE dtc_version_output
|
|
)
|
|
string(REGEX MATCH "Version: DTC ([0-9]+\.[0-9]+.[0-9]+).*" out_var ${dtc_version_output})
|
|
if(${CMAKE_MATCH_1} VERSION_LESS ${MIN_DTC_VERSION})
|
|
assert(0 "The detected dtc version is unsupported. \n\
|
|
The version was found to be ${CMAKE_MATCH_1} \n\
|
|
But the minimum supported version is ${MIN_DTC_VERSION} \n\
|
|
See https://docs.zephyrproject.org/latest/getting_started/getting_started.html \n\
|
|
for how to use the SDK's dtc alongside a custom toolchain."
|
|
)
|
|
endif()
|
|
|
|
find_program(
|
|
GPERF
|
|
gperf
|
|
)
|
|
if(${GPERF} STREQUAL GPERF-NOTFOUND)
|
|
message(FATAL_ERROR "Unable to find gperf")
|
|
endif()
|
|
|
|
# openocd is an optional dependency
|
|
find_program(
|
|
OPENOCD
|
|
openocd
|
|
)
|
|
|
|
# bossac is an optional dependency
|
|
find_program(
|
|
BOSSAC
|
|
bossac
|
|
)
|
|
|
|
# TODO: Should we instead find one qemu binary for each ARCH?
|
|
# TODO: This will probably need to be re-organized when there exists more than one SDK.
|