@@ -214,24 +214,53 @@ endif()
214
214
# 1) Using EXTRA_CFLAGS which is applied regardless of kconfig choice, or
215
215
# 2) Rely on override support being implemented by your toolchain_cc_optimize_*()
216
216
#
217
- get_property (OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG TARGET compiler PROPERTY no_optimization)
218
- get_property (OPTIMIZE_FOR_DEBUG_FLAG TARGET compiler PROPERTY optimization_debug)
219
- get_property (OPTIMIZE_FOR_SPEED_FLAG TARGET compiler PROPERTY optimization_speed)
220
- get_property (OPTIMIZE_FOR_SIZE_FLAG TARGET compiler PROPERTY optimization_size)
221
- get_property (OPTIMIZE_FOR_SIZE_AGGRESSIVE_FLAG TARGET compiler PROPERTY optimization_size_aggressive)
217
+ get_property (COMPILER_OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG TARGET compiler PROPERTY no_optimization)
218
+ get_property (COMPILER_OPTIMIZE_FOR_DEBUG_FLAG TARGET compiler PROPERTY optimization_debug)
219
+ get_property (COMPILER_OPTIMIZE_FOR_SPEED_FLAG TARGET compiler PROPERTY optimization_speed)
220
+ get_property (COMPILER_OPTIMIZE_FOR_SIZE_FLAG TARGET compiler PROPERTY optimization_size)
221
+ get_property (COMPILER_OPTIMIZE_FOR_SIZE_AGGRESSIVE_FLAG TARGET compiler PROPERTY optimization_size_aggressive)
222
+
223
+ get_property (ASM_OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG TARGET asm PROPERTY no_optimization)
224
+ get_property (ASM_OPTIMIZE_FOR_DEBUG_FLAG TARGET asm PROPERTY optimization_debug)
225
+ get_property (ASM_OPTIMIZE_FOR_SPEED_FLAG TARGET asm PROPERTY optimization_speed)
226
+ get_property (ASM_OPTIMIZE_FOR_SIZE_FLAG TARGET asm PROPERTY optimization_size)
227
+ get_property (ASM_OPTIMIZE_FOR_SIZE_AGGRESSIVE_FLAG TARGET asm PROPERTY optimization_size_aggressive)
228
+
229
+ # Let the assembler inherit the optimization flags of the compiler if it is
230
+ # not set explicitly.
231
+ if (NOT ASM_OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG)
232
+ set (ASM_OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG ${COMPILER_OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG} )
233
+ endif ()
234
+ if (NOT ASM_OPTIMIZE_FOR_DEBUG_FLAG)
235
+ set (ASM_OPTIMIZE_FOR_DEBUG_FLAG ${COMPILER_OPTIMIZE_FOR_DEBUG_FLAG} )
236
+ endif ()
237
+ if (NOT ASM_OPTIMIZE_FOR_SPEED_FLAG)
238
+ set (ASM_OPTIMIZE_FOR_SPEED_FLAG ${COMPILER_OPTIMIZE_FOR_SPEED_FLAG} )
239
+ endif ()
240
+ if (NOT ASM_OPTIMIZE_FOR_SIZE_FLAG)
241
+ set (ASM_OPTIMIZE_FOR_SIZE_FLAG ${COMPILER_OPTIMIZE_FOR_SIZE_FLAG} )
242
+ endif ()
243
+ if (NOT ASM_OPTIMIZE_FOR_SIZE_AGGRESSIVE_FLAG)
244
+ set (ASM_OPTIMIZE_FOR_SIZE_AGGRESSIVE_FLAG ${COMPILER_OPTIMIZE_FOR_SIZE_AGGRESSIVE_FLAG} )
245
+ endif ()
222
246
223
247
# From kconfig choice, pick the actual OPTIMIZATION_FLAG to use.
224
248
# Kconfig choice ensures only one of these CONFIG_*_OPTIMIZATIONS is set.
225
249
if (CONFIG_NO_OPTIMIZATIONS)
226
- set (OPTIMIZATION_FLAG ${OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG} )
250
+ set (COMPILER_OPTIMIZATION_FLAG ${COMPILER_OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG} )
251
+ set (ASM_OPTIMIZATION_FLAG ${ASM_OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG} )
227
252
elseif (CONFIG_DEBUG_OPTIMIZATIONS)
228
- set (OPTIMIZATION_FLAG ${OPTIMIZE_FOR_DEBUG_FLAG} )
253
+ set (COMPILER_OPTIMIZATION_FLAG ${COMPILER_OPTIMIZE_FOR_DEBUG_FLAG} )
254
+ set (ASM_OPTIMIZATION_FLAG ${ASM_OPTIMIZE_FOR_DEBUG_FLAG} )
229
255
elseif (CONFIG_SPEED_OPTIMIZATIONS)
230
- set (OPTIMIZATION_FLAG ${OPTIMIZE_FOR_SPEED_FLAG} )
256
+ set (COMPILER_OPTIMIZATION_FLAG ${COMPILER_OPTIMIZE_FOR_SPEED_FLAG} )
257
+ set (ASM_OPTIMIZATION_FLAG ${ASM_OPTIMIZE_FOR_SPEED_FLAG} )
231
258
elseif (CONFIG_SIZE_OPTIMIZATIONS)
232
- set (OPTIMIZATION_FLAG ${OPTIMIZE_FOR_SIZE_FLAG} ) # Default in kconfig
259
+ set (COMPILER_OPTIMIZATION_FLAG ${COMPILER_OPTIMIZE_FOR_SIZE_FLAG} ) # Default in kconfig
260
+ set (ASM_OPTIMIZATION_FLAG ${ASM_OPTIMIZE_FOR_SIZE_FLAG} )
233
261
elseif (CONFIG_SIZE_OPTIMIZATIONS_AGGRESSIVE)
234
- set (OPTIMIZATION_FLAG ${OPTIMIZE_FOR_SIZE_AGGRESSIVE_FLAG} )
262
+ set (COMPILER_OPTIMIZATION_FLAG ${COMPILER_OPTIMIZE_FOR_SIZE_AGGRESSIVE_FLAG} )
263
+ set (ASM_OPTIMIZATION_FLAG ${ASM_OPTIMIZE_FOR_SIZE_AGGRESSIVE_FLAG} )
235
264
else ()
236
265
message (FATAL_ERROR
237
266
"Unreachable code. Expected optimization level to have been chosen. See Kconfig.zephyr" )
@@ -245,9 +274,9 @@ SOC_* symbol.")
245
274
endif ()
246
275
247
276
# Apply the final optimization flag(s)
248
- zephyr_compile_options($<$<COMPILE_LANGUAGE:ASM>:${OPTIMIZATION_FLAG } >)
249
- zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:${OPTIMIZATION_FLAG } >)
250
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:${OPTIMIZATION_FLAG } >)
277
+ zephyr_compile_options($<$<COMPILE_LANGUAGE:ASM>:${ASM_OPTIMIZATION_FLAG } >)
278
+ zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:${COMPILER_OPTIMIZATION_FLAG } >)
279
+ zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:${COMPILER_OPTIMIZATION_FLAG } >)
251
280
252
281
if (CONFIG_LTO)
253
282
zephyr_compile_options($<TARGET_PROPERTY:compiler,optimization_lto>)
0 commit comments