# Copyright (c) 2020 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/build.gni")
import("//build_overrides/chip.gni")
import("//build_overrides/k32w0_sdk.gni")
import("//build_overrides/mbedtls.gni")
import("//build_overrides/openthread.gni")

import("${build_root}/config/compiler/compiler.gni")
import("${chip_root}/src/crypto/crypto.gni")
import("${chip_root}/src/platform/nxp/k32w/k32w0/args.gni")

declare_args() {
  # Location of the k32w0 SDK.
  k32w0_sdk_root = getenv("NXP_K32W0_SDK_ROOT")
  chip_with_DK6 = true
  chip_with_OM15082 = 0
  chip_with_ot_cli = 0
  chip_with_low_power = 0
  build_for_k32w061 = 1
  build_for_k32w041am = 0
  build_for_k32w041a = 0
  build_for_k32w041 = 0
  device = "K32W061"
  board = "k32w061dk6"
  chip_with_ntag = 1
  chip_with_high_power = 0
  chip_with_factory_data = 0
}

assert(k32w0_sdk_root != "", "k32w0_sdk_root must be specified")

# Defines an k32w SDK build target.
#
# Parameters:
#   k32w0_sdk_root - The location of the k32w SDK.
#   sources - Extra source files to build.
template("k32w0_sdk") {
  if (defined(invoker.k32w0_sdk_root)) {
    k32w0_sdk_root = invoker.k32w0_sdk_root
  }

  if (defined(invoker.override_is_DK6)) {
    chip_with_DK6 = invoker.override_is_DK6
  }

  assert(k32w0_sdk_root != "", "k32w0_sdk_root must be specified")
  assert(chip_with_OM15082 == 0 || chip_with_DK6,
         "OM15082 expansion board is only supported on DK6 board")
  assert(
      chip_with_low_power == 0 ||
          (chip_with_low_power == 1 && chip_with_OM15082 == 0 &&
               chip_with_ot_cli == 0 && chip_with_se05x == 0),
      "Please disable low power if expansion board, openthread CLI or SE is needed!")

  assert(chip_with_low_power == 0 ||
             (invoker.chip_detail_logging == false &&
                  invoker.chip_progress_logging == false &&
                  invoker.chip_automation_logging == false &&
                  invoker.chip_error_logging == false),
         "Please disable all logs when low power is enabled!")

  if (build_for_k32w041am == 1 || build_for_k32w041a == 1 ||
      build_for_k32w041 == 1) {
    build_for_k32w061 = 0
  }

  if (build_for_k32w061 == 1) {
    assert(build_for_k32w061 == 1 && build_for_k32w041am == 0 &&
               build_for_k32w041a == 0 && build_for_k32w041 == 0,
           "Please build for only one platform")
    device = "K32W061"
    board = "k32w061dk6"
    chip_with_ntag = 0
    chip_with_high_power = 0
  }
  if (build_for_k32w041am == 1) {
    assert(build_for_k32w041am == 1 && build_for_k32w061 == 0 &&
               build_for_k32w041a == 0 && build_for_k32w041 == 0,
           "Please build for only one platform")
    device = "K32W041AM"
    board = "k32w041amdk6"
    chip_with_high_power = 1
    chip_with_ntag = 0
  }
  if (build_for_k32w041a == 1) {
    assert(build_for_k32w041a == 1 && build_for_k32w061 == 0 &&
               build_for_k32w041am == 0 && build_for_k32w041 == 0,
           "Please build for only one platform")
    device = "K32W041A"
    board = "k32w041adk6"
    chip_with_high_power = 1
    chip_with_ntag = 0
  }
  if (build_for_k32w041 == 1) {
    assert(build_for_k32w041 == 1 && build_for_k32w061 == 0 &&
               build_for_k32w041am == 0 && build_for_k32w041a == 0,
           "Please build for only one platform")
    device = "K32W041"
    board = "k32w041dk6"
    chip_with_ntag = 0
    chip_with_high_power = 0
  }

  print("device:", device)
  print("board:", board)
  print("ntag:", chip_with_ntag)
  print("high power:", chip_with_high_power)
  device_lowercase = string_replace(board, "dk6", "")

  sdk_target_name = target_name

  config("${sdk_target_name}_config") {
    include_dirs = []
    if (defined(invoker.include_dirs)) {
      include_dirs += invoker.include_dirs
    }

    # We want to treat SDK headers as system headers, so that warnings in those
    # headers are not fatal.  Therefore don't add them directly to include_dirs;
    # we will add them to cflags below instead.
    _sdk_include_dirs = []

    if (chip_with_DK6) {
      if (chip_with_low_power != 0) {
        _sdk_include_dirs += [ "${k32w0_sdk_root}/boards/${board}/wireless_examples/openthread/lped/bm" ]
      } else {
        _sdk_include_dirs += [ "${k32w0_sdk_root}/boards/${board}/wireless_examples/openthread/reed/bm" ]
      }
    }

    if (chip_with_low_power != 0) {
      _sdk_include_dirs += [ "${k32w0_sdk_root}/boards/${board}/wireless_examples/hybrid/ble_ot/lped_ble_wuart/ble_802_15_4_common" ]
    }

    if (chip_with_ntag != 0) {
      _sdk_include_dirs += [
        "${k32w0_sdk_root}/middleware/ntag_i2c_plus/HAL_I2C/inc",
        "${k32w0_sdk_root}/middleware/ntag_i2c_plus/HAL_NTAG/inc",
        "${k32w0_sdk_root}/middleware/ntag_i2c_plus/inc",
        "${k32w0_sdk_root}/middleware/ntag_i2c_plus/HAL_TMR/inc",
      ]
    }

    _sdk_include_dirs += [
      "${chip_root}/src/platform/nxp/k32w/k32w0",
      "${k32w0_sdk_root}/CMSIS/Include",
      "${k32w0_sdk_root}/components/serial_manager",
      "${k32w0_sdk_root}/components/uart",
      "${k32w0_sdk_root}/devices/${device}",
      "${k32w0_sdk_root}/devices/${device}/drivers",
      "${k32w0_sdk_root}/devices/${device}/utilities",
      "${k32w0_sdk_root}/devices/${device}/utilities/debug_console",
      "${k32w0_sdk_root}/devices/${device}/utilities/str",
      "${k32w0_sdk_root}/middleware/mbedtls/port/ksdk",
      "${k32w0_sdk_root}/middleware/wireless/ble_controller/interface",
      "${k32w0_sdk_root}/middleware/wireless/bluetooth/application/common",
      "${k32w0_sdk_root}/middleware/wireless/bluetooth/application/common/gatt_db",
      "${k32w0_sdk_root}/middleware/wireless/bluetooth/application/common/gatt_db/macros",
      "${k32w0_sdk_root}/middleware/wireless/bluetooth/host/config",
      "${k32w0_sdk_root}/middleware/wireless/bluetooth/host/interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/Common",
      "${k32w0_sdk_root}/middleware/wireless/framework/Flash/External/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/Flash/Internal",
      "${k32w0_sdk_root}/middleware/wireless/framework/FunctionLib",
      "${k32w0_sdk_root}/middleware/wireless/framework/GPIO",
      "${k32w0_sdk_root}/middleware/wireless/framework/Logging/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/Keyboard/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/LED/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/Lists",
      "${k32w0_sdk_root}/middleware/wireless/framework/LowPower/Interface/${board}",
      "${k32w0_sdk_root}/middleware/wireless/framework/MemManager/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/Messaging/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/ModuleInfo",
      "${k32w0_sdk_root}/middleware/wireless/framework/OSAbstraction/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/OtaSupport/Interface/",
      "${k32w0_sdk_root}/middleware/wireless/framework/Panic/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/PDM/Include",
      "${k32w0_sdk_root}/middleware/wireless/framework/RNG/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/SecLib",
      "${k32w0_sdk_root}/middleware/wireless/framework/SerialManager/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/SerialManager/Source",
      "${k32w0_sdk_root}/middleware/wireless/framework/TimersManager/Interface",
      "${k32w0_sdk_root}/middleware/wireless/framework/TimersManager/Source",
      "${k32w0_sdk_root}/middleware/wireless/framework/XCVR/DK6",
      "${k32w0_sdk_root}/middleware/wireless/framework/XCVR/DK6/Build/Include",
      "${k32w0_sdk_root}/middleware/wireless/ieee-802.15.4/MacDynamic/Include",
      "${k32w0_sdk_root}/middleware/wireless/ieee-802.15.4/uMac/Include",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/FreeRTOS/portable/GCC/ARM_CM3",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/include",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/include/private",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/third_party/unity/src",
    ]

    libs = [
      "${k32w0_sdk_root}/middleware/wireless/ble_controller/lib/lib_ble_controller_peripheral_commissioning.a",
      "${k32w0_sdk_root}//middleware/wireless/bluetooth/host/lib/lib_ble_5-0_host_matter_cm4_noFP.a",
      "${k32w0_sdk_root}/middleware/wireless/ieee-802.15.4/lib/libMiniMac_Sched.a",
      "${k32w0_sdk_root}/middleware/wireless/framework/PDM/Library/libPDM_extFlash.a",
      "${k32w0_sdk_root}/middleware/wireless/framework/SecLib/lib_crypto_m4.a",
      "${k32w0_sdk_root}/middleware/wireless/framework/XCVR/lib/libRadio.a",
    ]

    defines = [
      "gPWR_CpuClk_48MHz=1",
      "gMainThreadPriority_c=5",
      "CPU_JN518X",
      "CPU_JN518X_REV=2",
      "JENNIC_CHIP_FAMILY_NAME=_JN518x",
      "MAC_PROTO_TAG=1",
      "JENNIC_CHIP_FAMILY_JN518x",
      "gPWR_LDOMEM_0_9V_PD=0",
      "SDK_DEBUGCONSOLE=DEBUGCONSOLE_REDIRECT_TO_SDK",
      "PRINTF_ADVANCED_ENABLE",
      "NO_SYSCORECLK_UPD=0",
      "USE_RTOS=1",
      "USE_SDK_OSA=0",
      "gSerialManagerMaxInterfaces_c=2",
      "FSL_RTOS_FREE_RTOS=1",
      "gTotalHeapSize_c=0x10000",
      "DEBUG_SERIAL_INTERFACE_INSTANCE=0",
      "APP_SERIAL_INTERFACE_INSTANCE=1",
      "gOTA_externalFlash_d=1",
      "gEepromPostedOperations_d=1",
      "gOtaEepromPostedOperations_d=1",
      "gOtaVerifyWrite_d=0",
      "gExternalFlashIsCiphered_d=1",
      "PDM_USE_DYNAMIC_MEMORY=1",
      "gBootData_None_c=1",
      "PROGRAM_PAGE_SZ=256",
      "configFRTOS_MEMORY_SCHEME=4",
      "osCustomStartup=1",
      "ENABLE_RAM_VECTOR_TABLE=1",
      "gTMR_Enabled_d=1",
      "gTimestamp_Enabled_d=0",
      "CHIP_ENABLE_OPENTHREAD=1",
      "gOtaMemPoolId_c=1",
      "PoolsDetails_c=_block_size_ 32 _number_of_blocks_ 6 _pool_id_(0) _eol_ _block_size_ 256 _number_of_blocks_ 3 _pool_id_(0) _eol_ _block_size_ 512 _number_of_blocks_ 2 _pool_id_(0) _eol_ _block_size_ 768 _number_of_blocks_ 1 _pool_id_(0) _eol_ _block_size_ 268  _number_of_blocks_ 8 _pool_id_(gOtaMemPoolId_c) _eol_",
      "SUPPORT_FOR_15_4=1",
      "gAppMaxConnections_c=1",
      "gAppUseBonding_d=0",
      "gAppUsePairing_d=0",
      "gAppUsePrivacy_d=0",
      "gPasskeyValue_c=999999",
      "gSupportBle=1",
      "SUPPORT_FOR_BLE=1",
      "gEnableBleInactivityTimeNotify=1",
      "gConnPhyUpdateReqTxPhySettings_c=(gLePhy2MFlag_c)",
      "gConnPhyUpdateReqRxPhySettings_c=(gLePhy2MFlag_c)",
      "gConnPhyUpdateReqPhyOptions_c=(gLeCodingNoPreference_c)",
      "DUAL_MODE_APP=1",
      "gMainThreadStackSize_c=5096",
      "HEAP_SIZE=gTotalHeapSize_c",
      "gLoggingActive_d=0",
      "gLogRingPlacementOffset_c=0xF000",
    ]

    if (chip_mdns == "platform") {
      defines += [
        "OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE=1",
        "OPENTHREAD_CONFIG_ECDSA_ENABLE=1",
        "OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE=1",
        "OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE=1",
      ]
    }

    if (chip_with_se05x == 1) {
      defines += [
        "MBEDTLS_FREESCALE_FREERTOS_CALLOC_ALT=1",
        "CHIP_DEVICE_CONFIG_CHIP_TASK_STACK_SIZE=9216",
      ]
    }

    if (chip_with_DK6) {
      defines += [
        "gUsePdm_d=1",
        "PDM_EXT_FLASH=1",
        "gEepromType_d=gEepromDevice_MX25R8035F_c",
        "gPdmNbSegments=63",
        "gRadioUsePdm_d=1",
      ]

      if (chip_with_OM15082 != 0) {
        defines += [
          "OM15082=1",
          "gKeyBoardSupported_d=1",
          "gKBD_KeysCount_c=4",
        ]
      } else {
        defines += [
          "gKeyBoardSupported_d=1",
          "gKBD_KeysCount_c=2",
        ]
      }

      if (chip_with_low_power == 0) {
        defines += [
          "gLEDSupported_d=1",
          "gLEDsOnTargetBoardCnt_c=2",
          "gLED_InvertedMode_d=1",
        ]
      }
    }

    if (chip_with_ot_cli == 1) {
      defines += [ "CHIP_DEVICE_CONFIG_THREAD_ENABLE_CLI=1" ]
    }

    if (chip_with_low_power == 1) {
      defines += [
        "cPWR_UsePowerDownMode=1",
        "cPWR_FullPowerDownMode=1",
        "DBG_PostStepTickAssess=0",
        "gApp_SystemClockCalibration=1",
        "gPWR_FreqScalingWFI=0",
        "mAppUseTickLessMode_c=1",
        "App_SuppressTickInStopMode=0",
        "cPWR_DiscardRunningTimerForPowerDown=1",
        "K32W_LOG_ENABLED=0",
        "gUartDebugConsole_d=0",
      ]
    } else {
      defines += [
        "cPWR_UsePowerDownMode=0",
        "cPWR_FullPowerDownMode=0",
        "K32W_LOG_ENABLED=1",
        "gUartDebugConsole_d=1",
      ]
    }

    if (build_for_k32w061 == 1) {
      defines += [ "CPU_K32W061HN" ]
    } else if (build_for_k32w041am == 1) {
      defines += [ "CPU_K32W041AMZ" ]
    } else if (build_for_k32w041a == 1) {
      defines += [ "CPU_K32W041AZ" ]
    } else if (build_for_k32w041 == 1) {
      defines += [ "CPU_K32W041HN" ]
    }

    if (chip_with_high_power == 1) {
      defines += [
        "K32WMCM_APP_BUILD",
        "JENNIC_CHIP_FAMILY_JN518x",
      ]
      _sdk_include_dirs += [
        "${k32w0_sdk_root}/middleware/wireless/ieee-802.15.4/Include",
        "${k32w0_sdk_root}/middleware/wireless/ieee-802.15.4/mMac/Include",
      ]
    }

    if (chip_with_ntag == 1) {
      defines += [
        "CONFIG_CHIP_NFC_COMMISSIONING=1",
        "CHIP_DEVICE_CONFIG_ENABLE_NFC=1",
      ]
    }

    if (chip_with_factory_data == 1) {
      defines += [ "CONFIG_CHIP_K32W0_REAL_FACTORY_DATA=1" ]
    }

    if (defined(invoker.defines)) {
      defines += invoker.defines
    }

    cflags = [
      "-Wno-unused-function",
      "-Wno-conversion",
      "-Wno-sign-compare",
      "-Wno-clobbered",
      "-Wno-implicit-fallthrough",
      "-Wno-shadow",
      "-mthumb",
      "-MMD",
      "-MP",
    ]

    if (is_clang) {
      cflags += [
        "-Wno-self-assign",
        "-Wno-parentheses-equality",
      ]
    } else {
      cflags += [ "-fno-optimize-strlen" ]
    }

    # Now add our "system-header" include dirs
    foreach(include_dir, _sdk_include_dirs) {
      cflags += [ "-isystem" + rebase_path(include_dir, root_build_dir) ]
    }
  }

  # TODO - Break up this monolith and make it configurable.
  source_set(sdk_target_name) {
    forward_variables_from(invoker, "*")

    if (!defined(sources)) {
      sources = []
    }

    sources += [
      "${k32w0_sdk_root}/components/serial_manager/serial_manager.c",
      "${k32w0_sdk_root}/components/serial_manager/serial_port_uart.c",
      "${k32w0_sdk_root}/components/uart/usart_adapter.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_adc.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_aes.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_clock.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_common.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_ctimer.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_flash.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_flexcomm.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_fmeas.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_gpio.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_i2c.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_i2c_freertos.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_inputmux.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_pint.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_power.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_reset.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_rng.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_rtc.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_sha.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_spifi.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_usart.c",
      "${k32w0_sdk_root}/devices/${device}/drivers/fsl_wtimer.c",
      "${k32w0_sdk_root}/devices/${device}/mcuxpresso/startup_${device_lowercase}.c",
      "${k32w0_sdk_root}/devices/${device}/system_${device}.c",
      "${k32w0_sdk_root}/devices/${device}/utilities/debug_console/fsl_debug_console.c",
      "${k32w0_sdk_root}/devices/${device}/utilities/str/fsl_str.c",
      "${k32w0_sdk_root}/middleware/wireless/ble_controller/config/controller_config.c",
      "${k32w0_sdk_root}/middleware/wireless/bluetooth/application/common/ble_conn_manager.c",
      "${k32w0_sdk_root}/middleware/wireless/bluetooth/application/common/ble_host_tasks.c",
      "${k32w0_sdk_root}/middleware/wireless/bluetooth/host/config/ble_globals.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/Common/MicroInt_arm_sdk2.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/Flash/External/Source/Eeprom_MX25R8035F.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/Flash/Internal/Flash_Adapter.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/FunctionLib/FunctionLib.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/GPIO/GPIO_Adapter.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/Keyboard/Source/Keyboard.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/LED/Source/LED.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/Lists/GenericList.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/Logging/Source/dbg_logging.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/LowPower/Source/${board}/PWR.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/LowPower/Source/${board}/PWRLib.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/LowPower/Source/${board}/PWR_setjmp.S",
      "${k32w0_sdk_root}/middleware/wireless/framework/MemManager/Source/MemManager.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/Messaging/Source/Messaging.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/OSAbstraction/Source/fsl_os_abstraction_free_rtos.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/OtaSupport/Source/OtaSupport.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/OtaSupport/Source/OtaUtils.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/PDM/pdm_port.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/Panic/Source/Panic.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/RNG/Source/RNG.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/Reset/Reset.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/SecLib/SecLib.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/SerialManager/Source/SerialManager.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/SerialManager/Source/UART_Serial_Adapter.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/TimersManager/Source/TMR_Adapter.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/TimersManager/Source/TimersManager.c",
      "${k32w0_sdk_root}/middleware/wireless/framework/XCVR/DK6/fsl_xcvr.c",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/FreeRTOS/event_groups.c",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/FreeRTOS/list.c",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/FreeRTOS/portable/GCC/ARM_CM3/port.c",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/FreeRTOS/portable/MemMang/heap_4.c",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/FreeRTOS/queue.c",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/FreeRTOS/tasks.c",
      "${k32w0_sdk_root}/rtos/amazon-freertos/lib/FreeRTOS/timers.c",
    ]

    if (chip_with_DK6) {
      sources += [
        "${k32w0_sdk_root}/boards/${board}/wireless_examples/openthread/reed/bm/board.c",
        "${k32w0_sdk_root}/boards/${board}/wireless_examples/openthread/reed/bm/board_utility.c",
        "${k32w0_sdk_root}/boards/${board}/wireless_examples/openthread/reed/bm/hardware_init.c",
      ]

      if (chip_with_se05x != 0) {
        sources += [
          "${chip_root}/third_party/simw-top-mini/repo/demos/ksdk/common/boards/DK6/wireless_examples/chip/clock_config.c",
          "${chip_root}/third_party/simw-top-mini/repo/demos/ksdk/common/boards/DK6/wireless_examples/chip/pin_mux.c",
        ]
      } else {
        sources += [
          "${k32w0_sdk_root}/boards/${board}/wireless_examples/openthread/reed/bm/clock_config.c",
          "${k32w0_sdk_root}/boards/${board}/wireless_examples/openthread/reed/bm/pin_mux.c",
        ]
      }
    }

    if (chip_with_low_power != 0) {
      sources += [ "${k32w0_sdk_root}/boards/${board}/wireless_examples/hybrid/ble_ot/lped_ble_wuart/ble_802_15_4_common/app_dual_mode_low_power.c" ]
    }

    if (chip_with_ntag != 0) {
      sources += [
        "${k32w0_sdk_root}/devices/${device}/drivers/fsl_ntag.c",
        "${k32w0_sdk_root}/middleware/ntag_i2c_plus/HAL_I2C/i2c_jn_fsl.c",
        "${k32w0_sdk_root}/middleware/ntag_i2c_plus/HAL_NTAG/ntag_driver.c",
        "${k32w0_sdk_root}/middleware/ntag_i2c_plus/HAL_TMR/timer_driver_jn.c",
      ]
    }

    if (!defined(public_deps)) {
      public_deps = []
    }

    public_deps += [ "${openthread_root}/src/core:libopenthread_core_headers" ]

    if (!defined(public_configs)) {
      public_configs = []
    }

    public_configs += [ ":${sdk_target_name}_config" ]
  }
}
