summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorguozhanxin <[email protected]>2023-05-17 17:17:38 +0800
committerMan, Jianting (Meco) <[email protected]>2023-05-17 12:09:10 -0400
commit82ccbc40db1d81eb35efd35f915096ddeee3b2b9 (patch)
treebfd1f7f922aab312b1555bf41c8549e295a37c96 /tools
parent48557de14897afb0965695d272d07f83f0b08c42 (diff)
support llvm-arm 16.0
Diffstat (limited to 'tools')
-rw-r--r--tools/llvm_arm.py57
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