We are building a Zephyr project as a freestanding application. Is there a way to compile all Zephyr libraries optimized for size but not optimize our application files? We've found that having optimization disabled gave us the best debugging experience. However, when we build with optimization or even -Og, the generated code exceeds the allocated flash memory. Therefore, we'd like to selectively choose which application files (app PRIVATE) are not optimized.
Here's an incomplete example of our cmakelists file....
set(CONF_FILE "prj.${CMAKE_BUILD_TYPE}.conf" "prj.common.conf")
set(ENV{ZEPHYR_BASE} "../../../../../ncs/zephyr")
set(BOARD_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../PM_FW/Build")
set(BOARD nrf5340)
message(STATUS "CMAKE_BUILD_TYPE VALUE: ${CMAKE_BUILD_TYPE}")
cmake_minimum_required(VERSION 3.20.0)
# Use minimum Zephyr release
find_package(Zephyr 3.2.99 REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(ourapp C ASM)
list(APPEND Common_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../PMLib/PMCOMMON_Lib/ap_globals.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_spim.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_usbd.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_usbreg.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_pwm.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_qspi.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_usbreg.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_rtc.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_saadc.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_gpiote.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_nvmc.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_uarte.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../ncs/modules/hal/nordic/nrfx/drivers/src/nrfx_dppi.c"
)
target_sources(app PRIVATE
${Common_SOURCES}
)