# 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/mbedtls.gni")
import("//build_overrides/nxp_sdk.gni")
import("//build_overrides/openthread.gni")

import("${build_root}/config/compiler/compiler.gni")
import("${chip_root}/src/crypto/crypto.gni")
import("${chip_root}/src/lib/core/core.gni")
import("${chip_root}/src/platform/device.gni")
import("${chip_root}/src/platform/nxp/${nxp_platform}/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
  use_fro_32k = 0
  use_custom_factory_provider = 0
  chip_crypto_flavor = "NXP-Ultrafast-P256"
  chip_reduce_ssbl_size = false
  chip_enable_ota_firmware_processor = 1
  chip_enable_ota_factory_data_processor = 0
  chip_with_pdm_encryption = 1
  ota_custom_entry_address = "0x000C1000"
  use_antenna_diversity = 0

  chip_with_ota_encryption = 0
  chip_with_ota_key = "1234567890ABCDEFA1B2C3D4E5F6F1B4"
  chip_with_sdk_package = 1
}

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

if (chip_crypto == "platform") {
  assert(chip_crypto_flavor == "tinycrypt" ||
             chip_crypto_flavor == "NXP-Ultrafast-P256",
         "choose tinycrypt or NXP-Ultrafast-P256 as crypto platform")
}

