blob: 7c4cde545848d212a09bb40d97cfff2b04d05c16 [file] [log] [blame]
# Copyright (c) 2023 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() {
# Tracing can have a non-zero size impact to binaries. We try to make
# the impact minimal (the backends themselves add some size), however
# for now tracing is opt-in
matter_enable_tracing_support = target_os == "linux"
# Defines the trace backend. Current matter tracing splits the logic
# into two parts:
# - data logging, well defined and using type-safe data
# - trace begin/end/instant states for monitoring execution and
# checking execution time and performance
# For tracing specifically, due to performance constraints, several
# backends prefer to be the one and only tracing provider (e.g.
# pw_tracing uses tokenization to reduce string sizes and allow
# for fast tracing even when the communication channels are slow).
#
# The setting below controls the destination of the tracing macros
# with the following values available:
# - "none" makes tracing completely disabled
# - "multiplexed" allows using the "backend.h" for tracing, which
# will multiplex however will only work on fast backends (e.g.
# large systems with fast logging when writing to logs)
# - any other value will provide a tracing config, which
# MUST include a path to `matter/tracing/macros_impl.h`
if (target_os == "linux") {
matter_trace_config = "multiplexed"
} else {
matter_trace_config = "none"
}
}