|  | # SPDX-License-Identifier: Apache-2.0 | 
|  | # | 
|  | # Copyright (c) 2022, Nordic Semiconductor ASA | 
|  |  | 
|  | # FindDTC module for locating devicetree compiler, DTC. | 
|  | # | 
|  | # The module defines the following variables: | 
|  | # | 
|  | # 'DTC' | 
|  | # Path to devicetree compiler, dtc. | 
|  | # Set to 'DTC-NOTFOUND' if dtc was not found. | 
|  | # | 
|  | # 'Dtc_FOUND', 'DTC_FOUND' | 
|  | # True if the devicetree compiler, dtc, was found. | 
|  | # | 
|  | # 'DTC_VERSION_STRING' | 
|  | # The version of devicetree compiler, dtc. | 
|  |  | 
|  | find_program( | 
|  | DTC | 
|  | dtc | 
|  | ) | 
|  |  | 
|  | if(DTC) | 
|  | # Parse the 'dtc --version' output to find the installed version. | 
|  | execute_process( | 
|  | COMMAND | 
|  | ${DTC} --version | 
|  | OUTPUT_VARIABLE dtc_version_output | 
|  | ERROR_VARIABLE  dtc_error_output | 
|  | RESULT_VARIABLE dtc_status | 
|  | ) | 
|  |  | 
|  | set(DTC_VERSION_STRING) | 
|  | if(${dtc_status} EQUAL 0) | 
|  | string(REGEX MATCH "Version: DTC v?([0-9]+[.][0-9]+[.][0-9]+).*" out_var ${dtc_version_output}) | 
|  | set(DTC_VERSION_STRING ${CMAKE_MATCH_1}) | 
|  | endif() | 
|  | endif() | 
|  |  | 
|  | find_package_handle_standard_args(Dtc | 
|  | REQUIRED_VARS DTC | 
|  | VERSION_VAR DTC_VERSION_STRING | 
|  | ) | 
|  |  | 
|  | if(NOT Dtc_FOUND) | 
|  | # DTC was found but version requirement is not met, or dtc was not working. | 
|  | # Treat it as DTC was never found by resetting the result from `find_program()` | 
|  | set(DTC DTC-NOTFOUND CACHE FILEPATH "Path to a program" FORCE) | 
|  | endif() |