# Copyright (c) 2023 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//build_overrides/chip.gni")
import("//build_overrides/jlink.gni")
import("//build_overrides/mbedtls.gni")

import("//build_overrides/asr.gni")

# Defines an asr SDK build target.
#
# Parameters:
#   sources - The sources files to build.
#
template("asr_sdk_sources") {
  if (defined(invoker.asr_project_dir)) {
    asr_project_dir = invoker.asr_project_dir
  }

  # While most asr sdk includes come from the asr_sdk_config config (in
  # BUILD.gn), this template gets instantiated by each project each of which
  # provides a few extra includes/defines. Handle those here.
  config("project_configs") {
    include_dirs = []
    if (defined(invoker.include_dirs)) {
      include_dirs += invoker.include_dirs
    }
    include_dirs += [ "${asr_project_dir}/include" ]

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

  sdk_target_name = target_name

  # Add sources here
  source_set(sdk_target_name) {
    sources = []
    if (defined(invoker.sources)) {
      sources += invoker.sources
    }

    _third_party_src = [
      #at
      "at_cmd/atcmd_comm.c",
      "at_cmd/atcmd_user.c",
      "at_cmd/atcmd_matter.c",

      #common
      "common/alto/src/alto_common.c",
      "common/alto/src/hbird_common.c",
      "common/alto/src/system_hbird.c",
      "common/alto/src/GCC/startup_hbird.S",
      "common/alto/src/GCC/intexc_hbird.S",

      #rtos
      "freertos/Source/croutine.c",
      "freertos/Source/event_groups.c",
      "freertos/Source/list.c",
      "freertos/Source/portable/GCC/port.c",
      "freertos/Source/portable/GCC/portasm.S",
      "freertos/Source/portable/MemMang/heap_5.c",
      "freertos/Source/queue.c",
      "freertos/Source/stream_buffer.c",
      "freertos/Source/tasks.c",
      "freertos/Source/timers.c",
      "legartos/lega_rtos.c",

      #peripheral
      "peripheral/asr/src/alto/asr_alto_apll_rf.c",
      "peripheral/asr/src/alto/asr_alto_board.c",
      "peripheral/asr/src/alto/asr_alto_efuse.c",
      "peripheral/asr/src/alto/asr_alto_pinmux.c",
      "peripheral/asr/src/alto/asr_alto_port.c",
      "peripheral/asr/src/alto/asr_alto_boot.c",
      "peripheral/asr/src/alto/asr_alto_ram_layout.c",
      "peripheral/asr/src/asr_dma.c",
      "peripheral/asr/src/asr_efuse.c",
      "peripheral/asr/src/asr_flash.c",
      "peripheral/asr/src/asr_flash_alg.c",
      "peripheral/asr/src/asr_i2c.c",
      "peripheral/asr/src/asr_gpio.c",
      "peripheral/asr/src/asr_pwm.c",
      "peripheral/asr/src/asr_pinmux.c",
      "peripheral/asr/src/asr_adc.c",
      "peripheral/asr/src/asr_psram.c",
      "peripheral/asr/src/asr_rf_spi.c",
      "peripheral/asr/src/asr_rtc.c",
      "peripheral/asr/src/asr_timer.c",
      "peripheral/asr/src/asr_uart.c",
      "peripheral/asr/src/asr_wdg.c",

      #platform
      "platform/alto/system/prinfs/printf-stdarg.c",
      "platform/alto/system/prinfs/printf_uart.c",
      "platform/alto/system/prinfs/sysCalls.c",
      "platform/alto/system/soc/soc_init.c",
      "platform/alto/system/soc/system_cm4.c",
      "platform/alto/system/soc/systick_delay.c",

      #elog
      "common/alto/easylogger/elog_async.c",
      "common/alto/easylogger/elog_buf.c",
      "common/alto/easylogger/elog_module.c",
      "common/alto/easylogger/elog_port.c",
      "common/alto/easylogger/elog_utils.c",
      "common/alto/easylogger/elog.c",

      #ble
      "projects/alto_demo/ble_demo/duet_hl_matter/app.c",
      "projects/alto_demo/ble_demo/duet_hl_matter/user_platform.c",

      #matter
      "matter/asr_factory_config.c",

      #lwip
      "lwip/lwip_2.1.2/netif/ethernet.c",
      "lwip/lwip_2.1.2/port/sys_arch.c",
      "lwip/lwip_2.1.2/api/api_lib.c",
      "lwip/lwip_2.1.2/api/api_msg.c",
      "lwip/lwip_2.1.2/api/err.c",
      "lwip/lwip_2.1.2/api/if_api.c",
      "lwip/lwip_2.1.2/api/netbuf.c",
      "lwip/lwip_2.1.2/api/netdb.c",
      "lwip/lwip_2.1.2/api/netifapi.c",
      "lwip/lwip_2.1.2/api/sockets.c",
      "lwip/lwip_2.1.2/api/tcpip.c",
      "lwip/lwip_2.1.2/core/altcp.c",
      "lwip/lwip_2.1.2/core/altcp_alloc.c",
      "lwip/lwip_2.1.2/core/altcp_tcp.c",
      "lwip/lwip_2.1.2/core/def.c",
      "lwip/lwip_2.1.2/core/dns.c",
      "lwip/lwip_2.1.2/core/inet_chksum.c",
      "lwip/lwip_2.1.2/core/init.c",
      "lwip/lwip_2.1.2/core/ip.c",
      "lwip/lwip_2.1.2/core/ipv4/autoip.c",
      "lwip/lwip_2.1.2/core/ipv4/dhcp.c",
      "lwip/lwip_2.1.2/core/ipv4/etharp.c",
      "lwip/lwip_2.1.2/core/ipv4/icmp.c",
      "lwip/lwip_2.1.2/core/ipv4/igmp.c",
      "lwip/lwip_2.1.2/core/ipv4/ip4.c",
      "lwip/lwip_2.1.2/core/ipv4/ip4_addr.c",
      "lwip/lwip_2.1.2/core/ipv4/ip4_frag.c",
      "lwip/lwip_2.1.2/core/ipv6/dhcp6.c",
      "lwip/lwip_2.1.2/core/ipv6/ethip6.c",
      "lwip/lwip_2.1.2/core/ipv6/icmp6.c",
      "lwip/lwip_2.1.2/core/ipv6/inet6.c",
      "lwip/lwip_2.1.2/core/ipv6/ip6.c",
      "lwip/lwip_2.1.2/core/ipv6/ip6_addr.c",
      "lwip/lwip_2.1.2/core/ipv6/ip6_frag.c",
      "lwip/lwip_2.1.2/core/ipv6/mld6.c",
      "lwip/lwip_2.1.2/core/ipv6/nd6.c",
      "lwip/lwip_2.1.2/core/lwip_hooks.c",
      "lwip/lwip_2.1.2/core/mem.c",
      "lwip/lwip_2.1.2/core/memp.c",
      "lwip/lwip_2.1.2/core/netif.c",
      "lwip/lwip_2.1.2/core/pbuf.c",
      "lwip/lwip_2.1.2/core/raw.c",
      "lwip/lwip_2.1.2/core/stats.c",
      "lwip/lwip_2.1.2/core/sys.c",
      "lwip/lwip_2.1.2/core/tcp.c",
      "lwip/lwip_2.1.2/core/tcp_in.c",
      "lwip/lwip_2.1.2/core/tcp_out.c",
      "lwip/lwip_2.1.2/core/timeouts.c",
      "lwip/lwip_2.1.2/core/udp.c",

      #mbedtls
      "lwip/mbedtls-mbedtls-2.18/library/aes.c",
      "lwip/mbedtls-mbedtls-2.18/library/aesni.c",
      "lwip/mbedtls-mbedtls-2.18/library/arc4.c",
      "lwip/mbedtls-mbedtls-2.18/library/aria.c",
      "lwip/mbedtls-mbedtls-2.18/library/asn1parse.c",
      "lwip/mbedtls-mbedtls-2.18/library/asn1write.c",
      "lwip/mbedtls-mbedtls-2.18/library/base64.c",
      "lwip/mbedtls-mbedtls-2.18/library/bignum.c",
      "lwip/mbedtls-mbedtls-2.18/library/blowfish.c",
      "lwip/mbedtls-mbedtls-2.18/library/camellia.c",
      "lwip/mbedtls-mbedtls-2.18/library/ccm.c",
      "lwip/mbedtls-mbedtls-2.18/library/certs.c",
      "lwip/mbedtls-mbedtls-2.18/library/chacha20.c",
      "lwip/mbedtls-mbedtls-2.18/library/chachapoly.c",
      "lwip/mbedtls-mbedtls-2.18/library/cipher.c",
      "lwip/mbedtls-mbedtls-2.18/library/cipher_wrap.c",
      "lwip/mbedtls-mbedtls-2.18/library/cmac.c",
      "lwip/mbedtls-mbedtls-2.18/library/ctr_drbg.c",
      "lwip/mbedtls-mbedtls-2.18/library/debug.c",
      "lwip/mbedtls-mbedtls-2.18/library/des.c",
      "lwip/mbedtls-mbedtls-2.18/library/dhm.c",
      "lwip/mbedtls-mbedtls-2.18/library/ecdh.c",
      "lwip/mbedtls-mbedtls-2.18/library/ecdsa.c",
      "lwip/mbedtls-mbedtls-2.18/library/ecjpake.c",
      "lwip/mbedtls-mbedtls-2.18/library/ecp.c",
      "lwip/mbedtls-mbedtls-2.18/library/ecp_curves.c",
      "lwip/mbedtls-mbedtls-2.18/library/entropy.c",
      "lwip/mbedtls-mbedtls-2.18/library/entropy_poll.c",
      "lwip/mbedtls-mbedtls-2.18/library/error.c",
      "lwip/mbedtls-mbedtls-2.18/library/gcm.c",
      "lwip/mbedtls-mbedtls-2.18/library/havege.c",
      "lwip/mbedtls-mbedtls-2.18/library/hkdf.c",
      "lwip/mbedtls-mbedtls-2.18/library/hmac_drbg.c",
      "lwip/mbedtls-mbedtls-2.18/library/md.c",
      "lwip/mbedtls-mbedtls-2.18/library/md2.c",
      "lwip/mbedtls-mbedtls-2.18/library/md4.c",
      "lwip/mbedtls-mbedtls-2.18/library/md5.c",
      "lwip/mbedtls-mbedtls-2.18/library/md_wrap.c",
      "lwip/mbedtls-mbedtls-2.18/library/memory_buffer_alloc.c",
      "lwip/mbedtls-mbedtls-2.18/library/nist_kw.c",
      "lwip/mbedtls-mbedtls-2.18/library/oid.c",
      "lwip/mbedtls-mbedtls-2.18/library/padlock.c",
      "lwip/mbedtls-mbedtls-2.18/library/pem.c",
      "lwip/mbedtls-mbedtls-2.18/library/pk.c",
      "lwip/mbedtls-mbedtls-2.18/library/pk_wrap.c",
      "lwip/mbedtls-mbedtls-2.18/library/pkcs11.c",
      "lwip/mbedtls-mbedtls-2.18/library/pkcs12.c",
      "lwip/mbedtls-mbedtls-2.18/library/pkcs5.c",
      "lwip/mbedtls-mbedtls-2.18/library/pkparse.c",
      "lwip/mbedtls-mbedtls-2.18/library/pkwrite.c",
      "lwip/mbedtls-mbedtls-2.18/library/platform.c",
      "lwip/mbedtls-mbedtls-2.18/library/platform_util.c",
      "lwip/mbedtls-mbedtls-2.18/library/poly1305.c",
      "lwip/mbedtls-mbedtls-2.18/library/ripemd160.c",
      "lwip/mbedtls-mbedtls-2.18/library/rsa.c",
      "lwip/mbedtls-mbedtls-2.18/library/rsa_internal.c",
      "lwip/mbedtls-mbedtls-2.18/library/sha1.c",
      "lwip/mbedtls-mbedtls-2.18/library/sha256.c",
      "lwip/mbedtls-mbedtls-2.18/library/sha512.c",
      "lwip/mbedtls-mbedtls-2.18/library/ssl_cache.c",
      "lwip/mbedtls-mbedtls-2.18/library/ssl_ciphersuites.c",
      "lwip/mbedtls-mbedtls-2.18/library/ssl_cli.c",
      "lwip/mbedtls-mbedtls-2.18/library/ssl_cookie.c",
      "lwip/mbedtls-mbedtls-2.18/library/ssl_srv.c",
      "lwip/mbedtls-mbedtls-2.18/library/ssl_ticket.c",
      "lwip/mbedtls-mbedtls-2.18/library/ssl_tls.c",
      "lwip/mbedtls-mbedtls-2.18/library/threading.c",
      "lwip/mbedtls-mbedtls-2.18/library/timing.c",
      "lwip/mbedtls-mbedtls-2.18/library/version.c",
      "lwip/mbedtls-mbedtls-2.18/library/version_features.c",
      "lwip/mbedtls-mbedtls-2.18/library/x509.c",
      "lwip/mbedtls-mbedtls-2.18/library/x509_create.c",
      "lwip/mbedtls-mbedtls-2.18/library/x509_crl.c",
      "lwip/mbedtls-mbedtls-2.18/library/x509_crt.c",
      "lwip/mbedtls-mbedtls-2.18/library/x509_csr.c",
      "lwip/mbedtls-mbedtls-2.18/library/x509write_crt.c",
      "lwip/mbedtls-mbedtls-2.18/library/x509write_csr.c",
      "lwip/mbedtls-mbedtls-2.18/library/xtea.c",
      "lwip/mbedtls-mbedtls-2.18/asr_mbedtls/alt/entropy_hardware_alt.c",
      "lwip/mbedtls-mbedtls-2.18/asr_mbedtls/alt/aes_alt.c",
      "lwip/mbedtls-mbedtls-2.18/asr_mbedtls/alt/sha1_alt.c",
      "lwip/mbedtls-mbedtls-2.18/asr_mbedtls/alt/sha256_alt.c",
    ]

    foreach(src, _third_party_src) {
      sources += [ rebase_path(src,
                               "${asr_project_dir}",
                               "${asr_sdk_build_root}/asr_sdk/") ]
    }

    public_deps = [ "${chip_root}/src/lwip:lwip" ]

    public_configs = [ ":project_configs" ]
    if (defined(invoker.public_configs)) {
      public_configs += invoker.public_configs
    }
  }
}
