This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 12fd5ec472 nuttx: Add LIBSUPCXX_TOOLCHAIN to link the prebuilt library
provide by toolchain.
12fd5ec472 is described below
commit 12fd5ec472378f5e411247bdfdf684dfe5d1a2ef
Author: cuiziwei <[email protected]>
AuthorDate: Wed Sep 25 18:24:18 2024 +0800
nuttx: Add LIBSUPCXX_TOOLCHAIN to link the prebuilt library provide by
toolchain.
Signed-off-by: cuiziwei <[email protected]>
---
arch/arm/src/cmake/platform.cmake | 2 +-
arch/arm/src/common/Toolchain.defs | 2 +-
arch/arm64/src/Toolchain.defs | 2 +-
arch/arm64/src/cmake/platform.cmake | 2 +-
arch/avr/src/avr/Toolchain.defs | 2 +-
arch/avr/src/avr32/Toolchain.defs | 2 +-
arch/hc/src/Makefile | 2 +-
arch/mips/src/mips32/Toolchain.defs | 2 +-
arch/misoc/src/lm32/Toolchain.defs | 2 +-
arch/misoc/src/minerva/Toolchain.defs | 2 +-
arch/or1k/src/mor1kx/Toolchain.defs | 2 +-
arch/renesas/src/Makefile | 2 +-
arch/risc-v/src/cmake/platform.cmake | 2 +-
arch/risc-v/src/common/Toolchain.defs | 2 +-
arch/x86/src/Makefile | 2 +-
arch/x86_64/src/Makefile | 2 +-
arch/x86_64/src/cmake/platform.cmake | 2 +-
arch/xtensa/src/lx6/Toolchain.defs | 2 +-
arch/xtensa/src/lx7/Toolchain.defs | 2 +-
libs/libc/machine/arm/CMakeLists.txt | 2 +-
libs/libc/machine/arm/Make.defs | 2 +-
libs/libxx/Kconfig | 16 +++++++++++-----
libs/libxx/libcxx.cmake | 4 ++++
libs/libxx/libcxx.defs | 6 +++++-
24 files changed, 41 insertions(+), 27 deletions(-)
diff --git a/arch/arm/src/cmake/platform.cmake
b/arch/arm/src/cmake/platform.cmake
index 1bce5f6678..26e9adaebd 100644
--- a/arch/arm/src/cmake/platform.cmake
+++ b/arch/arm/src/cmake/platform.cmake
@@ -79,7 +79,7 @@ if(NOT CONFIG_LIBM)
nuttx_find_toolchain_lib(libm.a)
endif()
-if(CONFIG_LIBSUPCXX)
+if(CONFIG_LIBSUPCXX_TOOLCHAIN)
nuttx_find_toolchain_lib(libsupc++.a)
endif()
diff --git a/arch/arm/src/common/Toolchain.defs
b/arch/arm/src/common/Toolchain.defs
index f1d58187f2..0601b28aef 100644
--- a/arch/arm/src/common/Toolchain.defs
+++ b/arch/arm/src/common/Toolchain.defs
@@ -490,7 +490,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
endif
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/arch/arm64/src/Toolchain.defs b/arch/arm64/src/Toolchain.defs
index faf6480b3e..84a7cb3814 100644
--- a/arch/arm64/src/Toolchain.defs
+++ b/arch/arm64/src/Toolchain.defs
@@ -205,7 +205,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a))
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/arch/arm64/src/cmake/platform.cmake
b/arch/arm64/src/cmake/platform.cmake
index 71795cda38..130f620fa8 100644
--- a/arch/arm64/src/cmake/platform.cmake
+++ b/arch/arm64/src/cmake/platform.cmake
@@ -48,7 +48,7 @@ if(NOT CONFIG_LIBM)
OUTPUT_VARIABLE extra_library)
list(APPEND EXTRA_LIB ${extra_library})
endif()
-if(CONFIG_LIBSUPCXX)
+if(CONFIG_LIBSUPCXX_TOOLCHAIN)
execute_process(
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS}
--print-file-name=libsupc++.a
diff --git a/arch/avr/src/avr/Toolchain.defs b/arch/avr/src/avr/Toolchain.defs
index 76e236cc3b..47051a5c19 100644
--- a/arch/avr/src/avr/Toolchain.defs
+++ b/arch/avr/src/avr/Toolchain.defs
@@ -164,7 +164,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a))
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/arch/avr/src/avr32/Toolchain.defs
b/arch/avr/src/avr32/Toolchain.defs
index b2e785ac08..68c0f6799f 100644
--- a/arch/avr/src/avr32/Toolchain.defs
+++ b/arch/avr/src/avr32/Toolchain.defs
@@ -94,7 +94,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a))
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/arch/hc/src/Makefile b/arch/hc/src/Makefile
index cbc12ffd00..907b7bd65a 100644
--- a/arch/hc/src/Makefile
+++ b/arch/hc/src/Makefile
@@ -80,7 +80,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += ${wildcard ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a}}
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += ${wildcard ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a}}
endif
diff --git a/arch/mips/src/mips32/Toolchain.defs
b/arch/mips/src/mips32/Toolchain.defs
index 819cb1ad1f..ff6083a485 100644
--- a/arch/mips/src/mips32/Toolchain.defs
+++ b/arch/mips/src/mips32/Toolchain.defs
@@ -309,7 +309,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a))
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/arch/misoc/src/lm32/Toolchain.defs
b/arch/misoc/src/lm32/Toolchain.defs
index 01a926d326..b10a35e622 100644
--- a/arch/misoc/src/lm32/Toolchain.defs
+++ b/arch/misoc/src/lm32/Toolchain.defs
@@ -125,7 +125,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a))
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/arch/misoc/src/minerva/Toolchain.defs
b/arch/misoc/src/minerva/Toolchain.defs
index efbf92a3d9..02b4714199 100644
--- a/arch/misoc/src/minerva/Toolchain.defs
+++ b/arch/misoc/src/minerva/Toolchain.defs
@@ -73,7 +73,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a))
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/arch/or1k/src/mor1kx/Toolchain.defs
b/arch/or1k/src/mor1kx/Toolchain.defs
index 346c6b7147..991c2d05b9 100644
--- a/arch/or1k/src/mor1kx/Toolchain.defs
+++ b/arch/or1k/src/mor1kx/Toolchain.defs
@@ -111,7 +111,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a))
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/arch/renesas/src/Makefile b/arch/renesas/src/Makefile
index f2811a6313..e66ee275a2 100644
--- a/arch/renesas/src/Makefile
+++ b/arch/renesas/src/Makefile
@@ -73,7 +73,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += ${wildcard ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a}}
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += ${wildcard ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a}}
endif
diff --git a/arch/risc-v/src/cmake/platform.cmake
b/arch/risc-v/src/cmake/platform.cmake
index df38ed77d1..4199655626 100644
--- a/arch/risc-v/src/cmake/platform.cmake
+++ b/arch/risc-v/src/cmake/platform.cmake
@@ -52,7 +52,7 @@ if(NOT CONFIG_LIBM)
list(APPEND EXTRA_LIB ${extra_library})
endif()
-if(CONFIG_LIBSUPCXX)
+if(CONFIG_LIBSUPCXX_TOOLCHAIN)
execute_process(
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS}
--print-file-name=libsupc++.a
diff --git a/arch/risc-v/src/common/Toolchain.defs
b/arch/risc-v/src/common/Toolchain.defs
index ddf814dec3..1f1871b550 100644
--- a/arch/risc-v/src/common/Toolchain.defs
+++ b/arch/risc-v/src/common/Toolchain.defs
@@ -401,7 +401,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a))
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/arch/x86/src/Makefile b/arch/x86/src/Makefile
index 1340d16d21..e907cdf022 100644
--- a/arch/x86/src/Makefile
+++ b/arch/x86/src/Makefile
@@ -91,7 +91,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += ${wildcard ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a}}
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += ${wildcard ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a}}
endif
diff --git a/arch/x86_64/src/Makefile b/arch/x86_64/src/Makefile
index 6468b4cb0c..ba55db152d 100644
--- a/arch/x86_64/src/Makefile
+++ b/arch/x86_64/src/Makefile
@@ -93,7 +93,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += ${wildcard ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a}}
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += ${wildcard ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a}}
endif
diff --git a/arch/x86_64/src/cmake/platform.cmake
b/arch/x86_64/src/cmake/platform.cmake
index 8d2bab0010..414deb5c32 100644
--- a/arch/x86_64/src/cmake/platform.cmake
+++ b/arch/x86_64/src/cmake/platform.cmake
@@ -52,7 +52,7 @@ if(CONFIG_LIBM_TOOLCHAIN)
list(APPEND EXTRA_LIB ${extra_library})
endif()
-if(CONFIG_LIBSUPCXX)
+if(CONFIG_LIBSUPCXX_TOOLCHAIN)
execute_process(
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS}
--print-file-name=libsupc++.a
diff --git a/arch/xtensa/src/lx6/Toolchain.defs
b/arch/xtensa/src/lx6/Toolchain.defs
index 37faf06370..9f89d1600a 100644
--- a/arch/xtensa/src/lx6/Toolchain.defs
+++ b/arch/xtensa/src/lx6/Toolchain.defs
@@ -193,7 +193,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a))
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/arch/xtensa/src/lx7/Toolchain.defs
b/arch/xtensa/src/lx7/Toolchain.defs
index 7cf31413af..495ece81e7 100644
--- a/arch/xtensa/src/lx7/Toolchain.defs
+++ b/arch/xtensa/src/lx7/Toolchain.defs
@@ -197,7 +197,7 @@ ifeq ($(CONFIG_LIBM_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a))
endif
-ifeq ($(CONFIG_LIBSUPCXX),y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
EXTRA_LIBS += $(wildcard $(shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a))
endif
diff --git a/libs/libc/machine/arm/CMakeLists.txt
b/libs/libc/machine/arm/CMakeLists.txt
index 6dba16de12..387be1d42c 100644
--- a/libs/libc/machine/arm/CMakeLists.txt
+++ b/libs/libc/machine/arm/CMakeLists.txt
@@ -46,7 +46,7 @@ elseif(CONFIG_ARCH_ARMV8M) # All ARMv8-M
add_subdirectory(armv8-m)
endif()
-if(NOT CONFIG_LIBSUPCXX)
+if(NOT CONFIG_LIBSUPCXX_TOOLCHAIN)
list(APPEND SRCS aeabi_atexit.c)
endif()
diff --git a/libs/libc/machine/arm/Make.defs b/libs/libc/machine/arm/Make.defs
index 73b41ad4dc..63a319eb4a 100644
--- a/libs/libc/machine/arm/Make.defs
+++ b/libs/libc/machine/arm/Make.defs
@@ -44,7 +44,7 @@ else ifeq ($(CONFIG_ARCH_ARMV8M),y) # All ARMv8-M
include $(TOPDIR)/libs/libc/machine/arm/armv8-m/Make.defs
endif
-ifneq ($(CONFIG_LIBSUPCXX),y)
+ifneq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
CSRCS += aeabi_atexit.c
endif
diff --git a/libs/libxx/Kconfig b/libs/libxx/Kconfig
index 7c2728fa89..62618e15bb 100644
--- a/libs/libxx/Kconfig
+++ b/libs/libxx/Kconfig
@@ -67,11 +67,11 @@ config ETL
Implements C++ templates such as containers, string
singleton math without C++ STL libraries
-if LIBCXX || UCLIBCXX
+if !LIBCXXMINI
choice
prompt "C++ low level library select"
- default LIBSUPCXX
+ default LIBSUPCXX_TOOLCHAIN
config LIBCXXABI
bool "LLVM low level C++ Library"
@@ -81,21 +81,27 @@ config LIBCXXABI
Select if your use libc++abi as lower level c++ library
config LIBSUPCXX
+ bool "GNU compile low level libsupc++"
+ ---help---
+ Select if your compile libsupc++ and use libsupc++ as lower
+ level c++ library.
+
+config LIBSUPCXX_TOOLCHAIN
bool "GNU low level libsupc++"
---help---
- Select if your toolchain provides libsupc++ and use libsupc++
as lower
+ Select if your toolchain provides libsupc++ and use toolchain
libsupc++ as lower
level c++ library.
endchoice
+endif
+
config LIBCXXABI_VERSION
string "Select libcxxabi version"
depends on LIBCXXABI
default LIBCXX_VERSION if LIBCXX
default "17.0.6" if !LIBCXX
-endif
-
config CXX_STANDARD
string "Language standard"
default "gnu++20" if LIBCXX
diff --git a/libs/libxx/libcxx.cmake b/libs/libxx/libcxx.cmake
index 1d7e79e4be..9b4c3fee88 100644
--- a/libs/libxx/libcxx.cmake
+++ b/libs/libxx/libcxx.cmake
@@ -73,6 +73,10 @@ set_property(
PROPERTY NUTTX_CXX_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/include/libcxx)
add_compile_definitions(_LIBCPP_BUILDING_LIBRARY)
+if(CONFIG_LIBSUPCXX_TOOLCHAIN)
+ add_compile_definitions(__GLIBCXX__)
+endif()
+
if(CONFIG_LIBSUPCXX)
add_compile_definitions(__GLIBCXX__)
endif()
diff --git a/libs/libxx/libcxx.defs b/libs/libxx/libcxx.defs
index 730b898b23..717af3489e 100644
--- a/libs/libxx/libcxx.defs
+++ b/libs/libxx/libcxx.defs
@@ -54,7 +54,11 @@ endif
CXXFLAGS += ${DEFINE_PREFIX}_LIBCPP_BUILDING_LIBRARY
CXXFLAGS += ${INCDIR_PREFIX}$(CURDIR)/libcxx/src
-ifeq ($(CONFIG_LIBSUPCXX), y)
+ifeq ($(CONFIG_LIBSUPCXX_TOOLCHAIN),y)
+CXXFLAGS += ${DEFINE_PREFIX}__GLIBCXX__
+endif
+
+ifeq ($(CONFIG_LIBSUPCXX),y)
CXXFLAGS += ${DEFINE_PREFIX}__GLIBCXX__
endif