51 lines
1.3 KiB
CMake
51 lines
1.3 KiB
CMake
|
# 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()
|