From 82ccbc40db1d81eb35efd35f915096ddeee3b2b9 Mon Sep 17 00:00:00 2001 From: guozhanxin Date: Wed, 17 May 2023 17:17:38 +0800 Subject: support llvm-arm 16.0 --- components/libc/compilers/picolibc/README.md | 8 ++++++++ components/libc/compilers/picolibc/SConscript | 29 +++++++++++++++++++++++++++ components/libc/compilers/picolibc/syscall.c | 16 +++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 components/libc/compilers/picolibc/README.md create mode 100644 components/libc/compilers/picolibc/SConscript create mode 100644 components/libc/compilers/picolibc/syscall.c (limited to 'components/libc/compilers/picolibc') diff --git a/components/libc/compilers/picolibc/README.md b/components/libc/compilers/picolibc/README.md new file mode 100644 index 0000000000..af766e7ca7 --- /dev/null +++ b/components/libc/compilers/picolibc/README.md @@ -0,0 +1,8 @@ +# PICOLIBC (LLVM-ARM) porting for RT-Thread + +https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm + +https://github.com/picolibc/picolibc + + + diff --git a/components/libc/compilers/picolibc/SConscript b/components/libc/compilers/picolibc/SConscript new file mode 100644 index 0000000000..999f7cca56 --- /dev/null +++ b/components/libc/compilers/picolibc/SConscript @@ -0,0 +1,29 @@ +import os +from building import * +from llvm_arm import * +Import('rtconfig') + +group = [] + +picolibc_version = GetPicoLibcVersion(rtconfig) + +if picolibc_version and not GetDepend('RT_USING_EXTERNAL_LIBC'): + print('PicoLibc version: ' + picolibc_version) + + cwd = GetCurrentDir() + src = Glob('*.c') + + CPPPATH = [cwd] + CPPDEFINES = ['RT_USING_PICOLIBC', 'RT_USING_LIBC', '_POSIX_C_SOURCE=1', '__PICOLIBC_ERRNO_FUNCTION=pico_get_errno'] # identify this is Newlib, and only enable POSIX.1-1990 + # LIBS = ['c', 'm'] # link libc and libm + AddDepend(['RT_USING_PICOLIBC', 'RT_USING_LIBC']) + + group = group + DefineGroup('Compiler', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)#, LIBS = LIBS) + + 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/picolibc/syscall.c b/components/libc/compilers/picolibc/syscall.c new file mode 100644 index 0000000000..882964a1f3 --- /dev/null +++ b/components/libc/compilers/picolibc/syscall.c @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-05-17 Flybreak the first version + */ + +#include + +int pico_get_errno(void) +{ + return rt_get_errno(); +} -- cgit v1.3.1