From 7106ac947259da84c29de497ad178b3aa9c2db17 Mon Sep 17 00:00:00 2001 From: "Peter S. Hollander" Date: Tue, 30 Jan 2024 14:53:48 +0000 Subject: [PATCH 1/2] Fix PICO_DEOPTIMIZED_DEBUG not updating compiler flags Setting CMAKE_${LANG}_FLAGS_DEBUG_INIT specifically only sets the flags for the Debug config the first time it is configured by CMake, pulling the initially-configured flags from CMakeCache.txt on subsequent configurations. This causes PICO_DEOPTIMIZED_DEBUG to not have any effect after the initial configuration, causing breakpoint issues when debugging certain functions. Changing the CMake variable to CMAKE_${LANG}_FLAGS_DEBUG enables the flags to be updated every configuration, no longer depending on the cache. We also must append the debug flags which were set prior to this file to maintain functional parity with the behaviour of CMAKE_${LANG}_FLAGS_DEBUG_INIT. See Issue #1618 in the primary repository for further details. Fixes #1618 --- cmake/preload/toolchains/set_flags.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/preload/toolchains/set_flags.cmake b/cmake/preload/toolchains/set_flags.cmake index bd6e24070..59ac78a2c 100644 --- a/cmake/preload/toolchains/set_flags.cmake +++ b/cmake/preload/toolchains/set_flags.cmake @@ -3,9 +3,9 @@ get_property(IS_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE) foreach(LANG IN ITEMS C CXX ASM) set(CMAKE_${LANG}_FLAGS_INIT "${ARM_TOOLCHAIN_COMMON_FLAGS}") if (PICO_DEOPTIMIZED_DEBUG) - set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-O0") + set(CMAKE_${LANG}_FLAGS_DEBUG "-O0 ${CMAKE_${LANG}_FLAGS_DEBUG}") else() - set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-Og") + set(CMAKE_${LANG}_FLAGS_DEBUG "-Og ${CMAKE_${LANG}_FLAGS_DEBUG}") endif() set(CMAKE_${LANG}_LINK_FLAGS "-Wl,--build-id=none") From 346c7e7f688a86fa22b1ed0b75b405df26439d0b Mon Sep 17 00:00:00 2001 From: "Peter S. Hollander" Date: Tue, 30 Jan 2024 18:20:30 +0000 Subject: [PATCH 2/2] Fix PICO_DEOPTIMIZED_DEBUG not updating compiler flags Setting CMAKE_${LANG}_FLAGS_DEBUG_INIT specifically only sets the flags for the Debug config the first time it is configured by CMake, pulling the initially-configured flags from CMakeCache.txt on subsequent configurations. This causes PICO_DEOPTIMIZED_DEBUG to not have any effect after the initial configuration, causing breakpoint issues when debugging certain functions. Clearing the cache of the debug flags allows the flags to be updated every configuration, and appended to appropriately (such as with "-g"). See Issue #1618 and the comments of Pull Request #1620 for further details. Fixes #1618 --- cmake/preload/toolchains/set_flags.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/preload/toolchains/set_flags.cmake b/cmake/preload/toolchains/set_flags.cmake index 59ac78a2c..7f208db3b 100644 --- a/cmake/preload/toolchains/set_flags.cmake +++ b/cmake/preload/toolchains/set_flags.cmake @@ -2,10 +2,11 @@ get_property(IS_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE) foreach(LANG IN ITEMS C CXX ASM) set(CMAKE_${LANG}_FLAGS_INIT "${ARM_TOOLCHAIN_COMMON_FLAGS}") + unset(CMAKE_${LANG}_FLAGS_DEBUG CACHE) if (PICO_DEOPTIMIZED_DEBUG) - set(CMAKE_${LANG}_FLAGS_DEBUG "-O0 ${CMAKE_${LANG}_FLAGS_DEBUG}") + set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-O0") else() - set(CMAKE_${LANG}_FLAGS_DEBUG "-Og ${CMAKE_${LANG}_FLAGS_DEBUG}") + set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-Og") endif() set(CMAKE_${LANG}_LINK_FLAGS "-Wl,--build-id=none")