From 52a64a143c3eb90f02ef49560a5eac18f8ac2f7a Mon Sep 17 00:00:00 2001 From: Ra'Jiska Date: Sun, 26 Jul 2026 12:12:32 +0800 Subject: [PATCH 1/2] build: add options for plugins at group granularity Add `FLB_ALL_INPUTS`, `FLB_ALL_PROCESSORS`, `FLB_ALL_FILTERS`, and `FLB_ALL_OUTPUTS` options to control the build for each plugins group individually. Three options for each variable: - `Inherit`: Default, doesn't do anything. - `On`: Plugins for the entire group enabled. - `Off`: Plugins for the entire group disabled. Respects precedence from least to most specific (right overrides left): FLB_MINIMAL => FLB_ALL_* => Individual Option e.g to disable everything except outputs and HTTP input: -DFLB_MINIMAL=On -DFLB_ALL_OUTPUTS=On -DFLB_IN_HTTP=On Signed-off-by: Ra'Jiska --- cmake/plugins_options.cmake | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/cmake/plugins_options.cmake b/cmake/plugins_options.cmake index aa8bfd05bda..9184c86ca72 100644 --- a/cmake/plugins_options.cmake +++ b/cmake/plugins_options.cmake @@ -3,14 +3,28 @@ macro(DEFINE_OPTION option_name description default_value) if(FLB_MINIMAL) set(temp_value OFF) endif() + if(NOT "${FLB_GROUP_OVERRIDE}" STREQUAL "Inherit") + set(temp_value ${FLB_GROUP_OVERRIDE}) + endif() option(${option_name} "${description}" ${temp_value}) endmacro() # Add the FLB_MINIMAL option option(FLB_MINIMAL "Enable minimal build configuration" No) +# Add options to enable/disable plugins at a group granularity +set(FLB_ALL_INPUTS "Inherit" CACHE STRING "Enable/Disable all Input plugins (On, Off, Inherit)") +set(FLB_ALL_PROCESSORS "Inherit" CACHE STRING "Enable/Disable all Processor plugins (On, Off, Inherit)") +set(FLB_ALL_FILTERS "Inherit" CACHE STRING "Enable/Disable all Filter plugins (On, Off, Inherit)") +set(FLB_ALL_OUTPUTS "Inherit" CACHE STRING "Enable/Disable all Output plugins (On, Off, Inherit)") +set_property(CACHE FLB_ALL_INPUTS PROPERTY STRINGS "On;Off;Inherit") +set_property(CACHE FLB_ALL_PROCESSORS PROPERTY STRINGS "On;Off;Inherit") +set_property(CACHE FLB_ALL_FILTERS PROPERTY STRINGS "On;Off;Inherit") +set_property(CACHE FLB_ALL_OUTPUTS PROPERTY STRINGS "On;Off;Inherit") + # Inputs (sources, data collectors) # ================================= +set(FLB_GROUP_OVERRIDE ${FLB_ALL_INPUTS}) DEFINE_OPTION(FLB_IN_BLOB "Enable Blob input plugin" ON) DEFINE_OPTION(FLB_IN_CALYPTIA_FLEET "Enable Calyptia Fleet input plugin" ON) DEFINE_OPTION(FLB_IN_COLLECTD "Enable Collectd input plugin" ON) @@ -70,6 +84,7 @@ DEFINE_OPTION(FLB_IN_EBPF "Enable Linux eBPF input plugin" # Processors # ========== +set(FLB_GROUP_OVERRIDE ${FLB_ALL_PROCESSORS}) DEFINE_OPTION(FLB_PROCESSOR_CONTENT_MODIFIER "Enable content modifier processor" ON) DEFINE_OPTION(FLB_PROCESSOR_CUMULATIVE_TO_DELTA "Enable cumulative to delta metrics processor" ON) DEFINE_OPTION(FLB_PROCESSOR_LABELS "Enable metrics label manipulation processor" ON) @@ -81,6 +96,7 @@ DEFINE_OPTION(FLB_PROCESSOR_TDA "Enable TDA processor" # Filters # ======= +set(FLB_GROUP_OVERRIDE ${FLB_ALL_FILTERS}) DEFINE_OPTION(FLB_FILTER_ALTER_SIZE "Enable alter_size filter" ON) DEFINE_OPTION(FLB_FILTER_AWS "Enable aws filter" ON) DEFINE_OPTION(FLB_FILTER_CHECKLIST "Enable checklist filter" ON) @@ -108,6 +124,7 @@ DEFINE_OPTION(FLB_FILTER_WASM "Enable WASM filter" # Outputs (destinations) # ====================== +set(FLB_GROUP_OVERRIDE ${FLB_ALL_OUTPUTS}) DEFINE_OPTION(FLB_OUT_AZURE "Enable Azure output plugin" ON) DEFINE_OPTION(FLB_OUT_AZURE_BLOB "Enable Azure output plugin" ON) DEFINE_OPTION(FLB_OUT_AZURE_KUSTO "Enable Azure Kusto output plugin" ON) @@ -156,3 +173,5 @@ DEFINE_OPTION(FLB_OUT_TCP "Enable TCP output plugin" DEFINE_OPTION(FLB_OUT_UDP "Enable UDP output plugin" ON) DEFINE_OPTION(FLB_OUT_VIVO_EXPORTER "Enable Vivo exporter output plugin" ON) DEFINE_OPTION(FLB_OUT_WEBSOCKET "Enable Websocket output plugin" ON) + +unset(FLB_GROUP_OVERRIDE) From 65f5cd51ff32350e18e222ecefbad135c2a11ea1 Mon Sep 17 00:00:00 2001 From: Ra'Jiska Date: Sat, 1 Aug 2026 21:25:42 +0800 Subject: [PATCH 2/2] build: reapply options when groups change Signed-off-by: Ra'Jiska --- cmake/plugins_options.cmake | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/cmake/plugins_options.cmake b/cmake/plugins_options.cmake index 9184c86ca72..9d5a806f48f 100644 --- a/cmake/plugins_options.cmake +++ b/cmake/plugins_options.cmake @@ -3,10 +3,36 @@ macro(DEFINE_OPTION option_name description default_value) if(FLB_MINIMAL) set(temp_value OFF) endif() - if(NOT "${FLB_GROUP_OVERRIDE}" STREQUAL "Inherit") + string(TOLOWER "${FLB_GROUP_OVERRIDE}" group_override) + if(NOT group_override STREQUAL "inherit") set(temp_value ${FLB_GROUP_OVERRIDE}) endif() + + if(temp_value) + set(temp_value ON) + else() + set(temp_value OFF) + endif() + + get_property(option_type CACHE ${option_name} PROPERTY TYPE) + if(option_type STREQUAL "UNINITIALIZED") + set(_FLB_PINNED_${option_name} ON CACHE INTERNAL "") + endif() + option(${option_name} "${description}" ${temp_value}) + + if(NOT DEFINED _FLB_INHERITED_${option_name}) + set(_FLB_INHERITED_${option_name} "${${option_name}}" CACHE INTERNAL "") + else() + if(NOT _FLB_PINNED_${option_name} AND + NOT "${${option_name}}" STREQUAL "${_FLB_INHERITED_${option_name}}") + set(_FLB_PINNED_${option_name} ON CACHE INTERNAL "") + endif() + if(NOT _FLB_PINNED_${option_name} AND "${${option_name}}" STREQUAL "${_FLB_INHERITED_${option_name}}") + set(${option_name} ${temp_value} CACHE BOOL "${description}" FORCE) + endif() + set(_FLB_INHERITED_${option_name} ${temp_value} CACHE INTERNAL "") + endif() endmacro() # Add the FLB_MINIMAL option @@ -22,6 +48,15 @@ set_property(CACHE FLB_ALL_PROCESSORS PROPERTY STRINGS "On;Off;Inherit") set_property(CACHE FLB_ALL_FILTERS PROPERTY STRINGS "On;Off;Inherit") set_property(CACHE FLB_ALL_OUTPUTS PROPERTY STRINGS "On;Off;Inherit") +foreach(group_option FLB_ALL_INPUTS FLB_ALL_PROCESSORS FLB_ALL_FILTERS FLB_ALL_OUTPUTS) + string(TOLOWER "${${group_option}}" group_value) + if(NOT group_value MATCHES "^(on|off|inherit)$") + message(FATAL_ERROR + "${group_option} must be one of On, Off or Inherit " + "(got '${${group_option}}')") + endif() +endforeach() + # Inputs (sources, data collectors) # ================================= set(FLB_GROUP_OVERRIDE ${FLB_ALL_INPUTS})