# Copyright (c) 2024-2025 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.

import("//build_overrides/chip.gni")
import("//build_overrides/nxp_sdk.gni")

nxp_external_sdk = true
chip_device_platform = "nxp"
lwip_platform = "nxp"

# project config files
chip_device_project_config_include = ""
chip_project_config_include = ""
chip_inet_project_config_include = ""
chip_system_project_config_include = ""
chip_ble_project_config_include = ""

# mbedtls is built as part of the NXP SDK build process
mbedtls_target = "${nxp_sdk_build_root}:nxp_mbedtls"

custom_toolchain =
    "${chip_root}/config/nxp/chip-gn-freertos/toolchain:nxpFreeRTOS"
