From c4df1d6a19c2ab9c67b42150adb81f49757b6f8c Mon Sep 17 00:00:00 2001 From: yangjie11 Date: Mon, 12 Jun 2023 14:32:48 +0800 Subject: [PATCH] [cpp] support rt-thread CPP wrapper sub-switch macros --- components/libc/cplusplus/Kconfig | 6 ++++- components/libc/cplusplus/SConscript | 22 ++++++++----------- components/libc/cplusplus/cpp11/SConscript | 18 +++++++++++++++ components/libc/cplusplus/os/SConscript | 8 +++++++ .../libc/cplusplus/{ => os}/cxx_Mutex.cpp | 0 .../libc/cplusplus/{ => os}/cxx_Semaphore.cpp | 0 .../libc/cplusplus/{ => os}/cxx_Thread.cpp | 0 components/libc/cplusplus/{ => os}/cxx_lock.h | 0 components/libc/cplusplus/{ => os}/cxx_mail.h | 0 .../libc/cplusplus/{ => os}/cxx_mutex.h | 0 .../libc/cplusplus/{ => os}/cxx_queue.h | 0 .../libc/cplusplus/{ => os}/cxx_semaphore.h | 0 .../libc/cplusplus/{ => os}/cxx_thread.h | 0 13 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 components/libc/cplusplus/cpp11/SConscript create mode 100644 components/libc/cplusplus/os/SConscript rename components/libc/cplusplus/{ => os}/cxx_Mutex.cpp (100%) rename components/libc/cplusplus/{ => os}/cxx_Semaphore.cpp (100%) rename components/libc/cplusplus/{ => os}/cxx_Thread.cpp (100%) rename components/libc/cplusplus/{ => os}/cxx_lock.h (100%) rename components/libc/cplusplus/{ => os}/cxx_mail.h (100%) rename components/libc/cplusplus/{ => os}/cxx_mutex.h (100%) rename components/libc/cplusplus/{ => os}/cxx_queue.h (100%) rename components/libc/cplusplus/{ => os}/cxx_semaphore.h (100%) rename components/libc/cplusplus/{ => os}/cxx_thread.h (100%) diff --git a/components/libc/cplusplus/Kconfig b/components/libc/cplusplus/Kconfig index c7268e7b9a..e049f65629 100644 --- a/components/libc/cplusplus/Kconfig +++ b/components/libc/cplusplus/Kconfig @@ -5,11 +5,15 @@ menuconfig RT_USING_CPLUSPLUS if RT_USING_CPLUSPLUS config RT_USING_CPLUSPLUS11 - bool "Enable c++11 threading feature support" + bool "Enable C++11 standard multi-threading feature support" default n select RT_USING_POSIX_FS select RT_USING_POSIX_STDIO select RT_USING_PTHREADS select RT_USING_RTC + config RT_USING_CPP_WRAPPER + bool "Enable RT-Thread APIs C++ wrapper" + default n + endif diff --git a/components/libc/cplusplus/SConscript b/components/libc/cplusplus/SConscript index 760049c139..a7829cea6d 100644 --- a/components/libc/cplusplus/SConscript +++ b/components/libc/cplusplus/SConscript @@ -1,21 +1,17 @@ -# RT-Thread building script for component - from building import * +import os Import('rtconfig') -cwd = GetCurrentDir() -src = Glob('*.cpp') + Glob('*.c') +cwd = GetCurrentDir() +src = ['cxx_crt_init.c', 'cxx_crt.cpp'] CPPPATH = [cwd] -if GetDepend('RT_USING_CPLUSPLUS11'): - src += Glob('cpp11/*.cpp') + Glob('cpp11/*.c') - if rtconfig.PLATFORM in ['armclang']: - src += Glob('cpp11/armclang/*.cpp') + Glob('cpp11/armclang/*.c') - CPPPATH += [cwd + '/cpp11/armclang'] - elif rtconfig.PLATFORM in ['gcc']: - src += Glob('cpp11/gcc/*.cpp') + Glob('cpp11/gcc/*.c') - CPPPATH += [cwd + '/cpp11/gcc'] +group = DefineGroup('CPP', src, depend=['RT_USING_CPLUSPLUS'], CPPPATH=CPPPATH) -group = DefineGroup('CPlusPlus', src, depend = ['RT_USING_CPLUSPLUS'], CPPPATH = CPPPATH) +list = os.listdir(cwd) +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) Return('group') diff --git a/components/libc/cplusplus/cpp11/SConscript b/components/libc/cplusplus/cpp11/SConscript new file mode 100644 index 0000000000..0d96a06269 --- /dev/null +++ b/components/libc/cplusplus/cpp11/SConscript @@ -0,0 +1,18 @@ +from building import * +Import('rtconfig') + +cwd = GetCurrentDir() +src = [] +CPPPATH = [] + +src += Glob('*.cpp') + Glob('*.c') +if rtconfig.PLATFORM in ['armclang']: + src += Glob('armclang/*.cpp') + Glob('armclang/*.c') + CPPPATH += [cwd + '/armclang'] +elif rtconfig.PLATFORM in ['gcc']: + src += Glob('gcc/*.cpp') + Glob('gcc/*.c') + CPPPATH += [cwd + '/gcc'] + +group = DefineGroup('CPP', src, depend=['RT_USING_CPLUSPLUS11'], CPPPATH=CPPPATH) + +Return('group') diff --git a/components/libc/cplusplus/os/SConscript b/components/libc/cplusplus/os/SConscript new file mode 100644 index 0000000000..5bda46087a --- /dev/null +++ b/components/libc/cplusplus/os/SConscript @@ -0,0 +1,8 @@ +from building import * + +cwd = GetCurrentDir() +src = Glob('*.cpp') +CPPPATH = [cwd] +group = DefineGroup('CPP', src, depend=['RT_USING_CPP_WRAPPER'], CPPPATH=CPPPATH) + +Return('group') diff --git a/components/libc/cplusplus/cxx_Mutex.cpp b/components/libc/cplusplus/os/cxx_Mutex.cpp similarity index 100% rename from components/libc/cplusplus/cxx_Mutex.cpp rename to components/libc/cplusplus/os/cxx_Mutex.cpp diff --git a/components/libc/cplusplus/cxx_Semaphore.cpp b/components/libc/cplusplus/os/cxx_Semaphore.cpp similarity index 100% rename from components/libc/cplusplus/cxx_Semaphore.cpp rename to components/libc/cplusplus/os/cxx_Semaphore.cpp diff --git a/components/libc/cplusplus/cxx_Thread.cpp b/components/libc/cplusplus/os/cxx_Thread.cpp similarity index 100% rename from components/libc/cplusplus/cxx_Thread.cpp rename to components/libc/cplusplus/os/cxx_Thread.cpp diff --git a/components/libc/cplusplus/cxx_lock.h b/components/libc/cplusplus/os/cxx_lock.h similarity index 100% rename from components/libc/cplusplus/cxx_lock.h rename to components/libc/cplusplus/os/cxx_lock.h diff --git a/components/libc/cplusplus/cxx_mail.h b/components/libc/cplusplus/os/cxx_mail.h similarity index 100% rename from components/libc/cplusplus/cxx_mail.h rename to components/libc/cplusplus/os/cxx_mail.h diff --git a/components/libc/cplusplus/cxx_mutex.h b/components/libc/cplusplus/os/cxx_mutex.h similarity index 100% rename from components/libc/cplusplus/cxx_mutex.h rename to components/libc/cplusplus/os/cxx_mutex.h diff --git a/components/libc/cplusplus/cxx_queue.h b/components/libc/cplusplus/os/cxx_queue.h similarity index 100% rename from components/libc/cplusplus/cxx_queue.h rename to components/libc/cplusplus/os/cxx_queue.h diff --git a/components/libc/cplusplus/cxx_semaphore.h b/components/libc/cplusplus/os/cxx_semaphore.h similarity index 100% rename from components/libc/cplusplus/cxx_semaphore.h rename to components/libc/cplusplus/os/cxx_semaphore.h diff --git a/components/libc/cplusplus/cxx_thread.h b/components/libc/cplusplus/os/cxx_thread.h similarity index 100% rename from components/libc/cplusplus/cxx_thread.h rename to components/libc/cplusplus/os/cxx_thread.h