mirror of https://github.com/ARMmbed/mbed-os.git
Review fixes for uvision exporter,build_api and arm.py
parent
22da2be37f
commit
4e7d34bbb6
|
@ -135,7 +135,6 @@ def get_toolchain_name(target, toolchain_name):
|
||||||
if ("ARMC5" in target.supported_toolchains):
|
if ("ARMC5" in target.supported_toolchains):
|
||||||
return "uARM" #use ARM_MICRO to use AC5+microlib
|
return "uARM" #use ARM_MICRO to use AC5+microlib
|
||||||
else:
|
else:
|
||||||
target.default_toolchain = "uARM"
|
|
||||||
return "ARMC6" #use AC6+microlib
|
return "ARMC6" #use AC6+microlib
|
||||||
else:
|
else:
|
||||||
if toolchain_name == "ARM":
|
if toolchain_name == "ARM":
|
||||||
|
@ -310,7 +309,8 @@ def target_supports_toolchain(target, toolchain_name):
|
||||||
return any(tc in target.supported_toolchains for tc in ("ARMC5","ARMC6","uARM"))
|
return any(tc in target.supported_toolchains for tc in ("ARMC5","ARMC6","uARM"))
|
||||||
if(toolchain_name == "ARMC6"):
|
if(toolchain_name == "ARMC6"):
|
||||||
#we did not find ARMC6, but check for ARM is listed
|
#we did not find ARMC6, but check for ARM is listed
|
||||||
return any(tc in target.supported_toolchains for tc in ("ARM",))
|
return "ARM" in target.supported_toolchains
|
||||||
|
#return False in other cases
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
ARM_COMPILERS = ("ARM", "ARMC6", "uARM")
|
ARM_COMPILERS = ("ARM", "ARMC6", "uARM")
|
||||||
|
@ -354,7 +354,13 @@ def prepare_toolchain(src_paths, build_dir, target, toolchain_name,
|
||||||
"Target {} is not supported by toolchain {}".format(
|
"Target {} is not supported by toolchain {}".format(
|
||||||
target.name, toolchain_name))
|
target.name, toolchain_name))
|
||||||
|
|
||||||
toolchain_name = get_toolchain_name(target, toolchain_name)
|
selected_toolchain_name = get_toolchain_name(target, toolchain_name)
|
||||||
|
|
||||||
|
#If a target supports ARMC6 and we want to build UARM with it,
|
||||||
|
#then set the default_toolchain to uARM to link AC6 microlib.
|
||||||
|
if(selected_toolchain_name == "ARMC6" and toolchain_name == "uARM"):
|
||||||
|
target.default_toolchain = "uARM"
|
||||||
|
toolchain_name = selected_toolchain_name
|
||||||
|
|
||||||
try:
|
try:
|
||||||
cur_tc = TOOLCHAIN_CLASSES[toolchain_name]
|
cur_tc = TOOLCHAIN_CLASSES[toolchain_name]
|
||||||
|
@ -993,7 +999,13 @@ def build_mbed_libs(target, toolchain_name, clean=False, macros=None,
|
||||||
Return - True if target + toolchain built correctly, False if not supported
|
Return - True if target + toolchain built correctly, False if not supported
|
||||||
"""
|
"""
|
||||||
|
|
||||||
toolchain_name = get_toolchain_name(target, toolchain_name)
|
selected_toolchain_name = get_toolchain_name(target, toolchain_name)
|
||||||
|
|
||||||
|
#If a target supports ARMC6 and we want to build UARM with it,
|
||||||
|
#then set the default_toolchain to uARM to link AC6 microlib.
|
||||||
|
if(selected_toolchain_name == "ARMC6" and toolchain_name == "uARM"):
|
||||||
|
target.default_toolchain = "uARM"
|
||||||
|
toolchain_name = selected_toolchain_name
|
||||||
|
|
||||||
if report is not None:
|
if report is not None:
|
||||||
start = time()
|
start = time()
|
||||||
|
|
|
@ -315,9 +315,15 @@ class UvisionArmc5(Uvision):
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_target_supported(cls, target_name):
|
def is_target_supported(cls, target_name):
|
||||||
target = TARGET_MAP[target_name]
|
target = TARGET_MAP[target_name]
|
||||||
if not (set(target.supported_toolchains).intersection(
|
if int(target.build_tools_metadata["version"]) > 0:
|
||||||
set(["ARMC5", "uARM"]))):
|
if not (set(target.supported_toolchains).intersection(
|
||||||
return False
|
set(["ARMC5", "uARM"]))):
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
if not (set(target.supported_toolchains).intersection(
|
||||||
|
set(["ARM", "uARM"]))):
|
||||||
|
return False
|
||||||
|
|
||||||
if not DeviceCMSIS.check_supported(target_name):
|
if not DeviceCMSIS.check_supported(target_name):
|
||||||
return False
|
return False
|
||||||
if "Cortex-A" in target.core:
|
if "Cortex-A" in target.core:
|
||||||
|
@ -338,9 +344,15 @@ class UvisionArmc6(Uvision):
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_target_supported(cls, target_name):
|
def is_target_supported(cls, target_name):
|
||||||
target = TARGET_MAP[target_name]
|
target = TARGET_MAP[target_name]
|
||||||
if not (set(target.supported_toolchains).intersection(
|
if int(target.build_tools_metadata["version"]) > 0:
|
||||||
set(["ARM", "ARMC6", "uARM"]))):
|
if not (set(target.supported_toolchains).intersection(
|
||||||
return False
|
set(["ARM", "ARMC6", "uARM"]))):
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
if not (set(target.supported_toolchains).intersection(
|
||||||
|
set(["ARMC6"]))):
|
||||||
|
return False
|
||||||
|
|
||||||
if not DeviceCMSIS.check_supported(target_name):
|
if not DeviceCMSIS.check_supported(target_name):
|
||||||
return False
|
return False
|
||||||
if "Cortex-A" in target.core:
|
if "Cortex-A" in target.core:
|
||||||
|
|
|
@ -343,7 +343,7 @@ class ARM_STD(ARM):
|
||||||
ARM.__init__(self, target, notify, macros, build_dir=build_dir,
|
ARM.__init__(self, target, notify, macros, build_dir=build_dir,
|
||||||
build_profile=build_profile)
|
build_profile=build_profile)
|
||||||
#check only for ARMC5 because ARM_STD means using ARMC5, and thus supported_toolchains must include ARMC5
|
#check only for ARMC5 because ARM_STD means using ARMC5, and thus supported_toolchains must include ARMC5
|
||||||
if not set(("ARMC5",)).intersection(set(target.supported_toolchains)):
|
if "ARMC5" not in target.supported_toolchains:
|
||||||
raise NotSupportedException("ARM compiler 5 support is required for ARM build")
|
raise NotSupportedException("ARM compiler 5 support is required for ARM build")
|
||||||
|
|
||||||
class ARM_MICRO(ARM):
|
class ARM_MICRO(ARM):
|
||||||
|
@ -356,7 +356,7 @@ class ARM_MICRO(ARM):
|
||||||
|
|
||||||
#At this point we already know that we want to use ARMC5+Microlib, so check for if they are supported
|
#At this point we already know that we want to use ARMC5+Microlib, so check for if they are supported
|
||||||
#For, AC6+Microlib we still use ARMC6 class
|
#For, AC6+Microlib we still use ARMC6 class
|
||||||
if not set(("uARM","ARMC5")).intersection(set(target.supported_toolchains)) == set(("uARM","ARMC5")):
|
if not set(("uARM","ARMC5")).issubset(set(target.supported_toolchains)):
|
||||||
raise NotSupportedException("ARM/uARM compiler support is required for ARM build")
|
raise NotSupportedException("ARM/uARM compiler support is required for ARM build")
|
||||||
ARM.__init__(self, target, notify, macros, build_dir=build_dir,
|
ARM.__init__(self, target, notify, macros, build_dir=build_dir,
|
||||||
build_profile=build_profile)
|
build_profile=build_profile)
|
||||||
|
|
Loading…
Reference in New Issue