mirror of
https://github.com/espressif/esp-idf
synced 2025-03-10 09:39:10 -04:00
cmake: Add toolchain version check
This commit is contained in:
parent
99a2359c5c
commit
35f521afb6
@ -32,6 +32,13 @@ include(GetGitRevisionDescription)
|
||||
include(utilities)
|
||||
include(components)
|
||||
include(kconfig)
|
||||
include(crosstool_version_check)
|
||||
|
||||
#
|
||||
# Warn if the toolchain version doesn't match
|
||||
#
|
||||
gcc_version_check("5.2.0")
|
||||
crosstool_version_check("1.22.0-80-g6c4433a")
|
||||
|
||||
#
|
||||
# Configure optional variables
|
||||
@ -76,3 +83,4 @@ finish_component_registration()
|
||||
if(NOT BOOTLOADER_BUILD)
|
||||
include(bootloader_subproject)
|
||||
endif()
|
||||
|
||||
|
31
tools/cmake/crosstool_version_check.cmake
Normal file
31
tools/cmake/crosstool_version_check.cmake
Normal file
@ -0,0 +1,31 @@
|
||||
# Function to check the toolchain used the expected version
|
||||
# of crosstool, and warn otherwise
|
||||
|
||||
set(ctng_version_warning "Check Getting Started documentation or proceed at own risk.")
|
||||
|
||||
function(gcc_version_check expected_gcc_version)
|
||||
if(NOT "${CMAKE_C_COMPILER_VERSION}" STREQUAL "${expected_gcc_version}")
|
||||
message(WARNING "Xtensa toolchain ${CMAKE_C_COMPILER} version ${CMAKE_C_COMPILER_VERSION} is not the supported version ${expected_gcc_version}. ${ctng_version_warning}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(crosstool_version_check expected_ctng_version)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_C_COMPILER} -v
|
||||
ERROR_VARIABLE toolchain_stderr
|
||||
OUTPUT_QUIET)
|
||||
|
||||
string(REGEX MATCH "crosstool-ng-[0-9a-g\\.-]+" ctng_version "${toolchain_stderr}")
|
||||
string(REPLACE "crosstool-ng-" "" ctng_version "${ctng_version}")
|
||||
# We use FIND to match version instead of STREQUAL because some toolchains are built
|
||||
# with longer git hash strings than others. This will match any version which starts with
|
||||
# the expected version string.
|
||||
string(FIND "${ctng_version}" "${expected_ctng_version}" found_expected_version)
|
||||
if(NOT ctng_version)
|
||||
message(WARNING "Xtensa toolchain ${CMAKE_C_COMPILER} does not appear to be built with crosstool-ng. "
|
||||
"${ctng_version_warning}")
|
||||
elseif(found_expected_version EQUAL -1)
|
||||
message(WARNING "Xtensa toolchain ${CMAKE_C_COMPILER} crosstool-ng version ${ctng_version} "
|
||||
"doesn't match supported version ${expected_ctng_version}. ${ctng_version_warning}")
|
||||
endif()
|
||||
endfunction()
|
Loading…
x
Reference in New Issue
Block a user