diff --git a/filesystem/dfs/SConscript b/filesystem/dfs/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..a53a8dca23665914fa93782ba818a49dd34bc7a2 --- /dev/null +++ b/filesystem/dfs/SConscript @@ -0,0 +1,76 @@ +Import('env') +Import('rtconfig') +Import('RTT_ROOT') + +dfs = Split(""" +src/dfs_cache.c +src/dfs_fs.c +src/dfs_init.c +src/dfs_posix.c +src/dfs_raw.c +src/dfs_util.c +""") + +# DFS-FatFs options +fatfs = Split(""" +filesystems/fatfs/fatfs_cache.c +filesystems/fatfs/fatfs_direntry.c +filesystems/fatfs/fatfs_fat.c +filesystems/fatfs/fatfs_file.c +filesystems/fatfs/fatfs_filename.c +filesystems/fatfs/fatfs_init.c +filesystems/fatfs_misc.c +filesystems/fatfs/fatfs_mount.c""") + +# DFS-EFSL options +efsl = Split(""" +filesystems/efsl/src/base/efs.c +filesystems/efsl/src/base/extract.c +filesystems/efsl/src/base/partition.c +filesystems/efsl/src/base/plibc.c +filesystems/efsl/src/fs/vfat/dir.c +filesystems/efsl/src/fs/vfat/fat.c +filesystems/efsl/src/fs/vfat/file.c +filesystems/efsl/src/fs/vfat/fs.c +filesystems/efsl/src/fs/vfat/ls.c +filesystems/efsl/src/fs/vfat/time.c +filesystems/efsl/src/fs/vfat/ui.c +""") + +# DFS-YAFFS2 options +yaffs2_main = Split(""" +filesystems/yaffs2/direct/yaffscfg.c +filesystems/yaffs2/direct/yaffs_fileem.c +filesystems/yaffs2/direct/yaffsfs.c +filesystems/yaffs2/direct/dfs_yaffs2.c +""") + +yaffs2_comm = Split(""" +filesystems/yaffs2/yaffs_ecc.c +filesystems/yaffs2/yaffs_guts.c +filesystems/yaffs2/yaffs_packedtags1.c +filesystems/yaffs2/yaffs_tagscompat.c +filesystems/yaffs2/yaffs_packedtags2.c +filesystems/yaffs2/yaffs_tagsvalidity.c +filesystems/yaffs2/yaffs_nand.c +filesystems/yaffs2/yaffs_checkptrw.c +filesystems/yaffs2/yaffs_qsort.c +""") + +# The set of source files associated with this SConscript file. +src_local = dfs +path = [RTT_ROOT + '/filesystem/dfs', RTT_ROOT + '/filesystem/dfs/include'] + +if rtconfig.RT_USING_DFS_YAFFS2: + src_local = src_local + yaffs2_main + yaffs2_comm + path = path + [RTT_ROOT + '/filesystem/dfs/filesystems/yaffs2', RTT_ROOT + '/filesystem/dfs/filesystems/yaffs2/direct'] + +if rtconfig.RT_USING_DFS_EFSL: + src_local = src_local + efsl + path = path + [RTT_ROOT + '/filesystem/dfs/filesystems/efsl/src/include', RTT_ROOT + '/filesystem/dfs/filesystems/efsl/src/base/include', RTT_ROOT + '/filesystem/dfs/filesystems/efsl/src/fs/vfat/include'] + +env.Append(CPPPATH = path) + +obj = env.Object(src_local) + +Return('obj') diff --git a/finsh/SConscript b/finsh/SConscript index 6e71c13fc3fee7082324e45f9b18add43e7fd55b..0a638c10aac942b79ad7938d46c6229a9998bbc6 100644 --- a/finsh/SConscript +++ b/finsh/SConscript @@ -1,7 +1,10 @@ Import('env') +Import('RTT_ROOT') # The set of source files associated with this SConscript file. src_local = Glob('*.c') +env.Append(CPPPATH = RTT_ROOT + '/finsh') + obj = env.Object(src_local) Return('obj') diff --git a/libc/minilibc/SConscript b/libc/minilibc/SConscript index 6e71c13fc3fee7082324e45f9b18add43e7fd55b..729d2fea00bcae93a7c9905ade60b34be43a00ae 100644 --- a/libc/minilibc/SConscript +++ b/libc/minilibc/SConscript @@ -1,7 +1,10 @@ Import('env') +Import('RTT_ROOT') # The set of source files associated with this SConscript file. src_local = Glob('*.c') +env.Append(CPPPATH = RTT_ROOT + '/libc/minilibc') + obj = env.Object(src_local) Return('obj') diff --git a/libc/minilibc/time.c b/libc/minilibc/time.c new file mode 100644 index 0000000000000000000000000000000000000000..4c39c3c25d455c64ebd29f8430fcf453676002bb --- /dev/null +++ b/libc/minilibc/time.c @@ -0,0 +1,174 @@ +#include + +/* days per month -- nonleap! */ +const short __spm[13] = + { 0, + (31), + (31+28), + (31+28+31), + (31+28+31+30), + (31+28+31+30+31), + (31+28+31+30+31+30), + (31+28+31+30+31+30+31), + (31+28+31+30+31+30+31+31), + (31+28+31+30+31+30+31+31+30), + (31+28+31+30+31+30+31+31+30+31), + (31+28+31+30+31+30+31+31+30+31+30), + (31+28+31+30+31+30+31+31+30+31+30+31), + }; +static long int timezone; +static const char days[] = "Sun Mon Tue Wed Thu Fri Sat "; +static const char months[] = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec "; + +/* seconds per day */ +#define SPD 24*60*60 + +int __isleap(int year) { + /* every fourth year is a leap year except for century years that are + * not divisible by 400. */ +/* return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); */ + return (!(year%4) && ((year%100) || !(year%400))); +} + +struct tm *gmtime_r(const time_t *timep, struct tm *r) { + time_t i; + register time_t work=*timep%(SPD); + r->tm_sec=work%60; work/=60; + r->tm_min=work%60; r->tm_hour=work/60; + work=*timep/(SPD); + r->tm_wday=(4+work)%7; + for (i=1970; ; ++i) { + register time_t k=__isleap(i)?366:365; + if (work>=k) + work-=k; + else + break; + } + r->tm_year=i-1900; + r->tm_yday=work; + + r->tm_mday=1; + if (__isleap(i) && (work>58)) { + if (work==59) r->tm_mday=2; /* 29.2. */ + work-=1; + } + + for (i=11; i && (__spm[i]>work); --i) ; + r->tm_mon=i; + r->tm_mday+=work-__spm[i]; + return r; +} + +struct tm* localtime_r(const time_t* t, struct tm* r) { + time_t tmp; + struct timezone tz; + gettimeofday(0, &tz); + timezone=tz.tz_minuteswest*60L; + tmp=*t+timezone; + return gmtime_r(&tmp,r); +} + +struct tm* localtime(const time_t* t) { + static struct tm tmp; + return localtime_r(t,&tmp); +} + +time_t timegm(struct tm *const t) { + register time_t day; + register time_t i; + register time_t years = t->tm_year - 70; + + if (t->tm_sec>60) { t->tm_min += t->tm_sec/60; t->tm_sec%=60; } + if (t->tm_min>60) { t->tm_hour += t->tm_min/60; t->tm_min%=60; } + if (t->tm_hour>60) { t->tm_mday += t->tm_hour/60; t->tm_hour%=60; } + if (t->tm_mon>12) { t->tm_year += t->tm_mon/12; t->tm_mon%=12; } + while (t->tm_mday>__spm[1+t->tm_mon]) { + if (t->tm_mon==1 && __isleap(t->tm_year+1900)) { + if (t->tm_mon==31+29) break; + --t->tm_mday; + } + t->tm_mday-=__spm[t->tm_mon]; + ++t->tm_mon; + if (t->tm_mon>11) { t->tm_mon=0; ++t->tm_year; } + } + + if (t->tm_year < 70) + return (time_t) -1; + + /* Days since 1970 is 365 * number of years + number of leap years since 1970 */ + day = years * 365 + (years + 1) / 4; + + /* After 2100 we have to substract 3 leap years for every 400 years + This is not intuitive. Most mktime implementations do not support + dates after 2059, anyway, so we might leave this out for it's + bloat. */ + if ((years -= 131) >= 0) { + years /= 100; + day -= (years >> 2) * 3 + 1; + if ((years &= 3) == 3) years--; + day -= years; + } + + day += t->tm_yday = __spm [t->tm_mon] + t->tm_mday-1 + ( __isleap (t->tm_year+1900) & (t->tm_mon > 1) ); + + /* day is now the number of days since 'Jan 1 1970' */ + i = 7; + t->tm_wday = (day + 4) % i; /* Sunday=0, Monday=1, ..., Saturday=6 */ + + i = 24; + day *= i; + i = 60; + return ((day + t->tm_hour) * i + t->tm_min) * i + t->tm_sec; +} + +time_t mktime(register struct tm* const t) { + time_t x=timegm(t); + struct timezone tz; + gettimeofday(0, &tz); + timezone=tz.tz_minuteswest*60L; + x+=timezone; + return x; +} + +static void num2str(char *c,int i) { + c[0]=i/10+'0'; + c[1]=i%10+'0'; +} + +char *asctime_r(const struct tm *t, char *buf) { + /* "Wed Jun 30 21:49:08 1993\n" */ + *(int*)buf=*(int*)(days+(t->tm_wday<<2)); + *(int*)(buf+4)=*(int*)(months+(t->tm_mon<<2)); + num2str(buf+8,t->tm_mday); + if (buf[8]=='0') buf[8]=' '; + buf[10]=' '; + num2str(buf+11,t->tm_hour); + buf[13]=':'; + num2str(buf+14,t->tm_min); + buf[16]=':'; + num2str(buf+17,t->tm_sec); + buf[19]=' '; + num2str(buf+20,(t->tm_year+1900)/100); + num2str(buf+22,(t->tm_year+1900)%100); + buf[24]='\n'; + return buf; +} + +char *asctime(const struct tm *timeptr) { + static char buf[25]; + return asctime_r(timeptr,buf); +} + +char *ctime(const time_t *timep) { + return asctime(localtime(timep)); +} + +int gettimeofday (struct timeval *tp, void *ignore) +{ + time_t t; + + t = time(NULL); + tp->tv_sec = t; + tp->tv_usec = 0; + return 0; +} diff --git a/libcpu/SConscript b/libcpu/SConscript index 1ea8ff784cdf967352f57be36dd1b1e8f2d491ac..4fea9186032e76daa8316b8ed685b312e8dc9f9c 100644 --- a/libcpu/SConscript +++ b/libcpu/SConscript @@ -11,5 +11,8 @@ if rtconfig.CC == 'armcc': if rtconfig.CC == 'gcc': src_local = Glob(path + '/*.c') + Glob(path + '/*_gcc.s') + Glob(comm + '/*.c') +if rtconfig.CC == 'iar': + src_local = Glob(path + '/*.c') + Glob(path + '/*_iar.s') + Glob(comm + '/*.c') + obj = env.Object(src_local) Return('obj') diff --git a/net/lwip/SConscript b/net/lwip/SConscript index 92dff9559e4751d800143336f36ec1eb718fbcca..8c1d1cc4740af54af2ae0a6d42c46329f2db6105 100644 --- a/net/lwip/SConscript +++ b/net/lwip/SConscript @@ -62,8 +62,8 @@ src/netif/ppp/vj.c # The set of source files associated with this SConscript file. path = [RTT_ROOT + '/net/lwip/src/include', RTT_ROOT + '/net/lwip/src/include/ipv4', RTT_ROOT + '/net/lwip/src/arch/include/arch', RTT_ROOT + '/net/lwip/src/include/netif', RTT_ROOT + '/net/lwip/src/netif/ppp'] -lwip_env = env.Clone() -lwip_env.Append(CPPPATH = path) +env.Clone() +env.Append(CPPPATH = path) obj = lwip_env.Object(src_local)