Browse Source

[cpp] support rt-thread CPP wrapper sub-switch macros

yangjie11 2 years ago
parent
commit
c4df1d6a19

+ 5 - 1
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

+ 9 - 13
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')

+ 18 - 0
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')

+ 8 - 0
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')

+ 0 - 0
components/libc/cplusplus/cxx_Mutex.cpp → components/libc/cplusplus/os/cxx_Mutex.cpp


+ 0 - 0
components/libc/cplusplus/cxx_Semaphore.cpp → components/libc/cplusplus/os/cxx_Semaphore.cpp


+ 0 - 0
components/libc/cplusplus/cxx_Thread.cpp → components/libc/cplusplus/os/cxx_Thread.cpp


+ 0 - 0
components/libc/cplusplus/cxx_lock.h → components/libc/cplusplus/os/cxx_lock.h


+ 0 - 0
components/libc/cplusplus/cxx_mail.h → components/libc/cplusplus/os/cxx_mail.h


+ 0 - 0
components/libc/cplusplus/cxx_mutex.h → components/libc/cplusplus/os/cxx_mutex.h


+ 0 - 0
components/libc/cplusplus/cxx_queue.h → components/libc/cplusplus/os/cxx_queue.h


+ 0 - 0
components/libc/cplusplus/cxx_semaphore.h → components/libc/cplusplus/os/cxx_semaphore.h


+ 0 - 0
components/libc/cplusplus/cxx_thread.h → components/libc/cplusplus/os/cxx_thread.h