# Copyright 2021 The Pigweed 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
#
#     https://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.

config ZEPHYR_PIGWEED_MODULE
    bool "Enable Pigweed modules for Zephyr"
    default y
    depends on REQUIRES_FULL_LIBCPP && (STD_CPP17 || STD_CPP2A || STD_CPP20 || STD_CPP2B)

if ZEPHYR_PIGWEED_MODULE

rsource "pw_allocator_zephyr/Kconfig"
rsource "pw_assert_zephyr/Kconfig"
rsource "pw_base64/Kconfig"
rsource "pw_bytes/Kconfig"
rsource "pw_checksum/Kconfig"
rsource "pw_chrono_zephyr/Kconfig"
rsource "pw_containers/Kconfig"
rsource "pw_digital_io_zephyr/Kconfig"
rsource "pw_function/Kconfig"
rsource "pw_hdlc/Kconfig"
rsource "pw_i2c_zephyr/Kconfig"
rsource "pw_interrupt_zephyr/Kconfig"
rsource "pw_log_zephyr/Kconfig"
rsource "pw_multisink/Kconfig"
rsource "pw_polyfill/Kconfig"
rsource "pw_preprocessor/Kconfig"
rsource "pw_result/Kconfig"
rsource "pw_router/Kconfig"
rsource "pw_rpc/Kconfig"
rsource "pw_span/Kconfig"
rsource "pw_status/Kconfig"
rsource "pw_stream/Kconfig"
rsource "pw_string/Kconfig"
rsource "pw_sync_zephyr/Kconfig"
rsource "pw_sys_io_zephyr/Kconfig"
rsource "pw_system/Kconfig"
rsource "pw_trace_tokenized/Kconfig"
rsource "pw_thread_zephyr/Kconfig"
rsource "pw_tokenizer/Kconfig"
rsource "pw_varint/Kconfig"

endif # ZEPHYR_PIGWEED_MODULE
