Fixes for exporters failing with wrong compiler settings

pull/9888/head
Senthil Ramakrishnan 2019-03-01 13:21:06 -06:00
parent 99674833c7
commit e1e4456c47
3 changed files with 47 additions and 7 deletions

View File

@ -114,6 +114,14 @@ class EclipseGcc(Eclipse, GccArm):
class EclipseArmc5(Eclipse, Armc5):
LOAD_EXE = False
NAME = "Eclipse-Armc5"
@classmethod
def is_target_supported(cls, target_name):
target = TARGET_MAP[target_name]
if int(target.build_tools_metadata["version"]) > 0:
return "ARMC5" in target.supported_toolchains;
else:
return True
class EclipseIAR(Eclipse, IAR):
LOAD_EXE = True

View File

@ -273,12 +273,45 @@ class Armc5(Arm):
NAME = 'Make-ARMc5'
TOOLCHAIN = "ARM"
PREPROCESS_ASM = True
@classmethod
def is_target_supported(cls, target_name):
target = TARGET_MAP[target_name]
if int(target.build_tools_metadata["version"]) > 0:
#Although toolchain name is set to ARM above we should check for ARMC5 for 5.12/onwards
if "ARMC5" not in target.supported_toolchains:
return False
return apply_supported_whitelist(
cls.TOOLCHAIN, cls.POST_BINARY_WHITELIST, target)
class Armc6(Arm):
"""ARM Compiler 6 (armclang) specific generic makefile target"""
NAME = 'Make-ARMc6'
TOOLCHAIN = "ARMC6"
@classmethod
def is_target_supported(cls, target_name):
target = TARGET_MAP[target_name]
if int(target.build_tools_metadata["version"]) > 0:
if not (len(set(target.supported_toolchains).intersection(
set(["ARM", "ARMC6"]))) > 0):
return False
if not apply_supported_whitelist(
cls.TOOLCHAIN, cls.POST_BINARY_WHITELIST, target):
#ARMC6 is not in the list, but also check for ARM as ARM represents ARMC6 for 5.12/onwards
#and still keep cls.TOOLCHAIN as ARMC6 as thats the toolchain we want to use
return apply_supported_whitelist(
"ARM", cls.POST_BINARY_WHITELIST, target)
else:
return True
else:
return apply_supported_whitelist(
cls.TOOLCHAIN, cls.POST_BINARY_WHITELIST, target)
class IAR(Makefile):
"""IAR specific makefile target"""

View File

@ -316,8 +316,8 @@ class UvisionArmc5(Uvision):
def is_target_supported(cls, target_name):
target = TARGET_MAP[target_name]
if int(target.build_tools_metadata["version"]) > 0:
if not (set(target.supported_toolchains).intersection(
set(["ARMC5", "uARM"]))):
#Just check for ARMC5 as ARMC5 must be there irrespective of whether uARM is there or not if the target is staying with ARMC5
if "ARMC5" not in target.supported_toolchains:
return False
else:
if not (set(target.supported_toolchains).intersection(
@ -345,12 +345,11 @@ class UvisionArmc6(Uvision):
def is_target_supported(cls, target_name):
target = TARGET_MAP[target_name]
if int(target.build_tools_metadata["version"]) > 0:
if not (set(target.supported_toolchains).intersection(
set(["ARM", "ARMC6", "uARM"]))):
if not len(set(target.supported_toolchains).intersection(
set(["ARM", "ARMC6"]))) > 0:
return False
else:
if not (set(target.supported_toolchains).intersection(
set(["ARMC6"]))):
if "ARMC6" not in target.supported_toolchains:
return False
if not DeviceCMSIS.check_supported(target_name):