Merge pull request #1342 from TanekLiang/iar8201

Auto remove macro _DLIB_THREAD_SUPPORT when IAR version higher than 8.20.1
This commit is contained in:
Bernard Xiong 2018-04-07 09:21:58 +08:00 committed by GitHub
commit a8a2e55444
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 1 deletions

View File

@ -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)

View File

@ -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)