cmake: armclang version detection
The armclang version detection introduced in #55133 does not correctly detect a valid ARM Compiler (armclang) installation in all situations. When ARM Compiler for Embedded is installed as part of ARM-DS or Keil, then it may report itself in following output: > Product: Arm Development Studio ... <year>.<no> > Component: ARM Compiler x.y(.z) > Tool: armclang [...] > > Target: ... Correct the version extraction by turning each line into a list of strings which can then be looped to find the ARM compiler component to ensure the correct line is used for retrieving the version information. Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
This commit is contained in:
parent
a85ffa8130
commit
25d82ddead
1 changed files with 10 additions and 2 deletions
|
@ -16,8 +16,16 @@ include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
if(CMAKE_C_COMPILER)
|
if(CMAKE_C_COMPILER)
|
||||||
# Parse the 'clang --version' output to find the installed version.
|
# Parse the 'clang --version' output to find the installed version.
|
||||||
execute_process(COMMAND ${CMAKE_C_COMPILER} --target=${triple} --version OUTPUT_VARIABLE ARMCLANG_VERSION)
|
execute_process(COMMAND ${CMAKE_C_COMPILER} --target=${triple} --version OUTPUT_VARIABLE ARMCLANG_VERSION ERROR_QUIET)
|
||||||
string(REGEX REPLACE "[^0-9]*([0-9.]+) .*" "\\1" ARMCLANG_VERSION ${ARMCLANG_VERSION})
|
string(REPLACE "\n" ";" armclang_version_list "${ARMCLANG_VERSION}")
|
||||||
|
set(ARMCLANG_VERSION ARMCLANG_VERSION-NOTFOUND)
|
||||||
|
foreach(line ${armclang_version_list})
|
||||||
|
# Compiler version is either terminated directly, or followed by space and extra build info.
|
||||||
|
if(line MATCHES ".*[aA]rm [cC]ompiler[^0-9]*([0-9.]+)($| .*$)")
|
||||||
|
set(ARMCLANG_VERSION "${CMAKE_MATCH_1}")
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package_handle_standard_args(armclang
|
find_package_handle_standard_args(armclang
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue