From c99ca774a1fc441cf4f24a48a565ccd564d55cf0 Mon Sep 17 00:00:00 2001 From: "qiuyiuestc@gmail.com" Date: Mon, 16 May 2011 00:29:28 +0000 Subject: [PATCH] Modify the link mode, compile each component to static library first and then link them git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1405 bbd45198-f89e-11dd-88c7-29a3b14d5316 --- bsp/mini2440/SConstruct | 20 +++++++++++++------- bsp/mini2440/calibration.c | 4 +++- bsp/mini2440/rtconfig.h | 7 ++++--- bsp/mini2440/rtconfig.py | 6 ++++-- components/dfs/include/dfs_posix.h | 5 +++-- components/external/libpng/pngconf.h | 6 +++--- components/external/libz/zutil.c | 21 +++++++++++++++++++++ components/pthreads/posix_types.h | 18 +++++++++--------- 8 files changed, 60 insertions(+), 27 deletions(-) diff --git a/bsp/mini2440/SConstruct b/bsp/mini2440/SConstruct index 4910b1ea9..a6a9f37c6 100644 --- a/bsp/mini2440/SConstruct +++ b/bsp/mini2440/SConstruct @@ -15,6 +15,7 @@ TARGET = 'rtthread-mini2440.' + rtconfig.TARGET_EXT env = Environment(tools = ['mingw'], AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + CXX = rtconfig.CXX, AR = rtconfig.AR, ARFLAGS = '-rc', LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) @@ -22,20 +23,25 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH) Export('RTT_ROOT') Export('rtconfig') -# prepare building environment -objs = PrepareBuilding(env, RTT_ROOT) +if rtconfig.PLATFORM == 'gcc': + start_obj = 'build/libcpu/' + rtconfig.ARCH + '/' + rtconfig.CPU + '/start_gcc.o', +elif rtconfig.PLATFORM == 'armcc': + start_obj = 'build/libcpu/' + rtconfig.ARCH + '/' + rtconfig.CPU + '/start_rvds.o', -if GetDepend('RT_USING_WEBSERVER'): - objs = objs + SConscript(RTT_ROOT + '/components/net/webserver/SConscript', variant_dir='build/net/webserver', duplicate=0) +# prepare building environment +libs = PrepareBuilding(env, RTT_ROOT) if GetDepend('RT_USING_RTGUI'): - objs = objs + SConscript(RTT_ROOT + '/examples/gui/SConscript', variant_dir='build/examples/gui', duplicate=0) + libs = objs + SConscript(RTT_ROOT + '/examples/gui/SConscript', variant_dir='build/examples/gui', duplicate=0) # libc testsuite -# objs = objs + SConscript(RTT_ROOT + '/examples/libc/SConscript', variant_dir='build/examples/libc', duplicate=0) +# libs = libs + SConscript(RTT_ROOT + '/examples/libc/SConscript', variant_dir='build/examples/libc', duplicate=0) # build program -env.Program(TARGET, objs) +if GetDepend('RT_USING_NEWLIB'): + env.Program(target = TARGET, source = [start_obj, 'build/components/libc/newlib/syscalls.o', 'build/components/libc/newlib/libc.o'], LIBS = libs) +else: + env.Program(target = TARGET, source = start_obj, LIBS = libs) # end building EndBuilding(TARGET) diff --git a/bsp/mini2440/calibration.c b/bsp/mini2440/calibration.c index d15270bff..5e691ab23 100644 --- a/bsp/mini2440/calibration.c +++ b/bsp/mini2440/calibration.c @@ -224,10 +224,12 @@ void calibration_init() 2048, 20, 5); if (calibration_ptr->tid != RT_NULL) rt_thread_startup(calibration_ptr->tid); } + +#ifdef RT_USING_FINSH #include void calibration() { calibration_init(); } FINSH_FUNCTION_EXPORT(calibration, perform touch calibration); - +#endif diff --git a/bsp/mini2440/rtconfig.h b/bsp/mini2440/rtconfig.h index 7884d8596..7ae26d9c1 100644 --- a/bsp/mini2440/rtconfig.h +++ b/bsp/mini2440/rtconfig.h @@ -96,12 +96,12 @@ /* use long file name feature */ #define RT_DFS_ELM_USE_LFN 1 /* the max number of file length */ -#define RT_DFS_ELM_MAX_LFN 32 +#define RT_DFS_ELM_MAX_LFN 128 /* #define RT_USING_DFS_YAFFS2 */ /* #define RT_USING_DFS_UFFS */ /* #define RT_USING_DFS_DEVFS */ -#define RT_USING_DFS_NFS +/* #define RT_USING_DFS_NFS */ #define RT_NFS_HOST_EXPORT "192.168.1.5:/" /* #define DFS_USING_WORKDIR */ @@ -220,11 +220,12 @@ /* RTGUI image options */ #define RTGUI_IMAGE_XPM #define RTGUI_IMAGE_JPEG +#define RTGUI_IMAGE_PNG #define RTGUI_IMAGE_BMP /* SECTION: FTK support */ /* using FTK support */ -/* #define RT_USING_FTK */ +/* #define RT_USING_FTK */ /* * Note on FTK: diff --git a/bsp/mini2440/rtconfig.py b/bsp/mini2440/rtconfig.py index dce03130e..cf6637b48 100644 --- a/bsp/mini2440/rtconfig.py +++ b/bsp/mini2440/rtconfig.py @@ -11,16 +11,17 @@ CROSS_TOOL = 'gcc' if CROSS_TOOL == 'gcc': PLATFORM = 'gcc' - EXEC_PATH = 'E:/Program Files/CodeSourcery/Sourcery G++ Lite/bin' + EXEC_PATH = 'C:/Program Files/CodeSourcery/Sourcery G++ Lite/bin' elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' - EXEC_PATH = 'E:/Keil' + EXEC_PATH = 'C:/Keil' BUILD = 'debug' if PLATFORM == 'gcc': # toolchains PREFIX = 'arm-none-eabi-' CC = PREFIX + 'gcc' + CXX = PREFIX + 'g++' AS = PREFIX + 'gcc' AR = PREFIX + 'ar' LINK = PREFIX + 'gcc' @@ -48,6 +49,7 @@ if PLATFORM == 'gcc': elif PLATFORM == 'armcc': # toolchains CC = 'armcc' + CXX = 'armcc' AS = 'armasm' AR = 'armar' LINK = 'armlink' diff --git a/components/dfs/include/dfs_posix.h b/components/dfs/include/dfs_posix.h index 1a8e179cb..ad4d3fc16 100644 --- a/components/dfs/include/dfs_posix.h +++ b/components/dfs/include/dfs_posix.h @@ -10,7 +10,8 @@ * Change Logs: * Date Author Notes * 2009-05-27 Yi.qiu The first version. - * 2010-07-18 Bernard add stat and statfs structure definitions. + * 2010-07-18 Bernard add stat and statfs structure definitions. + * 2011-05-16 Yi.qiu Change parameter name of rename, "new" is C++ key word. */ #ifndef __DFS_POSIX_H__ #define __DFS_POSIX_H__ @@ -100,7 +101,7 @@ int close(int d); int read(int fd, void *buf, size_t len); int write(int fd, const void *buf, size_t len); off_t lseek(int fd, off_t offset, int whence); -int rename(const char* old, const char* new ); +int rename(const char *from, const char *to); int unlink(const char *pathname); int stat(const char *file, struct stat *buf); int fstat(int fildes, struct stat *buf); diff --git a/components/external/libpng/pngconf.h b/components/external/libpng/pngconf.h index 0cc2fc355..047376302 100644 --- a/components/external/libpng/pngconf.h +++ b/components/external/libpng/pngconf.h @@ -22,13 +22,13 @@ #ifdef __RT_THREAD__ #include #define PNG_MAX_MALLOC_64K +#define PNG_NO_STDIO #ifndef RT_USING_NEWLIB #define PNG_NO_WRITE_SUPPORTED -#define PNG_NO_STDIO #define PNG_NO_SETJMP_SUPPORTED -#define malloc rtgui_malloc -#define free rtgui_free +#define malloc rtgui_malloc +#define free rtgui_free #endif #endif diff --git a/components/external/libz/zutil.c b/components/external/libz/zutil.c index 19d2760e6..16e9ac962 100644 --- a/components/external/libz/zutil.c +++ b/components/external/libz/zutil.c @@ -291,6 +291,7 @@ void zcfree (voidpf opaque, voidpf ptr) #ifndef MY_ZCALLOC /* Any system without a special alloc function */ +#ifdef RT_USING_RTGUI extern voidp rtgui_malloc OF((uInt size)); extern voidp rtgui_calloc OF((uInt items, uInt size)); extern void rtgui_free OF((voidpf ptr)); @@ -312,5 +313,25 @@ void zcfree (opaque, ptr) rtgui_free(ptr); if (opaque) return; /* make compiler happy */ } +#else +voidpf zcalloc (opaque, items, size) + voidpf opaque; + unsigned items; + unsigned size; +{ + if (opaque) items += size - size; /* make compiler happy */ + return sizeof(uInt) > 2 ? (voidpf)rt_malloc(items * size) : + (voidpf)rt_calloc(items, size); +} + +void zcfree (opaque, ptr) + voidpf opaque; + voidpf ptr; +{ + rt_free(ptr); + if (opaque) return; /* make compiler happy */ +} + +#endif #endif /* MY_ZCALLOC */ diff --git a/components/pthreads/posix_types.h b/components/pthreads/posix_types.h index fd913aee2..a2bb1aeac 100644 --- a/components/pthreads/posix_types.h +++ b/components/pthreads/posix_types.h @@ -176,15 +176,15 @@ struct timeval { #include #else typedef rt_uint16_t mode_t; -#define O_RDONLY 0000000 -#define O_WRONLY 0000001 -#define O_RDWR 0000002 -#define O_ACCMODE 0000003 -#define O_CREAT 0000100 -#define O_EXCL 0000200 -#define O_TRUNC 0001000 -#define O_APPEND 0002000 -#define O_DIRECTORY 0200000 +#define O_RDONLY 0x0000000 +#define O_WRONLY 0x0000001 +#define O_RDWR 0x0000002 +#define O_ACCMODE 0x0000003 +#define O_CREAT 0x0000100 +#define O_EXCL 0x0000200 +#define O_TRUNC 0x0001000 +#define O_APPEND 0x0002000 +#define O_DIRECTORY 0x0200000 #endif #elif defined (__GNUC__) /* GNU GCC Compiler, with minilibc */ -- GitLab