# Copyright (c) 2024 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

declare_args() {
  # Note for SDK developers:  As additional features with their own settings
  # are added to the SDK, consider using the `matter_enable_recommended`
  # meta-setting instead of a default value of 'true', especially where a
  # different default is used based on platform (current_os): Often various
  # debugging features have previously been defaulted to on for Linux and/or
  # Mac but off for embedded platforms (on the assumption that Linux / Mac
  # don't have resource constraints?); build settings of that nature should
  # instead reference this meta-setting. E.g.
  #   enable_flux_capacitor =  matter_enable_recommended && current_os == "linux"

  # Enable recommended settings by default. This is a meta-setting
  # that is enabled by default, and acts as a default for various
  # other settings. Setting it to false produces a more conservative /
  # minimal set of defaults.
  matter_enable_recommended = true
}
