twister: runner: add extra_args supporting platform and soc

like extra_confs, add extr_args filterable by
soc:<arch>:<extra_args> or
platfrom:<platform name>: <extra_args>
simulation:<simulator name>: <extra_args>

which will only apply to given platform or arch

Signed-off-by: Hake Huang <hake.huang@oss.nxp.com>
This commit is contained in:
Hake Huang 2024-09-25 10:51:22 +00:00 committed by Anas Nashif
commit c759068c40

View file

@ -1182,8 +1182,26 @@ class ProjectBuilder(FilterBuilder):
return args_expanded
def cmake(self, filter_stages=[]):
args = []
for va in self.testsuite.extra_args.copy():
cond_args = va.split(":")
if cond_args[0] == "arch" and len(cond_args) == 3:
if self.instance.platform.arch == cond_args[1]:
args.append(cond_args[2])
elif cond_args[0] == "platform" and len(cond_args) == 3:
if self.instance.platform.name == cond_args[1]:
args.append(cond_args[2])
elif cond_args[0] == "simulation" and len(cond_args) == 3:
if self.instance.platform.simulation == cond_args[1]:
args.append(cond_args[2])
else:
if cond_args[0] in ["arch", "platform", "simulation"]:
logger.warning(f"Unexpected extra_args: {va}")
args.append(va)
args = self.cmake_assemble_args(
self.testsuite.extra_args.copy(), # extra_args from YAML
args,
self.instance.handler,
self.testsuite.extra_conf_files,
self.testsuite.extra_overlay_confs,