From c240e9936933fcebe7dd9adce872e8da9549fcfe Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Fri, 21 Jul 2023 12:03:58 +0000 Subject: [PATCH] west: build: support additional configuration with --test-item Also support extra_conf_files, extra_overlay_confs, extra_dtc_overlay_files Signed-off-by: Anas Nashif --- scripts/west_commands/build.py | 40 +++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/scripts/west_commands/build.py b/scripts/west_commands/build.py index 4f600bd881e77d..dc56ae307d7bc9 100644 --- a/scripts/west_commands/build.py +++ b/scripts/west_commands/build.py @@ -279,11 +279,20 @@ def _parse_test_item(self, test_item): log.die(f"Test item {test_item} not found in {yf}") sysbuild = False + extra_dtc_overlay_files = [] + extra_overlay_confs = [] + extra_conf_files = [] for section in [common, item]: if not section: continue sysbuild = section.get('sysbuild', sysbuild) - for data in ['extra_args', 'extra_configs']: + for data in [ + 'extra_args', + 'extra_configs', + 'extra_conf_files', + 'extra_overlay_confs', + 'extra_dtc_overlay_files' + ]: extra = section.get(data) if not extra: continue @@ -291,16 +300,45 @@ def _parse_test_item(self, test_item): arg_list = extra.split(" ") else: arg_list = extra + if data == 'extra_configs': args = ["-D{}".format(arg.replace('"', '\"')) for arg in arg_list] elif data == 'extra_args': args = ["-D{}".format(arg.replace('"', '')) for arg in arg_list] + elif data == 'extra_conf_files': + extra_conf_files.extend(arg_list) + continue + elif data == 'extra_overlay_confs': + extra_overlay_confs.extend(arg_list) + continue + elif data == 'extra_dtc_overlay_files': + extra_dtc_overlay_files.extend(arg_list) + continue + if self.args.cmake_opts: self.args.cmake_opts.extend(args) else: self.args.cmake_opts = args self.args.sysbuild = sysbuild + + args = [] + if extra_conf_files: + args.append(f"CONF_FILE=\"{';'.join(extra_conf_files)}\"") + + if extra_dtc_overlay_files: + args.append(f"DTC_OVERLAY_FILE=\"{';'.join(extra_dtc_overlay_files)}\"") + + if extra_overlay_confs: + args.append(f"OVERLAY_CONFIG=\"{';'.join(extra_overlay_confs)}\"") + # Build the final argument list + args_expanded = ["-D{}".format(a.replace('"', '')) for a in args] + + if self.args.cmake_opts: + self.args.cmake_opts.extend(args_expanded) + else: + self.args.cmake_opts = args_expanded + return found_test_metadata def _sanity_precheck(self):