Browse Source

[rtdef][libc] solve the conflicts between libc data types and rtdef data types (#5961)

Man, Jianting (Meco) 3 years ago
parent
commit
c147ff417c

+ 1 - 1
components/libc/compilers/armlibc/SConscript

@@ -4,7 +4,7 @@ Import('rtconfig')
 src   = Glob('*.c')
 group = []
 
-CPPDEFINES = ['RT_USING_ARM_LIBC']
+CPPDEFINES = ['RT_USING_ARM_LIBC', 'RT_USING_LIBC']
 
 if rtconfig.PLATFORM in ['armcc', 'armclang']:
     group = DefineGroup('Compiler', src, depend = [''], CPPDEFINES = CPPDEFINES)

+ 1 - 1
components/libc/compilers/dlib/SConscript

@@ -4,7 +4,7 @@ Import('rtconfig')
 src   = Glob('*.c')
 group = []
 
-CPPDEFINES = ['RT_USING_DLIBC']
+CPPDEFINES = ['RT_USING_DLIBC', 'RT_USING_LIBC']
 
 if rtconfig.PLATFORM == 'iar':
     if GetDepend('DFS_USING_POSIX'):

+ 1 - 1
components/libc/compilers/newlib/SConscript

@@ -17,7 +17,7 @@ if rtconfig.PLATFORM == 'gcc':
     print('Newlib version:' + GetNewLibVersion(rtconfig))
 
     # identify this is Newlib, and only enable POSIX.1-1990
-    CPPDEFINES = ['RT_USING_NEWLIB', '_POSIX_C_SOURCE=1']
+    CPPDEFINES = ['RT_USING_NEWLIB', 'RT_USING_LIBC', '_POSIX_C_SOURCE=1']
 
     group = DefineGroup('Compiler', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES, LIBS = LIBS)
 

+ 15 - 0
include/rtdef.h

@@ -71,6 +71,20 @@ extern "C" {
 
 /* RT-Thread basic data type definitions */
 #ifndef RT_USING_ARCH_DATA_TYPE
+#ifdef RT_USING_LIBC
+#include <stdint.h>
+#include <stddef.h>
+typedef int8_t                          rt_int8_t;      /**<  8bit integer type */
+typedef int16_t                         rt_int16_t;     /**< 16bit integer type */
+typedef int32_t                         rt_int32_t;     /**< 32bit integer type */
+typedef uint8_t                         rt_uint8_t;     /**<  8bit unsigned integer type */
+typedef uint16_t                        rt_uint16_t;    /**< 16bit unsigned integer type */
+typedef uint32_t                        rt_uint32_t;    /**< 32bit unsigned integer type */
+typedef int64_t                         rt_int64_t;     /**< 64bit integer type */
+typedef uint64_t                        rt_uint64_t;    /**< 64bit unsigned integer type */
+typedef size_t                          rt_size_t;      /**< Type for size number */
+
+#else
 typedef signed   char                   rt_int8_t;      /**<  8bit integer type */
 typedef signed   short                  rt_int16_t;     /**< 16bit integer type */
 typedef signed   int                    rt_int32_t;     /**< 32bit integer type */
@@ -87,6 +101,7 @@ typedef signed long long                rt_int64_t;     /**< 64bit integer type
 typedef unsigned long long              rt_uint64_t;    /**< 64bit unsigned integer type */
 typedef unsigned int                    rt_size_t;      /**< Type for size number */
 #endif /* ARCH_CPU_64BIT */
+#endif /* RT_USING_LIBC */
 #endif /* RT_USING_ARCH_DATA_TYPE */
 
 typedef int                             rt_bool_t;      /**< boolean type */