diff --git a/CMakeLists.txt b/CMakeLists.txt index b01b4ec10..fc16b82c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,7 @@ unset(compile_options) unset(c_compile_options) unset(cxx_compile_options) unset(compile_definitions) +unset(link_options) # Add the following build specifications here, since these seem to be dependent # on config values on the root Kconfig. @@ -62,11 +63,13 @@ elseif(CONFIG_COMPILER_STACK_CHECK_MODE_ALL) list(APPEND compile_options "-fstack-protector-all") endif() +list(APPEND link_options "-fno-lto") idf_build_set_property(COMPILE_OPTIONS "${compile_options}" APPEND) idf_build_set_property(C_COMPILE_OPTIONS "${c_compile_options}" APPEND) idf_build_set_property(CXX_COMPILE_OPTIONS "${cxx_compile_options}" APPEND) idf_build_set_property(COMPILE_DEFINITIONS "${compile_definitions}" APPEND) +idf_build_set_property(LINK_OPTIONS "${link_options}" APPEND) idf_build_get_property(build_component_targets __BUILD_COMPONENT_TARGETS) diff --git a/tools/cmake/build.cmake b/tools/cmake/build.cmake index 2edde052c..517fdf8aa 100644 --- a/tools/cmake/build.cmake +++ b/tools/cmake/build.cmake @@ -460,6 +460,11 @@ endmacro() # files used for linking, targets which should execute before creating the specified executable, # generating additional binary files, generating files related to flashing, etc.) function(idf_build_executable elf) + # Set additional link flags for the executable + idf_build_get_property(link_options LINK_OPTIONS) + # Using LINK_LIBRARIES here instead of LINK_OPTIONS, as the latter is not in CMake 3.5. + set_property(TARGET ${elf} APPEND PROPERTY LINK_LIBRARIES "${link_options}") + # Propagate link dependencies from component library targets to the executable idf_build_get_property(link_depends __LINK_DEPENDS) set_property(TARGET ${elf} APPEND PROPERTY LINK_DEPENDS "${link_depends}")