Browse Source

Merge topic 'iar-find-linker'

cd9dd4cf8e IAR: decouple linker location from toolkit's bin dir

Acked-by: Kitware Robot <[email protected]>
Merge-request: !10201
Brad King 10 months ago
parent
commit
76155c2ce6
1 changed files with 6 additions and 6 deletions
  1. 6 6
      Modules/CMakeFindBinUtils.cmake

+ 6 - 6
Modules/CMakeFindBinUtils.cmake

@@ -111,10 +111,11 @@ elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" MATCHES "^x(Open)?W
   list(APPEND _CMAKE_TOOL_VARS LINKER AR)
 
 elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" MATCHES "^xIAR$")
-  # Get the architecture from the IAR compiler parent directory
-  get_filename_component(__iar_bin_dir "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
-  get_filename_component(__iar_toolkit_dir "${__iar_bin_dir}" DIRECTORY)
-  get_filename_component(__iar_arch_id "${__iar_toolkit_dir}" NAME)
+  # Detect the `<lang>` compiler name
+  get_filename_component(__iar_selected_compiler "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" NAME)
+  # Strip out the `icc`,`iasm`,`a` prefixes and other `_suffixes leaving only the `<target>`
+  string(TOLOWER "${__iar_selected_compiler}" __iar_arch_id)
+  string(REGEX REPLACE "^x(icc|iasm|a)|(_.*)$" "" __iar_arch_id "x${__iar_arch_id}")
   # IAR Archive Tool
   set(_CMAKE_AR_NAMES
     "iarchive" "iarchive.exe"
@@ -147,8 +148,7 @@ elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" MATCHES "^xIAR$")
     "isymexport" "isymexport.exe"
   )
   list(APPEND _CMAKE_TOOL_VARS AR LINKER IAR_ELFDUMP IAR_ELFTOOL IAR_EXE2OBJ IAR_OBJMANIP IAR_SYMEXPORT)
-  unset(__iar_bin_dir)
-  unset(__iar_toolkit_dir)
+  unset(__iar_selected_compiler)
   unset(__iar_arch_id)
 
 # in all other cases search for ar, ranlib, etc.