build system: explicitly disable LTO plugin
... to reduce the number of simultaneously open files at link time. When plugin support is enabled in the linker, BFD's (and the corresponding file handles) are cached for the plugin to use. This results in quite a large number of simultaneously open files, which hits the default limit on macOS (256 files). Since we aren't using LTO now, disable it explicitly when invoking the linker. Closes IDF-923 Closes IDFGH-1764 Closes https://github.com/espressif/esp-idf/issues/3989
This commit is contained in:
parent
139913baa2
commit
afeed3cc6f
2 changed files with 8 additions and 0 deletions
|
@ -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.
|
||||
|
@ -60,11 +61,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)
|
||||
|
||||
|
|
|
@ -469,6 +469,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}")
|
||||
|
|
Loading…
Reference in a new issue