Skip to content

Commit 878c8f2

Browse files
committed
enable IAR CState with IAR_CSTAT=1
1 parent ac37176 commit 878c8f2

File tree

3 files changed

+274
-17
lines changed

3 files changed

+274
-17
lines changed

examples/build_system/cmake/toolchain/arm_iar.cmake

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,12 @@ find_program(CMAKE_SIZE size)
1414
find_program(CMAKE_OBJCOPY ielftool)
1515
find_program(CMAKE_OBJDUMP iefdumparm)
1616

17+
find_program(CMAKE_IAR_CSTAT icstat)
18+
find_program(CMAKE_IAR_CHECKS ichecks)
19+
find_program(CMAKE_IAR_REPORT ireport)
20+
21+
if (IAR_CSTAT)
22+
set(CMAKE_C_ICSTAT ${CMAKE_IAR_CSTAT} --checks=${CMAKE_CURRENT_LIST_DIR}/cstat_sel_checks.txt --db=${CMAKE_BINARY_DIR}/cstat.db --sarif_dir=${CMAKE_BINARY_DIR}/cstat_sarif)
23+
endif ()
24+
1725
include(${CMAKE_CURRENT_LIST_DIR}/common.cmake)
Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
1+
# IAR C-STAT Checks Manifest Handler V2.7.5.562
2+
#
3+
MISRAC2012-Dir-4.3
4+
MISRAC2012-Dir-4.7_c
5+
MISRAC2012-Dir-4.10
6+
MISRAC2012-Dir-4.11_a
7+
MISRAC2012-Dir-4.11_b
8+
MISRAC2012-Dir-4.11_c
9+
MISRAC2012-Dir-4.11_d
10+
MISRAC2012-Dir-4.11_e
11+
MISRAC2012-Dir-4.11_f
12+
MISRAC2012-Dir-4.11_g
13+
MISRAC2012-Dir-4.11_h
14+
MISRAC2012-Dir-4.11_i
15+
MISRAC2012-Dir-4.12
16+
MISRAC2012-Dir-4.14_a
17+
MISRAC2012-Dir-4.14_b
18+
MISRAC2012-Dir-4.14_c
19+
MISRAC2012-Dir-4.14_d
20+
MISRAC2012-Dir-4.14_e
21+
MISRAC2012-Dir-4.14_f
22+
MISRAC2012-Dir-4.14_g
23+
MISRAC2012-Dir-4.14_h
24+
MISRAC2012-Dir-4.14_i
25+
MISRAC2012-Dir-4.14_j
26+
MISRAC2012-Dir-4.14_l
27+
MISRAC2012-Dir-4.14_m
28+
MISRAC2012-Dir-4.15
29+
MISRAC2012-Rule-1.3_a
30+
MISRAC2012-Rule-1.3_b
31+
MISRAC2012-Rule-1.3_c
32+
MISRAC2012-Rule-1.3_d
33+
MISRAC2012-Rule-1.3_e
34+
MISRAC2012-Rule-1.3_f
35+
MISRAC2012-Rule-1.3_g
36+
MISRAC2012-Rule-1.3_h
37+
MISRAC2012-Rule-1.3_i
38+
MISRAC2012-Rule-1.3_j
39+
MISRAC2012-Rule-1.3_k
40+
MISRAC2012-Rule-1.3_l
41+
MISRAC2012-Rule-1.3_m
42+
MISRAC2012-Rule-1.3_n
43+
MISRAC2012-Rule-1.3_o
44+
MISRAC2012-Rule-1.3_p
45+
MISRAC2012-Rule-1.3_q
46+
MISRAC2012-Rule-1.3_r
47+
MISRAC2012-Rule-1.3_s
48+
MISRAC2012-Rule-1.3_t
49+
MISRAC2012-Rule-1.3_u
50+
MISRAC2012-Rule-1.3_v
51+
MISRAC2012-Rule-1.4
52+
MISRAC2012-Rule-1.5_b
53+
MISRAC2012-Rule-1.5_c
54+
MISRAC2012-Rule-1.5_d
55+
MISRAC2012-Rule-1.5_e
56+
MISRAC2012-Rule-1.5_f
57+
MISRAC2012-Rule-1.5_g
58+
MISRAC2012-Rule-2.1_a
59+
MISRAC2012-Rule-2.1_b
60+
MISRAC2012-Rule-2.2_a
61+
MISRAC2012-Rule-2.2_b
62+
MISRAC2012-Rule-2.2_c
63+
MISRAC2012-Rule-3.1
64+
MISRAC2012-Rule-3.2
65+
MISRAC2012-Rule-5.1
66+
MISRAC2012-Rule-5.2_c89
67+
MISRAC2012-Rule-5.2_c99
68+
MISRAC2012-Rule-5.3_c89
69+
MISRAC2012-Rule-5.3_c99
70+
MISRAC2012-Rule-5.4_c89
71+
MISRAC2012-Rule-5.4_c99
72+
MISRAC2012-Rule-5.5_c89
73+
MISRAC2012-Rule-5.5_c99
74+
MISRAC2012-Rule-5.6
75+
MISRAC2012-Rule-5.7
76+
MISRAC2012-Rule-5.8
77+
MISRAC2012-Rule-6.1
78+
MISRAC2012-Rule-6.2
79+
MISRAC2012-Rule-6.3
80+
MISRAC2012-Rule-7.1
81+
MISRAC2012-Rule-7.2
82+
MISRAC2012-Rule-7.3
83+
MISRAC2012-Rule-7.4_a
84+
MISRAC2012-Rule-7.4_b
85+
MISRAC2012-Rule-7.5
86+
MISRAC2012-Rule-7.6
87+
MISRAC2012-Rule-8.1
88+
MISRAC2012-Rule-8.2_a
89+
MISRAC2012-Rule-8.2_b
90+
MISRAC2012-Rule-8.3
91+
MISRAC2012-Rule-8.4
92+
MISRAC2012-Rule-8.5_a
93+
MISRAC2012-Rule-8.5_b
94+
MISRAC2012-Rule-8.10
95+
MISRAC2012-Rule-8.12
96+
MISRAC2012-Rule-8.14
97+
MISRAC2012-Rule-8.15
98+
MISRAC2012-Rule-9.1_a
99+
MISRAC2012-Rule-9.1_b
100+
MISRAC2012-Rule-9.1_d
101+
MISRAC2012-Rule-9.1_e
102+
MISRAC2012-Rule-9.2
103+
MISRAC2012-Rule-9.3
104+
MISRAC2012-Rule-9.4
105+
MISRAC2012-Rule-9.5_a
106+
MISRAC2012-Rule-9.5_b
107+
MISRAC2012-Rule-9.6
108+
MISRAC2012-Rule-9.7
109+
MISRAC2012-Rule-10.1_R2
110+
MISRAC2012-Rule-10.1_R3
111+
MISRAC2012-Rule-10.1_R4
112+
MISRAC2012-Rule-10.1_R5
113+
MISRAC2012-Rule-10.1_R6
114+
MISRAC2012-Rule-10.1_R7
115+
MISRAC2012-Rule-10.1_R8
116+
MISRAC2012-Rule-10.1_R10
117+
MISRAC2012-Rule-10.2
118+
MISRAC2012-Rule-10.3
119+
MISRAC2012-Rule-10.4_a
120+
MISRAC2012-Rule-10.4_b
121+
MISRAC2012-Rule-10.6
122+
MISRAC2012-Rule-10.7
123+
MISRAC2012-Rule-10.8
124+
MISRAC2012-Rule-11.1
125+
MISRAC2012-Rule-11.2
126+
MISRAC2012-Rule-11.3
127+
MISRAC2012-Rule-11.6
128+
MISRAC2012-Rule-11.7
129+
MISRAC2012-Rule-11.8
130+
MISRAC2012-Rule-11.9
131+
MISRAC2012-Rule-11.10
132+
MISRAC2012-Rule-12.2
133+
MISRAC2012-Rule-12.5
134+
MISRAC2012-Rule-12.6
135+
MISRAC2012-Rule-13.1
136+
MISRAC2012-Rule-13.2_a
137+
MISRAC2012-Rule-13.2_b
138+
MISRAC2012-Rule-13.2_c
139+
MISRAC2012-Rule-13.5
140+
MISRAC2012-Rule-13.6
141+
MISRAC2012-Rule-14.1_a
142+
MISRAC2012-Rule-14.1_b
143+
MISRAC2012-Rule-14.2
144+
MISRAC2012-Rule-14.3_a
145+
MISRAC2012-Rule-14.3_b
146+
MISRAC2012-Rule-14.4_a
147+
MISRAC2012-Rule-14.4_b
148+
MISRAC2012-Rule-14.4_c
149+
MISRAC2012-Rule-14.4_d
150+
MISRAC2012-Rule-15.2
151+
MISRAC2012-Rule-15.3
152+
MISRAC2012-Rule-15.6_a
153+
MISRAC2012-Rule-15.6_b
154+
MISRAC2012-Rule-15.6_c
155+
MISRAC2012-Rule-15.6_d
156+
MISRAC2012-Rule-15.6_e
157+
MISRAC2012-Rule-15.7
158+
MISRAC2012-Rule-16.1
159+
MISRAC2012-Rule-16.2
160+
MISRAC2012-Rule-16.3
161+
MISRAC2012-Rule-16.4
162+
MISRAC2012-Rule-16.5
163+
MISRAC2012-Rule-16.6
164+
MISRAC2012-Rule-16.7
165+
MISRAC2012-Rule-17.1
166+
MISRAC2012-Rule-17.2_a
167+
MISRAC2012-Rule-17.2_b
168+
MISRAC2012-Rule-17.3
169+
MISRAC2012-Rule-17.4
170+
MISRAC2012-Rule-17.5
171+
MISRAC2012-Rule-17.6
172+
MISRAC2012-Rule-17.7
173+
MISRAC2012-Rule-17.13
174+
MISRAC2012-Rule-18.1_a
175+
MISRAC2012-Rule-18.1_b
176+
MISRAC2012-Rule-18.1_c
177+
MISRAC2012-Rule-18.1_d
178+
MISRAC2012-Rule-18.2
179+
MISRAC2012-Rule-18.3
180+
MISRAC2012-Rule-18.4
181+
MISRAC2012-Rule-18.6_a
182+
MISRAC2012-Rule-18.6_b
183+
MISRAC2012-Rule-18.6_c
184+
MISRAC2012-Rule-18.6_d
185+
MISRAC2012-Rule-18.7
186+
MISRAC2012-Rule-18.8
187+
MISRAC2012-Rule-18.9
188+
MISRAC2012-Rule-18.10
189+
MISRAC2012-Rule-19.1
190+
MISRAC2012-Rule-20.2
191+
MISRAC2012-Rule-20.4_c89
192+
MISRAC2012-Rule-20.4_c99
193+
MISRAC2012-Rule-20.6_a
194+
MISRAC2012-Rule-20.6_b
195+
MISRAC2012-Rule-20.7
196+
MISRAC2012-Rule-21.1
197+
MISRAC2012-Rule-21.2
198+
MISRAC2012-Rule-21.3
199+
MISRAC2012-Rule-21.4
200+
MISRAC2012-Rule-21.5
201+
MISRAC2012-Rule-21.6
202+
MISRAC2012-Rule-21.7
203+
MISRAC2012-Rule-21.8
204+
MISRAC2012-Rule-21.9
205+
MISRAC2012-Rule-21.10
206+
MISRAC2012-Rule-21.12_a
207+
MISRAC2012-Rule-21.12_b
208+
MISRAC2012-Rule-21.12_c
209+
MISRAC2012-Rule-21.13
210+
MISRAC2012-Rule-21.14
211+
MISRAC2012-Rule-21.15
212+
MISRAC2012-Rule-21.16
213+
MISRAC2012-Rule-21.17_a
214+
MISRAC2012-Rule-21.17_b
215+
MISRAC2012-Rule-21.17_c
216+
MISRAC2012-Rule-21.17_d
217+
MISRAC2012-Rule-21.17_e
218+
MISRAC2012-Rule-21.17_f
219+
MISRAC2012-Rule-21.18_a
220+
MISRAC2012-Rule-21.18_b
221+
MISRAC2012-Rule-21.19_a
222+
MISRAC2012-Rule-21.19_b
223+
MISRAC2012-Rule-21.20
224+
MISRAC2012-Rule-21.21
225+
MISRAC2012-Rule-21.22
226+
MISRAC2012-Rule-21.23
227+
MISRAC2012-Rule-21.24
228+
MISRAC2012-Rule-21.25
229+
MISRAC2012-Rule-22.1_a
230+
MISRAC2012-Rule-22.1_b
231+
MISRAC2012-Rule-22.2_a
232+
MISRAC2012-Rule-22.2_b
233+
MISRAC2012-Rule-22.2_c
234+
MISRAC2012-Rule-22.3
235+
MISRAC2012-Rule-22.4
236+
MISRAC2012-Rule-22.5_a
237+
MISRAC2012-Rule-22.5_b
238+
MISRAC2012-Rule-22.6
239+
MISRAC2012-Rule-22.7_a
240+
MISRAC2012-Rule-22.7_b
241+
MISRAC2012-Rule-22.8
242+
MISRAC2012-Rule-22.9
243+
MISRAC2012-Rule-22.10
244+
MISRAC2012-Rule-23.2
245+
MISRAC2012-Rule-23.4
246+
MISRAC2012-Rule-23.6
247+
MISRAC2012-Rule-23.8

