From 164a72738a0da391da6da58543abacf5873aa5a7 Mon Sep 17 00:00:00 2001 From: Meng Zhuo Date: Fri, 30 Jan 2026 10:26:52 +0800 Subject: [PATCH] build: enable LTO by default LTO saves ~4K in Flash and ~300 Bytes in RAM Disable LTO ``` Memory region Used Size Region Size %age Used RAM: 12256 B 16 KB 74.80% FLASH: 84304 B 118 KB 69.77% ``` Enable LTO ``` [82/82] Linking C executable f4hwn.fusion.elf Memory region Used Size Region Size %age Used RAM: 11904 B 16 KB 72.66% FLASH: 80820 B 118 KB 66.89% ``` --- CMakeLists.txt | 4 ++++ CMakePresets.json | 1 + 2 files changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index cfb19696..cd3067dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,6 +70,10 @@ target_link_libraries(${EXE_NAME} Core App) target_compile_definitions(${EXE_NAME} PRIVATE $<$:DEBUG>) target_link_libraries(${EXE_NAME} ${TOOLCHAIN_LINK_LIBRARIES}) +if(ENABLE_LTO) + target_compile_options(${EXE_NAME} PRIVATE -flto=auto) +endif() + # Generate map file target_link_options(${EXE_NAME} PRIVATE "-Wl,-Map=${EXE_NAME}.map") diff --git a/CMakePresets.json b/CMakePresets.json index 400f3144..248dc98e 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -9,6 +9,7 @@ "toolchainFile": "${sourceDir}/cmake/gcc-arm-none-eabi.cmake", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", + "ENABLE_LTO": true, "ENABLE_FMRADIO": false, "ENABLE_UART": true, "ENABLE_USB": true,