From c34bbe5fa9024655180c5949515e457ca0e74c78 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Mon, 28 Apr 2025 14:26:16 -0700 Subject: [PATCH] cmake.bbclass: Enhance to emit a native toolchain cmake file Some components e.g. clang and its runtime needs the native toolchain defines especially when doing nativesdk builds it uses CROSS_TOOLCHAIN_FLAGS_NATIVE to pass native toolchain file, which is then used to build native llvm tools needed during nativesdk builds Moreover this would enable using OE built native toolchain e.g. clang-native to build cmake based packages. e.g. libcxx and other llvm runtime plus it can be used for build native packages which require clang (From OE-Core rev: 79dc6a23234a34403157dec10d0cdd839ca76b3e) Signed-off-by: Khem Raj Signed-off-by: Richard Purdie --- meta/classes-recipe/cmake.bbclass | 58 +++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/meta/classes-recipe/cmake.bbclass b/meta/classes-recipe/cmake.bbclass index b342deb671..449fe2bb44 100644 --- a/meta/classes-recipe/cmake.bbclass +++ b/meta/classes-recipe/cmake.bbclass @@ -50,11 +50,34 @@ OECMAKE_C_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('CC', d)[1]}" OECMAKE_CXX_COMPILER ?= "${@oecmake_map_compiler('CXX', d)[0]}" OECMAKE_CXX_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('CXX', d)[1]}" +# Native C/C++ Compiler (without cpu arch/tune arguments) +OECMAKE_NATIVE_C_COMPILER ?= "${@oecmake_map_compiler('BUILD_CC', d)[0]}" +OECMAKE_NATIVE_C_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('BUILD_CC', d)[1]}" +OECMAKE_NATIVE_CXX_COMPILER ?= "${@oecmake_map_compiler('BUILD_CXX', d)[0]}" +OECMAKE_NATIVE_CXX_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('BUILD_CXX', d)[1]}" +OECMAKE_NATIVE_AR ?= "${BUILD_AR}" +OECMAKE_NATIVE_RANLIB ?= "${BUILD_RANLIB}" +OECMAKE_NATIVE_NM ?= "${BUILD_NM}" + +# Native compiler flags +OECMAKE_NATIVE_C_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CFLAGS}" +OECMAKE_NATIVE_CXX_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CXXFLAGS}" +OECMAKE_NATIVE_C_FLAGS_RELEASE ?= "-DNDEBUG" +OECMAKE_NATIVE_CXX_FLAGS_RELEASE ?= "-DNDEBUG" +OECMAKE_NATIVE_C_LINK_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS}" +OECMAKE_NATIVE_CXX_LINK_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" +BUILD_CXXFLAGS += "${BUILD_CC_ARCH}" +BUILD_CFLAGS += "${BUILD_CC_ARCH}" + # clear compiler vars for allarch to avoid sig hash difference OECMAKE_C_COMPILER:allarch = "" OECMAKE_C_COMPILER_LAUNCHER:allarch = "" OECMAKE_CXX_COMPILER:allarch = "" OECMAKE_CXX_COMPILER_LAUNCHER:allarch = "" +OECMAKE_NATIVE_C_COMPILER:allarch = "" +OECMAKE_NATIVE_C_COMPILER_LAUNCHER:allarch = "" +OECMAKE_NATIVE_CXX_COMPILER:allarch = "" +OECMAKE_NATIVE_CXX_COMPILER_LAUNCHER:allarch = "" OECMAKE_RPATH ?= "" OECMAKE_PERLNATIVE_DIR ??= "" @@ -155,6 +178,41 @@ set( CMAKE_LIBRARY_PATH ${libdir} ${base_libdir}) list(APPEND CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES ${includedir}) list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES ${includedir}) +EOF + cat > ${WORKDIR}/toolchain-native.cmake <