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

import("${chip_root}/src/platform/device.gni")
import("${dir_pw_build}/python.gni")
import("${freertos_root}/freertos.gni")
import("${mbedtls_root}/mbedtls.gni")
import("ti_simplelink_board.gni")

declare_args() {
  # Location of the TI SimpleLink SDK.

  if (ti_simplelink_device_family == "cc13x2_26x2" ||
      ti_simplelink_device_family == "cc13x2x7_26x2x7" ||
      ti_simplelink_device_family == "cc13x4_26x4") {
    ti_simplelink_sdk_root =
        "${chip_root}/third_party/ti_simplelink_sdk/repo_cc13xx_cc26xx"
    ot_cc13x2_cc26x2 =
        "${chip_root}/third_party/ti_simplelink_sdk/repo_ot-cc13x2_cc26x2"
  } else if (ti_simplelink_device_family == "cc32xx") {
    ti_simplelink_sdk_root =
        "${chip_root}/third_party/ti_simplelink_sdk/repo_cc32xx"
  }

  ti_sysconfig_root = ""
}

assert(ti_simplelink_sdk_root != "", "ti_simplelink_sdk_root must be specified")
assert(ti_sysconfig_root != "", "ti_sysconfig_root must be specified")

template("ti_sysconfig") {
  assert(ti_sysconfig_root != "", "must be specified")
  assert(ti_simplelink_sdk_root != "",
         "ti_simplelink_sdk_root must be specified")

  output_dir = "${target_gen_dir}/${target_name}"
  gen_outputs = []
  foreach(output, invoker.outputs) {
    gen_outputs += [ output_dir + "/" + output ]
  }

  config("${target_name}_config") {
    include_dirs = [
      output_dir,
      "${ti_simplelink_sdk_root}/source",
    ]
    defines = []
    ldflags = []

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

    if (ti_simplelink_device_family == "cc13x2_26x2") {
      ldflags += [
        "-nostartfiles",
        "-fno-exceptions",
        "-fno-unwind-tables",
      ]
      defines += [ "DeviceFamily_CC13X2_CC26X2" ]
    } else if (ti_simplelink_device_family == "cc13x2x7_26x2x7") {
      ldflags += [
        "-nostartfiles",
        "-fno-exceptions",
        "-fno-unwind-tables",
      ]
      defines += [ "DeviceFamily_CC26X2X7" ]
    } else if (ti_simplelink_device_family == "cc13x4_26x4") {
      ldflags += [
        "-nostartfiles",
        "-fno-exceptions",
        "-fno-unwind-tables",
      ]
      defines += [ "DeviceFamily_CC13X4" ]
    } else if (ti_simplelink_device_family == "cc32xx") {
      ldflags += [ "-nostartfiles" ]
      defines += [ "CC32XXWARE" ]
    }
    if (defined(invoker.cflags)) {
      cflags = invoker.cflags
    }
    if (defined(invoker.ldflags)) {
      ldflags += invoker.ldflags
    }
  }

  pw_python_action("${target_name}_gen") {
    script = "${ti_simplelink_sdk_build_root}/run_sysconfig.py"
    sources = invoker.sources
    outputs = gen_outputs

    args = [
      ti_sysconfig_root,
      "-s",
      rebase_path(ti_simplelink_sdk_root + "/.metadata/product.json",
                  root_build_dir),
      "-o",
      rebase_path(output_dir, root_build_dir),
      "--compiler",
      "gcc",
      "--board",
      "/ti/boards/" + ti_simplelink_board,
      "--rtos",
      "freertos",
    ]

    foreach(source, sources) {
      args += [ rebase_path(source, root_build_dir) ]
    }
  }

  source_set(target_name) {
    sources = gen_outputs

    public_configs = [ ":${target_name}_config" ]
    public_deps = [ ":${target_name}_gen" ]

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

template("ti_simplelink_sdk") {
  if (defined(invoker.ti_simplelink_sdk_root)) {
    ti_simplelink_sdk_root = invoker.ti_simplelink_sdk_root
  }

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

  sdk_target_name = target_name

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

    # Treat these includes as system includes, so warnings in them are not fatal.
    include_dirs += [
      "${ti_simplelink_sdk_root}/source",
      "${ti_simplelink_sdk_root}/source/third_party/CMSIS/Include",
      "${chip_root}/third_party/mbedtls/repo/include",
    ]
    defines = []

    if (ti_simplelink_device_family == "cc13x2_26x2" ||
        ti_simplelink_device_family == "cc13x2x7_26x2x7" ||
        ti_simplelink_device_family == "cc13x4_26x4") {
      assert(ti_simplelink_soc_family != "",
             "ti_simplelink_soc_family must be specified")
      assert(ti_simplelink_device_family != "",
             "ti_simplelink_device_family must be specified")

      libs += [
        "${ti_simplelink_sdk_root}/source/ti/drivers/lib/gcc/${ti_simplelink_isa}/drivers_${ti_simplelink_soc_family}.a",
        "${ti_simplelink_sdk_root}/source/ti/drivers/rf/lib/gcc/${ti_simplelink_isa}/rf_multiMode_${ti_simplelink_soc_family}.a",
      ]
    } else if (ti_simplelink_device_family == "cc32xx") {
      assert(ti_simplelink_soc_family != "",
             "ti_simplelink_soc_family must be specified")
      assert(ti_simplelink_device_family != "",
             "ti_simplelink_device_family must be specified")

      defines += [ "DeviceFamily_CC3220" ]

      libs += [
        "${ti_simplelink_sdk_root}/source/ti/drivers/lib/gcc/m4/drivers_cc32xx.a",
        "${ti_simplelink_sdk_root}/source/ti/devices/cc32xx/driverlib/gcc/Release/driverlib.a",
        "${ti_simplelink_sdk_root}/source/ti/drivers/net/wifi/gcc/rtos/simplelink.a",
        "${ti_simplelink_sdk_root}/source/ti/net/lib/gcc/m4/slnetsock_debug.a",
        "${ti_simplelink_sdk_root}/source/ti/drivers/net/wifi/slnetif/gcc/Release/slnetifwifi.a",
      ]
      include_dirs += [
        "${ti_simplelink_sdk_root}/examples/rtos/common/",
        "${ti_simplelink_sdk_root}/examples/rtos/common/ifmod",
      ]
    }

    if (ti_simplelink_device_family == "cc13x2_26x2") {
      defines += [ "DeviceFamily_CC13X2_CC26X2" ]
      libs += [ "${ti_simplelink_sdk_root}/source/ti/devices/cc13x2_cc26x2/driverlib/bin/gcc/driverlib.lib" ]
    } else if (ti_simplelink_device_family == "cc13x2x7_26x2x7") {
      defines += [ "DeviceFamily_CC13X2X7_CC26X2X7" ]
      libs += [ "${ti_simplelink_sdk_root}/source/ti/devices/cc13x2x7_cc26x2x7/driverlib/bin/gcc/driverlib.lib" ]
    } else if (ti_simplelink_device_family == "cc13x4_26x4") {
      defines += [ "DeviceFamily_CC13X4" ]
      libs += [ "${ti_simplelink_sdk_root}/source/ti/devices/cc13x4_cc26x4/driverlib/bin/gcc/driverlib.lib" ]
    }

    if (ti_simplelink_device_family == "cc32xx") {
      assert(ti_simplelink_soc_family != "",
             "ti_simplelink_soc_family must be specified")
      assert(ti_simplelink_device_family != "",
             "ti_simplelink_device_family must be specified")

      libs += [ "${ti_simplelink_sdk_root}/source/ti/drivers/lib/gcc/m4/drivers_${ti_simplelink_soc_family}.a" ]
    }

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

  source_set("${sdk_target_name}_dpl") {
    defines = []
    include_dirs = []

    cflags = [ "-Wno-sign-compare" ]

    sources = [
      "${ti_simplelink_sdk_root}/kernel/freertos/dpl/AppHooks_freertos.c",
      "${ti_simplelink_sdk_root}/kernel/freertos/dpl/DebugP_freertos.c",
      "${ti_simplelink_sdk_root}/kernel/freertos/dpl/MutexP_freertos.c",
      "${ti_simplelink_sdk_root}/kernel/freertos/dpl/QueueP_freertos.c",
      "${ti_simplelink_sdk_root}/kernel/freertos/dpl/SemaphoreP_freertos.c",
      "${ti_simplelink_sdk_root}/kernel/freertos/dpl/StaticAllocs_freertos.c",
      "${ti_simplelink_sdk_root}/kernel/freertos/dpl/SwiP_freertos.c",
      "${ti_simplelink_sdk_root}/kernel/freertos/dpl/SystemP_freertos.c",
    ]
    if (ti_simplelink_device_family == "cc13x2_26x2" ||
        ti_simplelink_device_family == "cc13x2x7_26x2x7") {
      sources += [
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/ClockPCC26X2_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/HwiPCC26X2_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/PowerCC26X2_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/TimerPCC26XX_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/startup/startup_cc13x2_cc26x2_gcc.c",
      ]
    } else if (ti_simplelink_device_family == "cc13x4_26x4") {
      sources += [
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/ClockPCC26X2_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/HwiPCC26X2_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/PowerCC26X2_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/TimerPCC26XX_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/startup/startup_cc13x4_cc26x4_gcc.c",
      ]
    } else if (ti_simplelink_device_family == "cc32xx") {
      sources += [
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/ClockP_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/HwiPCC32XX_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/dpl/PowerCC32XX_freertos.c",
        "${ti_simplelink_sdk_root}/kernel/freertos/startup/startup_cc32xx_gcc.c",
      ]
    }

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

    public_deps = [ "${chip_root}/third_party/ti_simplelink_sdk:freertos" ]

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

  config("${sdk_target_name}_posix_config") {
    include_dirs = [ "${ti_simplelink_sdk_root}/source/ti/posix/gcc" ]
    cflags_c = [ "-std=c11" ]
    cflags_cc = [ "-std=c++14" ]
    cflags = [
      "-Wno-maybe-uninitialized",
      "-Wno-sign-compare",
    ]
  }

  source_set("${sdk_target_name}_freertos") {
    defines = []
    include_dirs = []

    # POSIX-like porting layer is incompatable with the gnu definitions from -std=gnu11
    configs -= [ "${build_root}/config/compiler:std_default" ]
    configs += [ ":${sdk_target_name}_posix_config" ]
    sources = [
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/clock.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/memory.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/mqueue.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/pthread.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/pthread_barrier.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/pthread_cond.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/pthread_mutex.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/pthread_rwlock.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/sched.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/semaphore.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/sleep.c",
      "${ti_simplelink_sdk_root}/source/ti/posix/freertos/timer.c",
    ]

    public_deps = [ ":${sdk_target_name}_dpl" ]

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

  if (ti_simplelink_device_family == "cc13x2_26x2" ||
      ti_simplelink_device_family == "cc13x2x7_26x2x7" ||
      ti_simplelink_device_family == "cc13x4_26x4") {
    source_set("${sdk_target_name}_nvocmp") {
      defines = [ "NVOCMP_POSIX_MUTEX" ]
      cflags = [
        "-Wno-int-conversion",
        "-Wno-address-of-packed-member",
        "-Wno-implicit-fallthrough",
        "-Wno-unused-label",
        "-Wno-shadow",
      ]
      public_deps = [
        ":${sdk_target_name}_freertos",
        "${chip_root}/third_party/ti_simplelink_sdk:freertos",
        "${chip_root}/third_party/ti_simplelink_sdk:mbedtls",
        "${chip_root}/third_party/ti_simplelink_sdk:ti_simplelink_sysconfig",
      ]

      configs -= [ "${build_root}/config/compiler:std_default" ]
      configs += [ ":${sdk_target_name}_posix_config" ]
      sources = [
        "${ti_simplelink_sdk_root}/source/ti/common/nv/crc.c",
        "${ti_simplelink_sdk_root}/source/ti/common/nv/nvocmp.c",
      ]

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

      if (chip_openthread_ftd) {
        public_configs +=
            [ "${chip_root}/third_party/openthread/repo:openthread_ftd_config" ]
      } else {
        public_configs +=
            [ "${chip_root}/third_party/openthread/repo:openthread_mtd_config" ]
      }
    }
  }

  config("${sdk_target_name}_dmm_config") {
    include_dirs = []
    libs = []

    defines = [
      "INCLUDE_BGET_STATS",
      "USE_DMM",
      "NVOCMP_FREERTOS_MUTEX=1",
      "USEOT",
      "ICALL_EVENTS",
      "ICALL_JT",
      "ICALL_LITE",
      "ICALL_MAX_NUM_ENTITIES=6",
      "ICALL_MAX_NUM_TASKS=3",
      "ICALL_STACK0_ADDR",
      "POWER_SAVING",
      "TBM_ACTIVE_ITEMS_ONLY",
      "NPI_USE_UART",
      "NPI_FLOW_CTRL=0",
      "OSAL_CBTIMER_NUM_TASKS=1",
      "USE_ICALL",
      "BLE_START",
      "FREERTOS",
    ]

    if (ti_simplelink_device_family == "cc13x2x7_26x2x7") {
      libs += [
        "${ti_simplelink_sdk_root}/source/ti/dmm/lib/gcc/m4f/libdmmlib_freertos.a",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/libraries/cc26x2r1/OneLib.a",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/libraries/cc26x2r1/StackWrapper.a",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/libraries/cc26x2r1/ble_r2.symbols",
      ]

      defines += [
        "FLASH_ROM_BUILD",
        "ONE_BLE_LIB_SIZE_OPTIMIZATION",
        "STACK_LIBRARY",
        "CC26XX",
        "CC26X2",
        "CC26X2R1_LAUNCHXL",
      ]
      include_dirs += [
        # DMM/BLE:
        "${ti_simplelink_sdk_root}/source",

        # Eclipse the SDK config header from DMM
        "${chip_root}/src/platform/cc13x2_26x2",

        # CHIPoBLE Added include dirs
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/freertos/",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/freertos/itm",
        "${ti_simplelink_sdk_root}/source/ti/dmm/thread/platform",
        "${ti_simplelink_sdk_root}/source/",
        "${ti_simplelink_sdk_root}/source/ti/",
        "${ti_simplelink_sdk_root}/source/ti/dmm/",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/thread/",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/thread/source/activity/",
        "${ti_simplelink_sdk_root}/source/ti/common/nv",

        "${ti_simplelink_sdk_root}/source/ti/devices/cc13x2x7_cc26x2x7",
        "${ti_simplelink_sdk_root}/source/ti/devices/cc13x2x7_cc26x2x7/inc",
        "${ti_simplelink_sdk_root}/source/ti/devices/cc13x2x7_cc26x2x7/rf_patches",
        "${ti_simplelink_sdk_root}/source/ti/devices/cc13x2x7_cc26x2x7/driverlib",

        "${ti_simplelink_sdk_root}/source/ti/ble5stack/common/cc26xx/npi/stack/",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/common/cc26xx/rcosc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/controller/cc26xx/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/rom",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/common/cc26xx",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/common/cc26xx/freertos",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/icall/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/icall/src",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/hal/src/target/_common",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/hal/src/target/_common/cc26xx",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/hal/src/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/heapmgr",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/profiles/dev_info",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/hal/src/target/_common/cc26xx/",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/profiles/simple_profile",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/icall/src/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/osal/src/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/controller/cc26xx/inc/",
        "${ti_simplelink_sdk_root}/source/ti/common/cc26xx",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/common/cc26xx/freertos/",
      ]
    } else if (ti_simplelink_device_family == "cc13x4_26x4") {
      libs += [
        "${ti_simplelink_sdk_root}/source/ti/dmm/lib/gcc/m4f/libdmmlib_freertos.a",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/libraries/cc1354p10_6/OneLib.a",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/libraries/cc1354p10_6/StackWrapper.a",
      ]
      defines += [
        "ONE_BLE_LIB_SIZE_OPTIMIZATION",
        "NVOCMP_NVPAGES=3",
        "NVOCMP_NWSAMEITEM=1",
        "CC13X2P",
        "SYSCFG",
        "CC13X4",
        "CC13XX",
        "EXTENDED_STACK_SETTINGS=EXTENDED_STACK_SETTINGS_DEFAULT",
      ]

      include_dirs += [
        # DMM/BLE:
        "${ti_simplelink_sdk_root}/source",

        # Eclipse the SDK config header from DMM
        "${chip_root}/src/platform/cc13x4_26x4",
        "${chip_root}/src/platform/cc13xx_26xx",

        # CHIPoBLE Added include dirs
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/freertos/",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/freertos/itm",
        "${ti_simplelink_sdk_root}/source/ti/dmm/thread/platform",
        "${ti_simplelink_sdk_root}/source/",
        "${ti_simplelink_sdk_root}/source/ti/",
        "${ti_simplelink_sdk_root}/source/ti/dmm/",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/thread/",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/thread/source/activity/",
        "${ti_simplelink_sdk_root}/source/ti/common/nv",

        "${ti_simplelink_sdk_root}/source/ti/devices/cc13x4_cc26x4",
        "${ti_simplelink_sdk_root}/source/ti/devices/cc13x4_cc26x4/inc",
        "${ti_simplelink_sdk_root}/source/ti/devices/cc13x4_cc26x4/rf_patches",
        "${ti_simplelink_sdk_root}/source/ti/devices/cc13x4_cc26x4/driverlib",

        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/common/cc26xx/npi/stack/",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/common/cc26xx/rcosc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/controller/cc26xx/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/rom",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/common/cc26xx",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/common/cc26xx/freertos",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/icall/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/icall/src",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/hal/src/target/_common",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/hal/src/target/_common/cc26xx",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/hal/src/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/heapmgr",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/profiles/dev_info",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/hal/src/target/_common/cc26xx/",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/profiles/simple_profile",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/icall/src/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/osal/src/inc",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/controller/cc26xx/inc/",
        "${ti_simplelink_sdk_root}/source/ti/common/cc26xx",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/common/cc26xx/freertos/",
      ]
    }

    cflags = [
      "-Wno-conversion",
      "-Wno-comment",
      "-Wno-shadow",
      "@" + rebase_path(ti_simplelink_sdk_root +
                            "/source/ti/ble5stack/config/build_components.opt",
                        root_build_dir),
      "@" + rebase_path(ti_simplelink_sdk_root +
                            "/source/ti/ble5stack/config/factory_config.opt",
                        root_build_dir),
    ]
  }

  source_set("${sdk_target_name}_dmm") {
    if (ti_simplelink_device_family == "cc13x2_26x2" ||
        ti_simplelink_device_family == "cc13x4_26x4" ||
        ti_simplelink_device_family == "cc13x2x7_26x2x7") {
      defines = []
      include_dirs = [
        "${chip_root}/third_party/openthread/repo/include/",
        "${chip_root}/src/",
      ]
      configs -=
          [ "${build_root}/config/compiler:warnings_default" ]  # removed for
                                                                # -Wshadow

      cflags = [
        "-Wno-sign-compare",
        "-Wno-unused-variable",
        "-Wno-implicit-function-declaration",  # asm not defined
      ]

      sources = [
        "${chip_root}/src/platform/cc13xx_26xx/chipOBleProfile.c",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/common/cc26xx/freertos/TI_heap_wrapper.c",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/common/cc26xx/freertos/bget.c",
        "${ti_simplelink_sdk_root}/source/ti/ble5stack/common/cc26xx/rcosc/rcosc_calibration.c",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/ble_remote_display/stack/osal_icall_ble.c",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/freertos/icall_FreeRTOS.c",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/freertos/util.c",
        "${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/thread/source/activity/dmm_thread_activity.c",
        "${ti_simplelink_sdk_root}/source/ti/dmm/dmm_priority_ble_thread.c",
      ]

      if (ti_simplelink_device_family == "cc13x2_26x2" ||
          ti_simplelink_device_family == "cc13x2x7_26x2x7") {
        sources += [
          "${chip_root}/src/platform/cc13xx_26xx/cc13x2_26x2/ble_user_config.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack/host/gatt_uuid.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack/host/gattservapp_util.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack/icall/app/icall_api_lite.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack/icall/src/icall_cc2650.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack/icall/src/icall_user_config.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack/icall/stack/ble_user_config_stack.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack/profiles/dev_info/cc26xx/devinfoservice.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack/rom/agama_r1/rom_init.c",
        ]

        include_dirs += [ "${chip_root}/src/platform/cc13xx_26xx/cc13x2_26x2/" ]
      } else if (ti_simplelink_device_family == "cc13x4_26x4") {
        sources += [
          "${chip_root}/src/platform/cc13xx_26xx/cc13x4_26x4/ble_user_config.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/host/gatt_uuid.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/host/gattservapp_util.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/icall/app/icall_api_lite.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/icall/src/icall_cc2650.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/icall/src/icall_user_config.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/icall/stack/ble_user_config_stack.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/profiles/dev_info/cc26xx/devinfoservice.c",
          "${ti_simplelink_sdk_root}/source/ti/ble5stack_flash/rom/agama_r1/rom_init.c",
        ]

        include_dirs += [ "${chip_root}/src/platform/cc13xx_26xx/cc13x4_26x4/" ]
      }

      configs -= [ "${build_root}/config/compiler:std_default" ]
      configs += [ ":${sdk_target_name}_posix_config" ]

      public_deps = [
        "${chip_root}/third_party/ti_simplelink_sdk:freertos",
        "${chip_root}/third_party/ti_simplelink_sdk:ti_simplelink_sysconfig",
      ]

      public_configs = [
        ":${sdk_target_name}_config",
        ":${sdk_target_name}_dmm_config",
      ]
    }
  }

  group(sdk_target_name) {
    public_deps = [
      ":${sdk_target_name}_dpl",
      ":${sdk_target_name}_freertos",
    ]
    if (ti_simplelink_device_family == "cc13x2_26x2" ||
        ti_simplelink_device_family == "cc13x2x7_26x2x7" ||
        ti_simplelink_device_family == "cc13x4_26x4") {
      public_deps += [
        ":${sdk_target_name}_dmm",
        ":${sdk_target_name}_nvocmp",
      ]
    }
    if (defined(invoker.public_configs)) {
      public_configs = invoker.public_configs
    }
  }
}

#       "${openthread_root}/src/core:libopenthread_core_headers",

#   config("${sdk_target_name}_openthread_platform_config") {
#     include_dirs = [
#       "${chip_root}/third_party/openthread/repo/examples/platforms",
#       "${chip_root}/third_party/openthread/repo/src/core",
#       "${ti_simplelink_sdk_root}/source/ti/devices/${ti_simplelink_device_family}",
#     ]

#     if (ti_simplelink_device_family == "cc13x2_26x2") {
#       include_dirs += [
#         "${ti_simplelink_sdk_root}/source/ti/devices/cc13x2_cc26x2",
#         "${ot_cc13x2_cc26x2}/src/cc13x2_cc26x2",
#       ]
#     } else if (ti_simplelink_device_family == "cc13x2x7_26x2x7") {
#       include_dirs += [
#         "${ti_simplelink_sdk_root}/source/ti/devices/cc13x2x7_cc26x2x7",
#         "${ot_cc13x2_cc26x2}/src/cc13x2_cc26x2",
#       ]
#     }
#   }

#   source_set("${sdk_target_name}_openthread_platform") {
#     cflags = [
#       "-Wno-int-conversion",
#       "-Wno-address-of-packed-member",
#       "-Wno-implicit-fallthrough",
#       "-Wno-unused-label",
#     ]
#     public_deps = [
#       ":${sdk_target_name}_freertos",
#       "${chip_root}/third_party/ti_simplelink_sdk:freertos",
#       "${chip_root}/third_party/ti_simplelink_sdk:mbedtls",
#       "${chip_root}/third_party/ti_simplelink_sdk:ti_simplelink_sysconfig",
#       "${openthread_root}/src/core:libopenthread_core_headers",
#     ]

#     configs -= [ "${build_root}/config/compiler:std_default" ]
#     configs += [ ":${sdk_target_name}_posix_config" ]
#     sources = [
#       "${ot_cc13x2_cc26x2}/src/cc13x2_cc26x2/alarm.c",
#       "${ot_cc13x2_cc26x2}/src/cc13x2_cc26x2/alarm_micro.c",
#       "${ot_cc13x2_cc26x2}/src/cc13x2_cc26x2/diag.c",
#       "${ot_cc13x2_cc26x2}/src/cc13x2_cc26x2/entropy.c",
#       "${ot_cc13x2_cc26x2}/src/cc13x2_cc26x2/misc.c",
#       "${ot_cc13x2_cc26x2}/src/cc13x2_cc26x2/radio.c",
#       "${ot_cc13x2_cc26x2}/src/cc13x2_cc26x2/settings.c",
#       #"${ot_cc13x2_cc26x2}/src/cc13x2_cc26x2/system.c",
#     ]

#     public_configs = [
#       ":${sdk_target_name}_config",
#       ":${sdk_target_name}_openthread_platform_config",
#       "${chip_root}/third_party/openthread/repo:openthread_config",
#     ]

#     if (chip_openthread_ftd) {
#       public_configs +=
#           [ "${chip_root}/third_party/openthread/repo:openthread_ftd_config" ]
#     } else {
#       public_configs +=
#           [ "${chip_root}/third_party/openthread/repo:openthread_mtd_config" ]
#     }
#   }
