diff options
| author | guozhanxin <[email protected]> | 2023-05-17 17:17:38 +0800 |
|---|---|---|
| committer | Man, Jianting (Meco) <[email protected]> | 2023-05-17 12:09:10 -0400 |
| commit | 82ccbc40db1d81eb35efd35f915096ddeee3b2b9 (patch) | |
| tree | bfd1f7f922aab312b1555bf41c8549e295a37c96 /tools | |
| parent | 48557de14897afb0965695d272d07f83f0b08c42 (diff) | |
support llvm-arm 16.0
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/llvm_arm.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tools/llvm_arm.py b/tools/llvm_arm.py new file mode 100644 index 0000000000..e7910ce141 --- /dev/null +++ b/tools/llvm_arm.py @@ -0,0 +1,57 @@ +# +# File : llvm_arm.py +# This file is part of RT-Thread RTOS +# COPYRIGHT (C) 2006 - 2018, RT-Thread Development Team +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Change Logs: +# Date Author Notes +# 2023-05-17 Flybreak The first version + +import os +import re +import platform + +def GetLLVM_ARMRoot(rtconfig): + exec_path = rtconfig.EXEC_PATH + lib_path = 'lib/clang-runtimes/arm-none-eabi' + root_path = os.path.join(exec_path, '..', lib_path) + + return root_path + +def CheckHeader(rtconfig, filename): + root = GetLLVM_ARMRoot(rtconfig) + config = re.findall(r"--config (.*)\.cfg", rtconfig.CFLAGS) + if config: + fn = os.path.join(root, config[0], 'include', filename) + if os.path.isfile(fn): + return True + + return False + +def GetPicoLibcVersion(rtconfig): + version = None + root = GetLLVM_ARMRoot(rtconfig) + if CheckHeader(rtconfig, 'picolibc.h'): # get version from picolibc.h file + config = re.findall(r"--config (.*)\.cfg", rtconfig.CFLAGS) + fn = os.path.join(root, config[0], 'include', 'picolibc.h') + f = open(fn, 'r') + if f: + for line in f: + if line.find('__PICOLIBC_VERSION__') != -1 and line.find('"') != -1: + version = re.search(r'\"([^"]+)\"', line).groups()[0] + f.close() + return version |
