| # SPDX-License-Identifier: Apache-2.0 |
| |
| if(ZEPHYR_SDK_HOST_TOOLS) |
| include(${ZEPHYR_BASE}/cmake/toolchain/zephyr/host-tools.cmake) |
| endif() |
| |
| # dtc is an optional dependency |
| find_program( |
| DTC |
| dtc |
| ) |
| |
| if(DTC) |
| # Parse the 'dtc --version' output to find the installed version. |
| set(MIN_DTC_VERSION 1.4.6) |
| execute_process( |
| COMMAND |
| ${DTC} --version |
| OUTPUT_VARIABLE dtc_version_output |
| ERROR_VARIABLE dtc_error_output |
| RESULT_VARIABLE dtc_status |
| ) |
| |
| if(${dtc_status} EQUAL 0) |
| string(REGEX MATCH "Version: DTC ([0-9]+[.][0-9]+[.][0-9]+).*" out_var ${dtc_version_output}) |
| |
| # Since it is optional, an outdated version is not an error. If an |
| # outdated version is discovered, print a warning and proceed as if |
| # DTC were not installed. |
| if(${CMAKE_MATCH_1} VERSION_GREATER ${MIN_DTC_VERSION}) |
| message(STATUS "Found dtc: ${DTC} (found suitable version \"${CMAKE_MATCH_1}\", minimum required is \"${MIN_DTC_VERSION}\")") |
| else() |
| message(WARNING |
| "Could NOT find dtc: Found unsuitable version \"${CMAKE_MATCH_1}\", but required is at least \"${MIN_DTC_VERSION}\" (found ${DTC}). Optional devicetree error checking with dtc will not be performed.") |
| set(DTC DTC-NOTFOUND) |
| endif() |
| else() |
| message(WARNING |
| "Could NOT find working dtc: Found dtc (${DTC}), but failed to load with:\n ${dtc_error_output}") |
| set(DTC DTC-NOTFOUND) |
| endif() |
| endif() |
| |
| # gperf is an optional dependency |
| find_program( |
| GPERF |
| gperf |
| ) |
| |
| # openocd is an optional dependency |
| find_program( |
| OPENOCD |
| openocd |
| ) |
| |
| # bossac is an optional dependency |
| find_program( |
| BOSSAC |
| bossac |
| ) |
| |
| # imgtool is an optional dependency (the build may also fall back to |
| # scripts/imgtool.py in the mcuboot repository if that's present in |
| # some cases) |
| find_program( |
| IMGTOOL |
| imgtool |
| ) |
| |
| # 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. |