diff options
| author | Bernard Xiong <[email protected]> | 2018-04-07 09:21:58 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-04-07 09:21:58 +0800 |
| commit | a8a2e55444b8a45b754f482e5c12a9e4aeafcbeb (patch) | |
| tree | 43e89517c43221921f3714ae5fe75c6eb7931f15 | |
| parent | 1d878887c03ade06284c9a193d815af089513978 (diff) | |
| parent | 570627b72f75cb39fbb602143f8edc9146e0507c (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/SConscript | 8 | ||||
| -rw-r--r-- | tools/iar.py | 35 |
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 |
