34 lines
1.2 KiB
CMake
34 lines
1.2 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# See root CMakeLists.txt for description and expectations of this macro
|
|
#
|
|
# NOTE: Some GNU toolchains break with plain '-Os' or '-Og', but is fixable
|
|
# with tweaks. So allow user to override, via ifndef, the compile flags that
|
|
# CONFIG_{NO,DEBUG,SPEED,SIZE}_OPTIMIZATIONS will cause, yet still leaving the
|
|
# selection logic in kconfig.
|
|
#
|
|
# These macros leaves it up to the root CMakeLists.txt to choose the CMake
|
|
# variable names to store the optimization flags in.
|
|
|
|
macro(toolchain_cc_optimize_for_no_optimizations_flag dest_var_name)
|
|
set_ifndef(${dest_var_name} "-O0")
|
|
endmacro()
|
|
|
|
macro(toolchain_cc_optimize_for_debug_flag dest_var_name)
|
|
# -Og optimisation flag is only supported from gcc 4.8.0 and above.
|
|
# Fall back to using -O0 flag if running an older gcc version.
|
|
if(CMAKE_C_COMPILER_VERSION VERSION_LESS "4.8.0")
|
|
set_ifndef(${dest_var_name} "-O0")
|
|
else()
|
|
set_ifndef(${dest_var_name} "-Og")
|
|
endif()
|
|
endmacro()
|
|
|
|
macro(toolchain_cc_optimize_for_speed_flag dest_var_name)
|
|
set_ifndef(${dest_var_name} "-O2")
|
|
endmacro()
|
|
|
|
macro(toolchain_cc_optimize_for_size_flag dest_var_name)
|
|
set_ifndef(${dest_var_name} "-Os")
|
|
endmacro()
|