]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
classes/cmake: unset LDFLAGS in toolchain-native.bbclass
authorRoss Burton <ross.burton@arm.com>
Fri, 26 Sep 2025 14:33:39 +0000 (15:33 +0100)
committerMathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Fri, 26 Sep 2025 15:06:51 +0000 (17:06 +0200)
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 <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
meta/classes-recipe/cmake.bbclass

index b8cd622c2df815b7c148f048dbd28a84a6c89c5a..4f59966521ee8cecf04349ab128bf9ef8ec94251 100644 (file)
@@ -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
 }