summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2018-04-07 09:21:58 +0800
committerGitHub <[email protected]>2018-04-07 09:21:58 +0800
commita8a2e55444b8a45b754f482e5c12a9e4aeafcbeb (patch)
tree43e89517c43221921f3714ae5fe75c6eb7931f15
parent1d878887c03ade06284c9a193d815af089513978 (diff)
parent570627b72f75cb39fbb602143f8edc9146e0507c (diff)
Merge pull request #1342 from TanekLiang/iar8201
Auto remove macro _DLIB_THREAD_SUPPORT when IAR version higher than 8.20.1
-rw-r--r--components/libc/compilers/dlib/SConscript8
-rw-r--r--tools/iar.py35
2 files changed, 42 insertions, 1 deletions
diff --git a/components/libc/compilers/dlib/SConscript b/components/libc/compilers/dlib/SConscript
index 8ae7484894..47fa8de83d 100644
--- a/components/libc/compilers/dlib/SConscript
+++ b/components/libc/compilers/dlib/SConscript
@@ -1,4 +1,7 @@
from building import *
+from distutils.version import LooseVersion
+from iar import IARVersion
+
Import('rtconfig')
src = Glob('*.c')
@@ -11,7 +14,10 @@ CPPDEFINES = ['RT_USING_DLIBC']
if rtconfig.PLATFORM == 'iar':
if GetDepend('RT_USING_DFS'):
- CPPDEFINES = CPPDEFINES + ['_DLIB_FILE_DESCRIPTOR', '_DLIB_THREAD_SUPPORT']
+ CPPDEFINES = CPPDEFINES + ['_DLIB_FILE_DESCRIPTOR']
+
+ if LooseVersion(IARVersion()) < LooseVersion("8.20.1"):
+ CPPDEFINES = CPPDEFINES + ['_DLIB_THREAD_SUPPORT']
group = DefineGroup('dlib', src, depend = ['RT_USING_LIBC'],
CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
diff --git a/tools/iar.py b/tools/iar.py
index b5a012e4c5..09271ba4eb 100644
--- a/tools/iar.py
+++ b/tools/iar.py
@@ -156,3 +156,38 @@ def IARProject(target, script):
out.close()
IARWorkspace(target)
+
+def IARVersion():
+ import subprocess
+ import re
+
+ def IARPath():
+ import rtconfig
+
+ # set environ
+ old_environ = os.environ
+ os.environ['RTT_CC'] = 'iar'
+ reload(rtconfig)
+
+ # get iar path
+ path = rtconfig.EXEC_PATH
+
+ # restore environ
+ os.environ = old_environ
+ reload(rtconfig)
+
+ return path
+
+ path = IARPath();
+
+ if os.path.exists(path):
+ cmd = os.path.join(path, 'iccarm.exe')
+ else:
+ print('Get IAR version error. Please update IAR installation path in rtconfig.h!')
+ return "0.0"
+
+ child = subprocess.Popen([cmd, '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+ stdout, stderr = child.communicate()
+
+ # example stdout: IAR ANSI C/C++ Compiler V8.20.1.14183/W32 for ARM
+ return re.search('[\d\.]+', stdout).group(0) \ No newline at end of file