# 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
}

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!")

  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 = 1
    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=0xC8BC",
      "gUartDebugConsole_d=1",
      "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",
      "K32W_LOG_ENABLED=1",
      "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=1",
        ]
      }

      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",
      ]
    } else {
      defines += [
        "cPWR_UsePowerDownMode=0",
        "cPWR_FullPowerDownMode=0",
      ]
    }

    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 (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" ]
  }
}