hw/bsp/family_support.cmake

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,10 @@ function(family_configure_common TARGET RTOS)
238238
if (NOT RTOS STREQUAL zephyr)
239239
if (NOT TARGET ${BOARD_TARGET})
240240
family_add_board(${BOARD_TARGET})
241-
set_target_properties(${BOARD_TARGET} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
242-
set_target_properties(${BOARD_TARGET} PROPERTIES SKIP_LINTING ON)
241+
set_target_properties(${BOARD_TARGET} PROPERTIES
242+
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
243+
SKIP_LINTING ON # need cmake 4.2
244+
)
243245
endif ()
244246
target_link_libraries(${TARGET} PUBLIC ${BOARD_TARGET})
245247
endif ()
@@ -273,9 +275,7 @@ function(family_configure_common TARGET RTOS)
273275
target_sources(${TARGET} PUBLIC ${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c)
274276
target_include_directories(${TARGET} PUBLIC ${TOP}/lib/SEGGER_RTT/RTT)
275277
# target_compile_definitions(${TARGET} PUBLIC SEGGER_RTT_MODE_DEFAULT=SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL)
276-
set_source_files_properties(${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c PROPERTIES
277-
SKIP_LINTING ON
278-
)
278+
set_source_files_properties(${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c PROPERTIES SKIP_LINTING ON)
279279
endif ()
280280
else ()
281281
target_compile_definitions(${TARGET} PUBLIC LOGGER_UART)
@@ -291,18 +291,20 @@ function(family_configure_common TARGET RTOS)
291291
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
292292
target_link_options(${TARGET} PUBLIC "LINKER:--map=$<TARGET_FILE:${TARGET}>.map")
293293

294-
# link time analysis with C-STAT
295-
# add_custom_command(TARGET ${TARGET} POST_BUILD
296-
# COMMAND ${CMAKE_C_ICSTAT}
297-
# --db=${CMAKE_BINARY_DIR}/cstat.db
298-
# link_analyze -- ${CMAKE_LINKER} $<TARGET_OBJECTS:${TARGET}>
299-
# COMMAND_EXPAND_LISTS
300-
# )
301-
# # generate C-STAT report
302-
# add_custom_command(TARGET ${TARGET} POST_BUILD
303-
# COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/cstat_report
304-
# COMMAND ireport --db=${CMAKE_BINARY_DIR}/cstat.db --full --project ${TARGET} --output ${CMAKE_CURRENT_BINARY_DIR}/cstat_report/${TARGET}.html
305-
# )
294+
if (IAR_CSTAT)
295+
# link time analysis with C-STAT
296+
add_custom_command(TARGET ${TARGET} POST_BUILD
297+
COMMAND ${CMAKE_C_ICSTAT}
298+
--db=${CMAKE_BINARY_DIR}/cstat.db
299+
link_analyze -- ${CMAKE_LINKER} $<TARGET_OBJECTS:${TARGET}>
300+
COMMAND_EXPAND_LISTS
301+
)
302+
# generate C-STAT report
303+
add_custom_command(TARGET ${TARGET} POST_BUILD
304+
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/cstat_report
305+
COMMAND ireport --db=${CMAKE_BINARY_DIR}/cstat.db --full --project ${TARGET} --output ${CMAKE_CURRENT_BINARY_DIR}/cstat_report/index.html
306+
)
307+
endif ()
306308
endif ()
307309

308310
# run size after build

0 commit comments

Comments
 (0)