# 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(
      use_custom_factory_provider == 0 || chip_with_factory_data == 1,
      "Please set chip_with_factory_data=1 if using custom factory provider.")

  assert(
      chip_enable_ota_factory_data_processor == 0 ||
          chip_enable_ota_firmware_processor == 1,
      "Please set chip_enable_ota_firmware_processor=1 if using default factory data processor.")

  assert(
      chip_enable_ota_factory_data_processor == 0 ||
          chip_with_factory_data == 1,
      "Please set chip_with_factory_data=1 if using default factory data processor.")

  assert(
      chip_enable_ota_factory_data_processor == 0 ||
          chip_enable_ota_firmware_processor == 1,
      "Please set chip_enable_ota_firmware_processor=1 if using default factory data processor.")

  assert(
      chip_enable_ota_factory_data_processor == 0 ||
          chip_with_factory_data == 1,
      "Please set chip_with_factory_data=1 if using default factory data processor.")

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

  if (k32w0_sdk_root == "${chip_root}/third_party/nxp/k32w0_sdk/repo/core" ||
      k32w0_sdk_root == "/opt/sdk/core") {
    chip_with_sdk_package = 0
  } else {
    chip_with_sdk_package = 1
  }
  print("device:", device)
  print("board:", board)
  print("ntag:", chip_with_ntag)
  print("increased TX power:", chip_with_high_power)
  print("FRO32k: ", use_fro_32k)
  print("low power: ", chip_with_low_power)
  print("OTA default firmware processor: ", chip_enable_ota_firmware_processor)
  print("OTA default factory data processor: ",
        chip_enable_ota_factory_data_processor)
  print("PDM Encryption: ", chip_with_pdm_encryption)
  print("Antenna Diversity enabled: ", use_antenna_diversity)

  if (chip_with_low_power == 1 && chip_logging == true) {
    print(
        "WARNING: enabling logs in low power might break the LP timings. Use at your own risk!")
    print("WARNING: set chip_logging=false to disable logging.")
  }

  if (chip_crypto == "platform") {
    print("ECC crypto lib: ", chip_crypto_flavor)
  }

  print("chip_with_sdk_package:", chip_with_sdk_package)
  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 = []

    # Directories specified with -isystem options are scanned in left-to-right order.
    # sha256_alt.h is present in both these paths, but the one from port/matter will
    # be selected, which is intended. Both paths are needed, because some header
    # files are not overwritten (e.g. aes_alt.h).
    _sdk_include_dirs += [
      "${k32w0_sdk_root}/middleware/mbedtls/port/matter",
      "${k32w0_sdk_root}/middleware/mbedtls/port/ksdk",
    ]

    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}/utilities/debug_console/str",
      "${k32w0_sdk_root}/utilities/debug_console",
      "${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/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",
    ]
    if (chip_with_sdk_package == 1) {
      _sdk_include_dirs += [ "${k32w0_sdk_root}/devices/${device}/drivers" ]
    } else {
      _sdk_include_dirs += [
        "${k32w0_sdk_root}/devices/K32W061/drivers",
        "${k32w0_sdk_root}/drivers/common",
        "${k32w0_sdk_root}/drivers/lpc_gpio",
        "${k32w0_sdk_root}/drivers/aes",
        "${k32w0_sdk_root}/drivers/jn_iocon",
        "${k32w0_sdk_root}/drivers/lpc_adc",
        "${k32w0_sdk_root}/drivers/aes",
        "${k32w0_sdk_root}/drivers/jn_flash",
        "${k32w0_sdk_root}/drivers/sha",
        "${k32w0_sdk_root}/drivers/flexcomm",
        "${k32w0_sdk_root}/drivers/lpc_dma",
        "${k32w0_sdk_root}/drivers/pint",
        "${k32w0_sdk_root}/drivers/inputmux",
        "${k32w0_sdk_root}/drivers/spifi",
        "${k32w0_sdk_root}/drivers/jn_rtc",
        "${k32w0_sdk_root}/drivers/fmeas",
        "${k32w0_sdk_root}/drivers/jn_rng",
        "${k32w0_sdk_root}/drivers/ctimer",
        "${k32w0_sdk_root}/drivers/wwdt",
        "${k32w0_sdk_root}/drivers/gint",
      ]
    }

    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/XCVR/lib/libRadio.a",
      "${k32w0_sdk_root}/middleware/wireless/framework/SecLib/lib_crypto_m4.a",
    ]

    defines = [
      "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=0xF000",
      "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",
      "PDM_SAVE_IDLE=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",
      "gController_ReducedRxThoughput=1",
      "gPasskeyValue_c=999999",
      "gSupportBle=1",
      "SUPPORT_FOR_BLE=1",
      "gEnableBleInactivityTimeNotify=1",
      "gConnPhyUpdateReqTxPhySettings_c=(gLePhy2MFlag_c)",
      "gConnPhyUpdateReqRxPhySettings_c=(gLePhy2MFlag_c)",
      "gConnPhyUpdateReqPhyOptions_c=(gLeCodingNoPreference_c)",
      "BLE_HIGH_TX_POWER=0",
      "gAdvertisingPowerLeveldBm_c=0",
      "gConnectPowerLeveldBm_c=0",
      "DUAL_MODE_APP=1",
      "gMainThreadStackSize_c=5096",
      "HEAP_SIZE=gTotalHeapSize_c",
      "gLoggingActive_d=0",
      "gLogRingPlacementOffset_c=0xF000",
      "gSecLibUseSha256Alt_d=1",
      "gOTA_UseSecLibAes=1",
      "gResetSystemReset_d=1",

      # TODO: move these platform specific defines to args.gni
      "NXP_OT_IDLE_INTERVAL=${nxp_ot_idle_interval_ms}",
      "NXP_OT_ACTIVE_INTERVAL=${nxp_ot_active_interval_ms}",
      "NXP_ICD_ENABLED=1",
      "NXP_ACTIVE_MODE_THRESHOLD=${nxp_active_mode_threshold_ms}",
      "NXP_ACTIVE_MODE_DURATION_MS=${nxp_active_mode_duration_ms}",
      "NXP_IDLE_MODE_DURATION_SEC=${nxp_idle_mode_duration_s}",
      "NXP_ICD_SUPPORTED_CLIENTS_PER_FABRIC=${nxp_icd_supported_clients_per_fabric}",
    ]

    if (use_antenna_diversity == 1) {
      print("Check ADO/ADE pin configuration when using Antenna Diversity.")
      defines += [ "ANTENNA_DIVERSITY_ENABLE" ]
    }

    # If OTA default processors are enabled, then OTA custom entry structure
    # will be saved in external flash: gOTACustomOtaEntryMemory=OTACustomStorage_ExtFlash (1)
    if (chip_enable_ota_firmware_processor == 1) {
      defines += [
        "gOTAAllowCustomStartAddress=1",
        "gOTAUseCustomOtaEntry=1",
        "gOTACustomOtaEntryMemory=1",
        "OTA_ENTRY_TOP_ADDR=${ota_custom_entry_address}",
      ]

      if (chip_enable_ota_factory_data_processor == 1) {
        defines += [ "CONFIG_CHIP_K32W0_OTA_FACTORY_DATA_PROCESSOR=1" ]
      }
    }

    if (chip_crypto == "platform" &&
        chip_crypto_flavor == "NXP-Ultrafast-P256") {
      defines += [ "EC_P256_DSPEXT=1" ]
    }

    if (use_fro_32k == 1) {
      defines += [
        "gClkUseFro32K=1",
        "gPWR_CpuClk_48MHz=0",
      ]
    } else {
      defines += [
        "gClkUseFro32K=0",
        "gPWR_CpuClk_48MHz=1",
      ]
    }

    if (chip_with_pdm_encryption == 1) {
      defines += [ "PDM_ENCRYPTION=1" ]
    } else {
      defines += [ "PDM_ENCRYPTION=0" ]
    }

    if (chip_with_pdm_encryption == 1) {
      defines += [ "PDM_ENCRYPTION=1" ]
    } else {
      defines += [ "PDM_ENCRYPTION=0" ]
    }

    if (chip_with_ota_encryption == 1) {
      defines += [
        "OTA_ENCRYPTION_ENABLE=1",
        "OTA_ENCRYPTION_KEY=\"${chip_with_ota_key}\"",
      ]
    } else {
      defines += [ "OTA_ENCRYPTION_ENABLE=0" ]
    }

    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 += [
        "chip_with_low_power=1",
        "cPWR_UsePowerDownMode=1",
        "cPWR_FullPowerDownMode=1",
        "DBG_PostStepTickAssess=0",
        "gPWR_FreqScalingWFI=0",
        "mAppUseTickLessMode_c=1",
        "cPWR_DiscardRunningTimerForPowerDown=1",
      ]

      if (chip_logging == false) {
        defines += [
          "K32W_LOG_ENABLED=0",
          "gUartDebugConsole_d=0",
        ]
      } else {
        defines += [
          "K32W_LOG_ENABLED=1",
          "gUartDebugConsole_d=1",
        ]
      }
    } 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_LOAD_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",

        # TODO After upgrading the compiler we started to see new error from address
        # warning. To allow PR that rolls up compiler we have suppress this warning
        # as an error temporarily.
        # see https://github.com/project-chip/connectedhomeip/issues/26221
        "-Wno-error=address",
      ]
    }

    # 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}/mcuxpresso/startup_${device_lowercase}.c",
      "${k32w0_sdk_root}/devices/${device}/system_${device}.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/SecLib/SecLib_ecp256_sw.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_sdk_package == 1) {
      sources += [
        "${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}/utilities/debug_console/fsl_debug_console.c",
        "${k32w0_sdk_root}/devices/${device}/utilities/str/fsl_str.c",
      ]
    } else {
      sources += [
        "${k32w0_sdk_root}/devices/K32W061/drivers/fsl_clock.c",
        "${k32w0_sdk_root}/devices/K32W061/drivers/fsl_power.c",
        "${k32w0_sdk_root}/devices/K32W061/drivers/fsl_reset.c",
        "${k32w0_sdk_root}/devices/K32W061/drivers/fsl_wtimer.c",
        "${k32w0_sdk_root}/drivers/aes/fsl_aes.c",
        "${k32w0_sdk_root}/drivers/common/fsl_common.c",
        "${k32w0_sdk_root}/drivers/ctimer/fsl_ctimer.c",
        "${k32w0_sdk_root}/drivers/flexcomm/fsl_flexcomm.c",
        "${k32w0_sdk_root}/drivers/flexcomm/fsl_i2c.c",
        "${k32w0_sdk_root}/drivers/flexcomm/fsl_i2c_freertos.c",
        "${k32w0_sdk_root}/drivers/flexcomm/fsl_usart.c",
        "${k32w0_sdk_root}/drivers/fmeas/fsl_fmeas.c",
        "${k32w0_sdk_root}/drivers/inputmux/fsl_inputmux.c",
        "${k32w0_sdk_root}/drivers/jn_flash/fsl_flash.c",
        "${k32w0_sdk_root}/drivers/jn_rng/fsl_rng.c",
        "${k32w0_sdk_root}/drivers/jn_rtc/fsl_rtc.c",
        "${k32w0_sdk_root}/drivers/lpc_adc/fsl_adc.c",
        "${k32w0_sdk_root}/drivers/lpc_gpio/fsl_gpio.c",
        "${k32w0_sdk_root}/drivers/pint/fsl_pint.c",
        "${k32w0_sdk_root}/drivers/sha/fsl_sha.c",
        "${k32w0_sdk_root}/drivers/spifi/fsl_spifi.c",
        "${k32w0_sdk_root}/utilities/debug_console/fsl_debug_console.c",
        "${k32w0_sdk_root}/utilities/debug_console/str/fsl_str.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" ]
  }
}
