diff options
| author | Man, Jianting (Meco) <[email protected]> | 2022-04-07 02:24:11 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-04-07 14:24:11 +0800 |
| commit | c318dfa964c8967325b945fe851e9554fdae0638 (patch) | |
| tree | 53f0597bf2abe96632ac9c721b7f5f7c19f3fab4 /components | |
| parent | e68f934ff8c83d36f162b80e240e633b58949036 (diff) | |
improve libc time and MSVC simulator (#5775)
- [libc] 解决由于类unix操作系统发展历史原因fcntl.h定义的标志位在不同编译器中定义不同的问题
- [simulator] 部分宏定义转为全局宏定义以确保vs内置文件可以正确配置
- [simulator] 取消自欺欺人式的警告消除处理方式
- [libc][time] 优化time相关结构体在不同编译器下的包含
Diffstat (limited to 'components')
| -rw-r--r-- | components/libc/compilers/common/extension/SConscript | 11 | ||||
| -rw-r--r-- | components/libc/compilers/common/extension/fcntl/README.md | 4 | ||||
| -rw-r--r-- | components/libc/compilers/common/extension/fcntl/SConscript | 15 | ||||
| -rw-r--r-- | components/libc/compilers/common/extension/fcntl/octal/SConscript | 14 | ||||
| -rw-r--r-- | components/libc/compilers/common/extension/fcntl/octal/fcntl.h (renamed from components/libc/compilers/common/extension/fcntl.h) | 0 | ||||
| -rw-r--r-- | components/libc/compilers/common/sys/time.h | 14 |
6 files changed, 50 insertions, 8 deletions
diff --git a/components/libc/compilers/common/extension/SConscript b/components/libc/compilers/common/extension/SConscript index dbc26ac177..ddd83c8234 100644 --- a/components/libc/compilers/common/extension/SConscript +++ b/components/libc/compilers/common/extension/SConscript @@ -1,5 +1,5 @@ +import os from building import * - Import('rtconfig') src = [] @@ -9,6 +9,13 @@ group = [] src += Glob('*.c') -if rtconfig.PLATFORM != 'gcc' or rtconfig.ARCH == 'sim': +if rtconfig.PLATFORM != 'gcc': group = DefineGroup('Compiler', src, depend = [''], CPPPATH = CPPPATH) + +list = os.listdir(cwd) +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) + Return('group') diff --git a/components/libc/compilers/common/extension/fcntl/README.md b/components/libc/compilers/common/extension/fcntl/README.md new file mode 100644 index 0000000000..8866eace7c --- /dev/null +++ b/components/libc/compilers/common/extension/fcntl/README.md @@ -0,0 +1,4 @@ +Because of the history issue, flags in fcntl.h, such as O_CREAT, have difference types of value. Some OS use hex flags and others use octal flags. + +In terms of RT-Thread, Keil, IAR and MSVC use octal flags, which is located in the `tcntl/octal` folder; newlib uses hex flags; musl uses octal flags. + diff --git a/components/libc/compilers/common/extension/fcntl/SConscript b/components/libc/compilers/common/extension/fcntl/SConscript new file mode 100644 index 0000000000..4c815c49b8 --- /dev/null +++ b/components/libc/compilers/common/extension/fcntl/SConscript @@ -0,0 +1,15 @@ +# RT-Thread building script for bridge + +import os +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) + +Return('objs') diff --git a/components/libc/compilers/common/extension/fcntl/octal/SConscript b/components/libc/compilers/common/extension/fcntl/octal/SConscript new file mode 100644 index 0000000000..22d72dff05 --- /dev/null +++ b/components/libc/compilers/common/extension/fcntl/octal/SConscript @@ -0,0 +1,14 @@ +from building import * +Import('rtconfig') + +src = [] +cwd = GetCurrentDir() +CPPPATH = [cwd] +group = [] + +if rtconfig.PLATFORM == 'armcc' or\ + rtconfig.PLATFORM == 'armclang' or\ + rtconfig.PLATFORM == 'iar' or\ + rtconfig.CROSS_TOOL == 'msvc': + group = DefineGroup('Compiler', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/components/libc/compilers/common/extension/fcntl.h b/components/libc/compilers/common/extension/fcntl/octal/fcntl.h index c3bf851523..c3bf851523 100644 --- a/components/libc/compilers/common/extension/fcntl.h +++ b/components/libc/compilers/common/extension/fcntl/octal/fcntl.h diff --git a/components/libc/compilers/common/sys/time.h b/components/libc/compilers/common/sys/time.h index a3af31b20b..3fe6ae4a26 100644 --- a/components/libc/compilers/common/sys/time.h +++ b/components/libc/compilers/common/sys/time.h @@ -18,7 +18,9 @@ #include <time.h> #ifdef _WIN32 #include <winsock.h> /* for struct timeval */ -#endif +#include <corecrt.h> /* for __time64_t */ +typedef __time64_t time_t; +#endif /* _WIN32 */ #ifdef __cplusplus extern "C" { @@ -50,17 +52,17 @@ struct timeval time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* and microseconds */ }; -#endif +#endif /* !defined(_TIMEVAL_DEFINED) && !defined(_WIN32) */ -#if !(defined(__GNUC__) && !defined(__ARMCC_VERSION)/*GCC*/) && \ - !(defined(__ICCARM__) && (__VER__ >= 8010001)) && \ - !defined(_WIN32) +#if defined(__ARMCC_VERSION) || defined(_WIN32) || (defined(__ICCARM__) && (__VER__ >= 8010001)) struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* and nanoseconds */ }; +#endif /* defined(__ARMCC_VERSION) || defined(_WIN32) || (defined(__ICCARM__) && (__VER__ >= 8010001)) */ +#if !(defined(__GNUC__) && !defined(__ARMCC_VERSION)/*GCC*/) /* * Structure defined by POSIX.1b to be like a itimerval, but with * timespecs. Used in the timer_*() system calls. @@ -70,7 +72,7 @@ struct itimerspec struct timespec it_interval; struct timespec it_value; }; -#endif +#endif /* !(defined(__GNUC__) && !defined(__ARMCC_VERSION)) */ int stime(const time_t *t); time_t timegm(struct tm * const t); |
