You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
# 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()
|
|
|