From d782a2c4eb0fbdedeb926a41a24e6ba6d8c0cbe3 Mon Sep 17 00:00:00 2001 From: Sudeep Mohanty Date: Fri, 20 Feb 2026 15:42:36 +0100 Subject: [PATCH] feat(cmakev2): add idf_build_get_compile_options and use in compat and component Add idf_build_get_compile_options() to aggregate COMPILE_OPTIONS, C_COMPILE_OPTIONS, CXX_COMPILE_OPTIONS, and ASM_COMPILE_OPTIONS build properties with generator expressions. Replace internal __get_compile_options(OUTPUT ...) usage in idf_component_register and idf_component_include with the new public function. --- tools/cmakev2/compat.cmake | 2 +- tools/cmakev2/component.cmake | 2 +- tools/cmakev2/utilities.cmake | 19 ++++++------------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/tools/cmakev2/compat.cmake b/tools/cmakev2/compat.cmake index 126a9ead574..c127701dbf5 100644 --- a/tools/cmakev2/compat.cmake +++ b/tools/cmakev2/compat.cmake @@ -427,7 +427,7 @@ function(idf_component_register) idf_build_get_property(compile_definitions COMPILE_DEFINITIONS GENERATOR_EXPRESSION) add_compile_definitions("${compile_definitions}") - __get_compile_options(OUTPUT compile_options) + idf_build_get_compile_options(compile_options) add_compile_options("${compile_options}") idf_build_get_property(common_component_interfaces __COMMON_COMPONENT_INTERFACES) diff --git a/tools/cmakev2/component.cmake b/tools/cmakev2/component.cmake index 08a9ca5c67c..c8bd118c4f8 100644 --- a/tools/cmakev2/component.cmake +++ b/tools/cmakev2/component.cmake @@ -1055,6 +1055,6 @@ function(idf_component_include name) idf_build_get_property(compile_definitions COMPILE_DEFINITIONS GENERATOR_EXPRESSION) target_compile_definitions("${component_real_target}" PRIVATE "${compile_definitions}") - __get_compile_options(OUTPUT compile_options) + idf_build_get_compile_options(compile_options) target_compile_options("${component_real_target}" BEFORE PRIVATE "${compile_options}") endfunction() diff --git a/tools/cmakev2/utilities.cmake b/tools/cmakev2/utilities.cmake index 28588cba59c..ceabc67d1ff 100644 --- a/tools/cmakev2/utilities.cmake +++ b/tools/cmakev2/utilities.cmake @@ -609,26 +609,19 @@ function(__split) endfunction() #[[ - __get_compile_options(OUTPUT ) + idf_build_get_compile_options() - *OUTPUT[out]* + *variable* - List of generator expressions for C, CXX, and ASM compile options + Variable name in which the list of generator expressions for C, CXX, + and ASM compile options will be stored. Gather the compilation options from COMPILE_OPTIONS, C_COMPILE_OPTIONS, CXX_COMPILE_OPTIONS, and ASM_COMPILE_OPTIONS build properties into a single list using generator expressions. This list can then be used with the target_compile_options call. #]] -function(__get_compile_options) - 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() +function(idf_build_get_compile_options output) idf_build_get_property(compile_options COMPILE_OPTIONS GENERATOR_EXPRESSION) idf_build_get_property(c_compile_options C_COMPILE_OPTIONS GENERATOR_EXPRESSION) idf_build_get_property(cxx_compile_options CXX_COMPILE_OPTIONS GENERATOR_EXPRESSION) @@ -643,7 +636,7 @@ function(__get_compile_options) foreach(option IN LISTS asm_compile_options) list(APPEND compile_options $<$:${option}>) endforeach() - set(${ARG_OUTPUT} "${compile_options}" PARENT_SCOPE) + set(${output} "${compile_options}" PARENT_SCOPE) endfunction() #[[