Переглянути джерело

Merge pull request #360 from BernardXiong/master

[LIBC] Use RT_USING_LIBC instead of libs option for each compiler
Bernard Xiong 10 роки тому
батько
коміт
a995264832

+ 1 - 1
bsp/at91sam9260/rtconfig.h

@@ -64,7 +64,7 @@
 
 /* SECTION: the runtime libc library */
 /* the runtime libc library */
-#define RT_USING_NEWLIB
+#define RT_USING_LIBC
 #define RT_USING_PTHREADS
 
 /* Using Module System */

+ 2 - 2
bsp/mini2440/rtconfig.h

@@ -87,8 +87,8 @@
 // </section>
 
 // <section name="LIBC" description="C Runtime library setting" default="always" >
-// <bool name="RT_USING_NEWLIB" description="Using newlib library, only available under GNU GCC" default="true" />
-#define RT_USING_NEWLIB
+// <bool name="RT_USING_LIBC" description="Using C library" default="true" />
+#define RT_USING_LIBC
 // <bool name="RT_USING_PTHREADS" description="Using POSIX threads library" default="true" />
 #define RT_USING_PTHREADS
 // </section>

+ 1 - 14
bsp/stm32f0x/rtconfig.h

@@ -87,20 +87,7 @@
 #define FINSH_USING_DESCRIPTION
 
 /* SECTION: libc management */
-#ifdef __CC_ARM
-/* #define RT_USING_MINILIBC */
-/* #define RT_USING_NEWLIB */
-#endif
-
-#ifdef __ICCARM__
-/* #define RT_USING_MINILIBC */
-/* #define RT_USING_NEWLIB */
-#endif
-
-#ifdef __GNUC__
-/* #define RT_USING_MINILIBC */
-#define RT_USING_NEWLIB
-#endif
+#define RT_USING_LIBC
 
 /* SECTION: device filesystem */
 /* #define RT_USING_DFS */

+ 2 - 2
bsp/zynq7000/rtconfig.h

@@ -103,8 +103,8 @@
 // </section>
 
 // <section name="LIBC" description="C Runtime library setting" default="always" >
-// <bool name="RT_USING_NEWLIB" description="Using newlib library, only available under GNU GCC" default="true" />
-#define RT_USING_NEWLIB
+// <bool name="RT_USING_LIBC" description="Using C library" default="true" />
+#define RT_USING_LIBC
 // <bool name="RT_USING_PTHREADS" description="Using POSIX threads library" default="true" />
 #define RT_USING_PTHREADS
 // </section>

+ 11 - 6
components/libc/SConscript

@@ -1,13 +1,18 @@
 # for libc component
 import os
-Import('RTT_ROOT')
+Import('rtconfig')
+
+from building import *
 
 objs = []
-list = os.listdir(os.path.join(RTT_ROOT, 'components', 'libc'))
 
-for d in list:
-    path = os.path.join(RTT_ROOT, 'components', 'libc', d)
-    if os.path.isfile(os.path.join(path, 'SConscript')):
-        objs = objs + SConscript(os.path.join(d, 'SConscript'))
+if GetDepend('RT_USING_LIBC'):
+    if rtconfig.PLATFORM == 'gcc':
+        objs = objs + SConscript('newlib/SConscript')
+    elif rtconfig.PLATFORM == 'armcc':
+        objs = objs + SConscript('armlibc/SConscript')
+else:
+    if rtconfig.PLATFORM == 'gcc':
+        objs = objs + SConscript('minilibc/SConscript')
 
 Return('objs')

+ 5 - 9
components/libc/armlibc/SConscript

@@ -1,16 +1,12 @@
-Import('rtconfig')
 from building import *
 
-if GetDepend('RT_USING_ARM_LIBC') and rtconfig.CROSS_TOOL != 'keil':
-    print '================ERROR=============================='
-    print 'Please use ARM CC compiler if using ARM C library'
-    print '==================================================='
-    exit(0)
-
-cwd = GetCurrentDir()
 src	= Glob('*.c')
+cwd = GetCurrentDir()
+
 CPPPATH = [cwd]
+CPPDEFINES = ['RT_USING_ARM_LIBC']
 
-group = DefineGroup('libc', src, depend = ['RT_USING_ARM_LIBC'], CPPPATH = CPPPATH)
+group = DefineGroup('libc', src, depend = ['RT_USING_LIBC'], 
+	CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
 
 Return('group')

+ 6 - 6
components/libc/minilibc/SConscript

@@ -2,12 +2,12 @@ Import('RTT_ROOT')
 from building import *
 
 src	= Glob('*.c')
-CPPPATH = [RTT_ROOT + '/components/libc/minilibc']
+cwd = GetCurrentDir()
+
+CPPPATH = [cwd]
 CPPDEFINES = ['RT_USING_MINILIBC']
-group = DefineGroup('minilibc', src, 
-	depend = ['RT_USING_MINILIBC'], 
-	CPPPATH = CPPPATH,
-	CPPDEFINES = CPPDEFINES
-	)
+
+group = DefineGroup('libc', src, depend = ['RT_USING_MINILIBC'],
+	CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
 
 Return('group')

+ 5 - 10
components/libc/newlib/SConscript

@@ -1,15 +1,10 @@
-Import('rtconfig')
 from building import *
 
-if GetDepend('RT_USING_NEWLIB') and rtconfig.CROSS_TOOL != 'gcc':
-    print '================ERROR============================'
-    print 'Please use GNU GCC compiler if using newlib'
-    print '================================================='
-    exit(0)
-
+src	= Glob('*.c')
 cwd = GetCurrentDir()
-src = Glob('*.c')
+
 CPPPATH = [cwd]
+CPPDEFINES = ['RT_USING_NEWLIB']
 
 # link with libc and libm:
 # libm is a frequently used lib. Newlib is compiled with -ffunction-sections in
@@ -17,7 +12,7 @@ CPPPATH = [cwd]
 # been referenced. So setting this won't result in bigger text size.
 LIBS = ['c', 'm']
 
-group = DefineGroup('newlib', src, depend = ['RT_USING_NEWLIB'],
-                    CPPPATH = CPPPATH, LIBS = LIBS)
+group = DefineGroup('newlib', src, depend = ['RT_USING_LIBC'], 
+	CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES, LIBS = LIBS)
 
 Return('group')