@@ -214,24 +214,53 @@ endif()
214214# 1) Using EXTRA_CFLAGS which is applied regardless of kconfig choice, or
215215# 2) Rely on override support being implemented by your toolchain_cc_optimize_*()
216216#
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 ()
222246
223247# From kconfig choice, pick the actual OPTIMIZATION_FLAG to use.
224248# Kconfig choice ensures only one of these CONFIG_*_OPTIMIZATIONS is set.
225249if (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} )
227252elseif (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} )
229255elseif (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} )
231258elseif (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} )
233261elseif (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} )
235264else ()
236265 message (FATAL_ERROR
237266 "Unreachable code. Expected optimization level to have been chosen. See Kconfig.zephyr" )
@@ -245,9 +274,9 @@ SOC_* symbol.")
245274endif ()
246275
247276# 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 } >)
251280
252281if (CONFIG_LTO)
253282 zephyr_compile_options($<TARGET_PROPERTY:compiler,optimization_lto>)
0 commit comments