blob: 3ce35f1c2ae52b69827f212c044489ee222c2a17 [file] [log] [blame]
TTornblom99f0be22019-12-17 16:22:38 +01001#-------------------------------------------------------------------------------
2# Copyright (c) 2020, Arm Limited. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7
8if(_IARARM_CMAKE_LOADED_TFM)
9 return()
10endif()
11set(_IARARM_CMAKE_LOADED_TFM TRUE)
12
13get_filename_component(_CMAKE_C_TOOLCHAIN_LOCATION "${CMAKE_C_COMPILER}" PATH)
14get_filename_component(_CMAKE_CXX_TOOLCHAIN_LOCATION "${CMAKE_CXX_COMPILER}" PATH)
15
16set(CMAKE_EXECUTABLE_SUFFIX ".axf")
17
18find_program(CMAKE_IARARM_LINKER ilinkarm HINTS "${_CMAKE_C_TOOLCHAIN_LOCATION}" "${_CMAKE_CXX_TOOLCHAIN_LOCATION}" )
19find_program(CMAKE_IARARM_AR iarchive HINTS "${_CMAKE_C_TOOLCHAIN_LOCATION}" "${_CMAKE_CXX_TOOLCHAIN_LOCATION}" )
20find_program(CMAKE_IARARM_IELFTOOL ielftool HINTS "${_CMAKE_C_TOOLCHAIN_LOCATION}" "${_CMAKE_CXX_TOOLCHAIN_LOCATION}" )
21
22set(CMAKE_LINKER "${CMAKE_IARARM_LINKER}" CACHE FILEPATH "The IAR linker" FORCE)
23mark_as_advanced(CMAKE_IARARM_LINKER)
24set(CMAKE_AR "${CMAKE_IARARM_AR}" CACHE FILEPATH "The IAR archiver" FORCE)
25mark_as_advanced(CMAKE_IARARM_AR)
26
27macro(__compiler_iararm lang)
28 if(NOT CMAKE_${lang}_FLAGS_SET)
29 set(CMAKE_${lang}_FLAGS_SET TRUE)
30 set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-f ")
31 string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
32
33 if (NOT ${lang} STREQUAL "ASM")
34 string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " --debug -On")
35 string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Ohz -DNDEBUG")
36 string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -Ohs -DNDEBUG")
37 string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -Ohs --debug")
TTornblom54507b12020-06-04 13:11:16 +020038 set(CMAKE_DEPFILE_FLAGS_${lang} "--dependencies=ins <DEPFILE>")
TTornblom99f0be22019-12-17 16:22:38 +010039 endif()
40
41 set(CMAKE_${lang}_OUTPUT_EXTENSION ".o")
42 set(CMAKE_${lang}_OUTPUT_EXTENSION_REPLACE 1)
43 set(CMAKE_STATIC_LIBRARY_PREFIX_${lang} "")
44 set(CMAKE_STATIC_LIBRARY_SUFFIX_${lang} ".a")
45
46 set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1)
47 set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-f ")
48
49 set(CMAKE_${lang}_LINK_EXECUTABLE "<CMAKE_LINKER> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -o <TARGET> --map <TARGET_BASE>.map")
50 set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "<CMAKE_AR> --create <TARGET> <LINK_FLAGS> <OBJECTS>")
51 set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> --preprocess=n <PREPROCESSED_SOURCE> <SOURCE> ")
52 set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> <SOURCE> -la <ASSEMBLY_SOURCE>")
53
TTornblom99f0be22019-12-17 16:22:38 +010054 endif()
55endmacro()