From caebb3ecc2d51f42f7141f12ed32a4b6f888123d Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Sun, 26 Jan 2025 11:53:45 +0800 Subject: [PATCH] tools: Export LLVM flags for kernel build Summary: - Added LLVM_ARCHTYPE, LLVM_CPUTYPE, and LLVM_ABITYPE to the exported build configuration in both `Export.mk` and `mkexport.sh` - These flags are now included in the generated `makeinfo.sh`, `Make.defs`, and `target.cmake` files during the export process Impact: - Enables LLVM-specific build configurations to be properly exported and used in kernel builds - Improves compatibility with LLVM-based toolchains by ensuring necessary architecture, CPU, and ABI information is available during the build process - No functional changes for non-LLVM builds, as these flags are only used when LLVM toolchains are specified Signed-off-by: Huang Qi --- tools/Export.mk | 3 +++ tools/mkexport.sh | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/tools/Export.mk b/tools/Export.mk index 528820f597de9..e005951bcea1e 100644 --- a/tools/Export.mk +++ b/tools/Export.mk @@ -107,6 +107,9 @@ ifdef CONFIG_LIBCXX else @echo "NUTTX_CXX=\"cxx\"" >> $(EXPORTDIR)/makeinfo.sh endif + @echo "LLVM_ARCHTYPE=\"$(LLVM_ARCHTYPE)\"" >> $(EXPORTDIR)/makeinfo.sh + @echo "LLVM_CPUTYPE=\"$(LLVM_CPUTYPE)\"" >> $(EXPORTDIR)/makeinfo.sh + @echo "LLVM_ABITYPE=\"$(LLVM_ABITYPE)\"" >> $(EXPORTDIR)/makeinfo.sh $(Q) chmod 755 $(EXPORTDIR)/makeinfo.sh clean: diff --git a/tools/mkexport.sh b/tools/mkexport.sh index 8c434b220fee4..2860fcc7e2264 100755 --- a/tools/mkexport.sh +++ b/tools/mkexport.sh @@ -273,6 +273,9 @@ echo "NUTTX_ARCH_CHIP = ${NUTTX_ARCH_CHIP}" >>"${EXPORTDIR}/scripts/Make.defs" echo "NUTTX_BOARD = ${NUTTX_BOARD}" >>"${EXPORTDIR}/scripts/Make.defs" echo "NUTTX_BUILD = ${NUTTX_BUILD}" >>"${EXPORTDIR}/scripts/Make.defs" echo "NUTTX_CXX = ${NUTTX_CXX}" >>"${EXPORTDIR}/scripts/Make.defs" +echo "LLVM_ARCHTYPE = ${LLVM_ARCHTYPE}" >>"${EXPORTDIR}/scripts/Make.defs" +echo "LLVM_CPUTYPE = ${LLVM_CPUTYPE}" >>"${EXPORTDIR}/scripts/Make.defs" +echo "LLVM_ABITYPE = ${LLVM_ABITYPE}" >>"${EXPORTDIR}/scripts/Make.defs" echo "set(ARCHCFLAGS \"${ARCHCFLAGS}\")" > "${EXPORTDIR}/scripts/target.cmake" echo "set(ARCHCPUFLAGS \"${ARCHCPUFLAGS}\")" >>"${EXPORTDIR}/scripts/target.cmake" @@ -304,6 +307,9 @@ echo "set(NUTTX_ARCH_CHIP \"${NUTTX_ARCH_CHIP}\")" >>"${EXPORTDIR}/scripts/ echo "set(NUTTX_BOARD \"${NUTTX_BOARD}\")" >>"${EXPORTDIR}/scripts/target.cmake" echo "set(NUTTX_BUILD \"${NUTTX_BUILD}\")" >>"${EXPORTDIR}/scripts/target.cmake" echo "set(NUTTX_CXX \"${NUTTX_CXX}\")" >>"${EXPORTDIR}/scripts/target.cmake" +echo "set(LLVM_ARCHTYPE \"${LLVM_ARCHTYPE}\")" >>"${EXPORTDIR}/scripts/target.cmake" +echo "set(LLVM_CPUTYPE \"${LLVM_CPUTYPE}\")" >>"${EXPORTDIR}/scripts/target.cmake" +echo "set(LLVM_ABITYPE \"${LLVM_ABITYPE}\")" >>"${EXPORTDIR}/scripts/target.cmake" # Additional compilation options when the kernel is built