Răsfoiți Sursa

[cpp] attach CXXFLAGS to reduce the resource consumptions

Meco Man 1 an în urmă
părinte
comite
4f5ba63c7c

+ 1 - 1
bsp/k210/drivers/SConscript

@@ -38,7 +38,7 @@ if GetDepend('RT_USING_PWM'):
 if GetDepend('RT_USING_WDT'):
     src += ['drv_wdt.c']
 
-group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
+group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=['NNCASE_NO_EXCEPTIONS'])
 
 objs = [group]
 

+ 4 - 0
components/libc/cplusplus/Kconfig

@@ -16,4 +16,8 @@ if RT_USING_CPLUSPLUS
         bool "Enable RT-Thread APIs C++ wrapper"
         default n
 
+    config RT_USING_CPP_EXCEPTIONS
+        bool "Enable C++ exceptions (will increase overhead)"
+        default n
+
 endif

+ 6 - 1
components/libc/cplusplus/SConscript

@@ -5,8 +5,13 @@ Import('rtconfig')
 cwd     = GetCurrentDir()
 src     = ['cxx_crt_init.c', 'cxx_crt.cpp']
 CPPPATH = [cwd]
+CXXFLAGS = ''
 
-group = DefineGroup('CPP', src, depend=['RT_USING_CPLUSPLUS'], CPPPATH=CPPPATH)
+
+if rtconfig.PLATFORM in ['gcc', 'armclang', 'llvm-arm'] and not GetDepend('RT_USING_CPP_EXCEPTIONS'):
+    CXXFLAGS += ' -fno-exceptions -fno-rtti -ffunction-sections -fdata-sections -Wl,--gc-sections' # reduce resource consumptions
+
+group = DefineGroup('CPP', src, depend=['RT_USING_CPLUSPLUS'], CPPPATH=CPPPATH, CXXFLAGS=CXXFLAGS)
 
 list = os.listdir(cwd)
 for d in list:

+ 1 - 3
components/libc/cplusplus/cpp11/gcc/__utils.h

@@ -17,11 +17,9 @@
 
 #include <rtthread.h>
 
-#define RT_USING_CPP_EXCEPTION
-
 inline void throw_system_error(int err, const char *what_msg)
 {
-#ifdef RT_USING_CPP_EXCEPTION
+#ifdef RT_USING_CPP_EXCEPTIONS
     throw std::system_error(std::error_code(err, std::system_category()), what_msg);
 #else
     (void)err;