From e87205592aacf6707ac1a5f2c87c3ce831bbc80c Mon Sep 17 00:00:00 2001 From: Frantisek Hrbata Date: Fri, 29 Aug 2025 09:19:06 +0200 Subject: [PATCH] feat(cmakev2/utilities): add __make_json_list helper Helper function for converting a CMake list to a JSON list. Signed-off-by: Frantisek Hrbata --- tools/cmakev2/utilities.cmake | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tools/cmakev2/utilities.cmake b/tools/cmakev2/utilities.cmake index 9f542818753..5241af784e7 100644 --- a/tools/cmakev2/utilities.cmake +++ b/tools/cmakev2/utilities.cmake @@ -812,3 +812,32 @@ function(__get_executable_library_or_die) endif() set(${ARG_OUTPUT} "${library}" PARENT_SCOPE) endfunction() + +#[[ + __make_json_list( OUTPUT ) + + :list[in]: CMake string containing a list to be converted into JSON + format. + :OUTPUT[out]: Output variable name to store the JSON list. + + Convert a CMake list to a JSON list and store it in a OUTPUT + variable. +#]] +function(__make_json_list input) + set(options) + set(one_value OUTPUT) + set(multi_value) + cmake_parse_arguments(ARG "${options}" "${one_value}" "${multi_value}" ${ARGN}) + + if(NOT DEFINED ARG_OUTPUT) + idf_die("OUTPUT option is required") + endif() + + list(LENGTH input length) + if(${length}) + string(REPLACE ";" "\", \"" result "[ \"${input}\" ]") + else() + set(result "[]") + endif() + set("${ARG_OUTPUT}" "${result}" PARENT_SCOPE) +endfunction()