From bf191c794858c1c979aec00a60f882d035d29bdb Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Fri, 26 Sep 2025 15:33:39 +0100 Subject: [PATCH] classes/cmake: unset LDFLAGS in toolchain-native.bbclass If a recipe is using toolchain-native.cmake to build native portion in a non-native build, the target LDFLAGS from the environment will leak into the native build. This was noticed as building a SDK with clang means that LDFLAGS contains a --dynamic-loader argument, so native binaries were trying to use the target loader. There are several variables that are set from LDFLAGS[1] so instead of setting them all, we can simply unset the environment variable in the toolchain. [1] https://cmake.org/cmake/help/latest/envvar/LDFLAGS.html Signed-off-by: Ross Burton Signed-off-by: Mathieu Dubois-Briand --- meta/classes-recipe/cmake.bbclass | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/meta/classes-recipe/cmake.bbclass b/meta/classes-recipe/cmake.bbclass index b8cd622c2d..4f59966521 100644 --- a/meta/classes-recipe/cmake.bbclass +++ b/meta/classes-recipe/cmake.bbclass @@ -212,6 +212,15 @@ set( CMAKE_LIBRARY_PATH ${STAGING_BASE_LIBDIR_NATIVE} ${STAGING_LIBDIR_NATIVE}) list(APPEND CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES ${STAGING_INCDIR_NATIVE}) list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES ${STAGING_INCDIR_NATIVE}) +# The assignmens above override CFLAGS and CXXFLAGS from the environment but +# not LDFLAGS, which ends up in CMAKE_EXE_LINKER_FLAGS. This then means our +# native builds use target flags, and can fail. +# +# As there are a number of variables that are set from LDFLAGS, +# clear it at source. +# +# https://cmake.org/cmake/help/latest/envvar/LDFLAGS.html +unset(ENV{LDFLAGS}) EOF } -- 2.47.3