mirror of https://github.com/ARMmbed/mbed-os.git
psa: Remove exporters for TF-M targets
Targets that use TF-M for their PSA implementation are not compatible with exporters at this time. Explicitly block use of exporters with TF-M using targets, for better error messages. Signed-off-by: Devaraj Ranganna <devaraj.ranganna@arm.com>pull/12737/head
parent
fd74d678a7
commit
b79b33219b
|
@ -53,9 +53,12 @@ class CCES(Exporter):
|
|||
target_name - the name of the target.
|
||||
"""
|
||||
target = TARGET_MAP[target_name]
|
||||
if not target.is_TFM_target:
|
||||
return (cls.TOOLCHAIN in target.supported_toolchains) \
|
||||
and hasattr(target, "device_name") \
|
||||
and (target.device_name in SUPPORTED_DEVICES)
|
||||
else:
|
||||
return False
|
||||
|
||||
@property
|
||||
def flags(self):
|
||||
|
|
|
@ -122,10 +122,13 @@ class EclipseArmc5(Eclipse, Armc5):
|
|||
@classmethod
|
||||
def is_target_supported(cls, target_name):
|
||||
target = TARGET_MAP[target_name]
|
||||
if not target.is_TFM_target:
|
||||
if int(target.build_tools_metadata["version"]) > 0:
|
||||
return "ARMC5" in target.supported_toolchains
|
||||
else:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
class EclipseIAR(Eclipse, IAR):
|
||||
LOAD_EXE = True
|
||||
|
|
|
@ -129,7 +129,10 @@ class CMSIS(Exporter):
|
|||
@classmethod
|
||||
def is_target_supported(cls, target_name):
|
||||
target = TARGET_MAP[target_name]
|
||||
if not target.is_TFM_target:
|
||||
return cls.TOOLCHAIN in target.supported_toolchains
|
||||
else:
|
||||
return False
|
||||
|
||||
def make_key(self, src):
|
||||
"""turn a source file into its group name"""
|
||||
|
|
|
@ -325,8 +325,11 @@ class Exporter(with_metaclass(ABCMeta, object)):
|
|||
target_name - the name of the target.
|
||||
"""
|
||||
target = TARGET_MAP[target_name]
|
||||
if not target.is_TFM_target:
|
||||
return bool(set(target.resolution_order_names).intersection(set(cls.TARGETS))) \
|
||||
and cls.TOOLCHAIN in target.supported_toolchains
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
@classmethod
|
||||
|
@ -351,6 +354,7 @@ class Exporter(with_metaclass(ABCMeta, object)):
|
|||
def apply_supported_whitelist(compiler, whitelist, target):
|
||||
"""Generate a list of supported targets for a given compiler and post-binary hook
|
||||
white-list."""
|
||||
if not target.is_TFM_target:
|
||||
if compiler not in target.supported_toolchains:
|
||||
return False
|
||||
if not hasattr(target, "post_binary_hook"):
|
||||
|
@ -359,3 +363,5 @@ def apply_supported_whitelist(compiler, whitelist, target):
|
|||
return True
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
|
|
@ -18,6 +18,7 @@ from multiprocessing import cpu_count
|
|||
|
||||
|
||||
def _supported(mcu, iar_targets):
|
||||
if not mcu.is_TFM_target:
|
||||
if "IAR" not in mcu.supported_toolchains:
|
||||
return False
|
||||
if hasattr(mcu, 'device_name') and mcu.device_name in iar_targets:
|
||||
|
@ -25,6 +26,8 @@ def _supported(mcu, iar_targets):
|
|||
if mcu.name in iar_targets:
|
||||
return True
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
_iar_defs = os.path.join(
|
||||
|
|
|
@ -289,6 +289,7 @@ class Armc5(Arm):
|
|||
@classmethod
|
||||
def is_target_supported(cls, target_name):
|
||||
target = TARGET_MAP[target_name]
|
||||
if not target.is_TFM_target:
|
||||
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:
|
||||
|
@ -301,6 +302,8 @@ class Armc5(Arm):
|
|||
"ARMC5", cls.POST_BINARY_WHITELIST, target
|
||||
)
|
||||
return arm_res or armc5_res
|
||||
else:
|
||||
return False
|
||||
|
||||
class Armc6(Arm):
|
||||
"""ARM Compiler 6 (armclang) specific generic makefile target"""
|
||||
|
@ -310,7 +313,7 @@ class Armc6(Arm):
|
|||
@classmethod
|
||||
def is_target_supported(cls, target_name):
|
||||
target = TARGET_MAP[target_name]
|
||||
|
||||
if not target.is_TFM_target:
|
||||
if int(target.build_tools_metadata["version"]) > 0:
|
||||
if not (len(set(target.supported_toolchains).intersection(
|
||||
set(["ARM", "ARMC6"]))) > 0):
|
||||
|
@ -327,6 +330,8 @@ class Armc6(Arm):
|
|||
else:
|
||||
return apply_supported_whitelist(
|
||||
cls.TOOLCHAIN, cls.POST_BINARY_WHITELIST, target)
|
||||
else:
|
||||
return
|
||||
|
||||
|
||||
class IAR(Makefile):
|
||||
|
|
|
@ -298,10 +298,12 @@ class Sw4STM32(GNUARMEclipse):
|
|||
@classmethod
|
||||
def is_target_supported(cls, target_name):
|
||||
target = TARGET_MAP[target_name]
|
||||
if not target.is_TFM_target:
|
||||
target_supported = bool(set(target.resolution_order_names)
|
||||
.intersection(set(cls.BOARDS.keys())))
|
||||
toolchain_supported = cls.TOOLCHAIN in target.supported_toolchains
|
||||
return target_supported and toolchain_supported
|
||||
return False
|
||||
|
||||
def __gen_dir(self, dir_name):
|
||||
"""
|
||||
|
|
|
@ -390,6 +390,7 @@ class UvisionArmc5(Uvision):
|
|||
@classmethod
|
||||
def is_target_supported(cls, target_name):
|
||||
target = TARGET_MAP[target_name]
|
||||
if not target.is_TFM_target:
|
||||
if int(target.build_tools_metadata["version"]) > 0:
|
||||
# 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:
|
||||
|
@ -409,6 +410,8 @@ class UvisionArmc5(Uvision):
|
|||
return True
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
class UvisionArmc6(Uvision):
|
||||
|
@ -419,6 +422,7 @@ class UvisionArmc6(Uvision):
|
|||
@classmethod
|
||||
def is_target_supported(cls, target_name):
|
||||
target = TARGET_MAP[target_name]
|
||||
if not target.is_TFM_target:
|
||||
if int(target.build_tools_metadata["version"]) > 0:
|
||||
if not len(set(target.supported_toolchains).intersection(
|
||||
set(["ARM", "ARMC6"]))) > 0:
|
||||
|
@ -437,3 +441,5 @@ class UvisionArmc6(Uvision):
|
|||
return True
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
|
|
@ -400,8 +400,8 @@ class Target(namedtuple(
|
|||
return 'NSPE_Target' in self.labels
|
||||
|
||||
@property
|
||||
def is_PSA_target(self):
|
||||
return self.is_PSA_secure_target or self.is_PSA_non_secure_target
|
||||
def is_TFM_target(self):
|
||||
return getattr(self, 'tfm_target_name', False)
|
||||
|
||||
def get_post_build_hook(self, toolchain_labels):
|
||||
"""Initialize the post-build hooks for a toolchain. For now, this
|
||||
|
|
Loading…
Reference in New Issue