2 years ago

#55186

test-img

Benjamin Hammond

How do I configure cmake to work with rsp files when using IAR compiler

When using the IAR compiler I get an error when creating a library. This uses "iarchive.exe" in the IAR bin directory to create a library file. The issue occurs when the number of object files exceeds the Windows10 command line limit (about 8000 bytes).

When the limit is exceeded CMake creates a ".rsp" file and the response file has a 3 bytes (Byte Order Mark) at the start of the file.

I am using a licensed version of the IAR compiler. The tools are version 7.2.

set(CMAKE_SYSTEM_NAME Generic)

set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

set(CMAKE_SYSTEM_PROCESSOR arm)

   set(IAR_INSTALL_DIR "C:/Program Files (x86)/IAR Systems/Embedded 
   Workbench 7.2")

   architectures
   set(TOOLKIT_DIR "${IAR_INSTALL_DIR}/${CMAKE_SYSTEM_PROCESSOR}")

   if(UNIX)
     set(ENV{PATH} "${TOOLKIT_DIR}/bin:$ENV{PATH}")
   else()
     set(ENV{PATH} "${TOOLKIT_DIR}/bin;$ENV{PATH}")
   endif()

   Compiler and Assembler
   set(CMAKE_C_COMPILER    "icc${CMAKE_SYSTEM_PROCESSOR}")
   set(CMAKE_CXX_COMPILER  "icc${CMAKE_SYSTEM_PROCESSOR}")
   set(CMAKE_ASM_COMPILER "iasm${CMAKE_SYSTEM_PROCESSOR}")

SET(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 0)

To configure cmake


cmake -H.. -B. -G "Ninja Multi-Config" -DCMAKE_TOOLCHAIN_FILE=..\iar-toolchain.cmake

I have also tried:

cmake -H.. -B. -G "NMake Makefiles" -DCMAKE_TOOLCHAIN_FILE=..\iar-toolchain.cmake

Below is the error message generated during the build.


C:\Firmware\SRFN\build>cmake --build . --target SrfnDcu
[1/20] Linking C static library Debug\libpsp_dcu_k64f120m.a
FAILED: Debug/libpsp_dcu_k64f120m.a
cmd.exe /C "cd . && C:\PROGRA~2\IARSYS~1\EMBEDD~1.2\arm\bin\iarchive.exe Debug\libpsp_dcu_k64f120m.a --create  -f CMakeFiles\psp_dcu_k64f120m.Debug.rsp && cd ."
Fatal error[La001]: could not open file "C:\Firmware\SRFN\build\CMakeFiles\p
          sp_dcu_k64f120m.dir\Debug\DCU\OS\mqx\source\psp\cortex_m\compiler\iar
          \comp.c.o"
Fatal error detected, aborting.

One solution to the problem was to use a newer version of "iarchive.exe" that was in IAR Version 8.2.

Basically is seems that IAR updated "iarchive.exe" to support this. 

cmake

encoding

iar

0 Answers

Your Answer

Accepted video resources