@@ -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