# SPDX-License-Identifier: MIT

cmake_minimum_required(VERSION 3.13.1)

# Extract module path and names
string(REGEX REPLACE
  "/zephyr/tests/[a-zA-Z_/-]*$" ""
  BACNET_BASE
  ${CMAKE_CURRENT_SOURCE_DIR})
string(REGEX REPLACE
  "/zephyr/tests/" "/src/"
  BACNET_SRC_PATH
  ${CMAKE_CURRENT_SOURCE_DIR})
string(REGEX REPLACE
  "/zephyr/tests/" "/test/"
  BACNET_TEST_PATH
  ${CMAKE_CURRENT_SOURCE_DIR})
get_filename_component(BACNET_NAME ${BACNET_BASE} NAME)

# Update include path for this module
list(APPEND BACNET_INCLUDE ${BACNET_BASE}/src)

get_filename_component(BACNET_DATALINK_SRC ${BACNET_SRC_PATH} PATH)
get_filename_component(BACNET_SRC ${BACNET_DATALINK_SRC} PATH)

if(BOARD STREQUAL unit_testing)
  file(RELATIVE_PATH BACNET_INCLUDE $ENV{ZEPHYR_BASE} ${BACNET_BASE}/src)
  list(APPEND INCLUDE
    ${BACNET_INCLUDE}
    ${BACNET_INCLUDE}/../test/bacnet/datalink/mock/src
    )

  file(GLOB SRC_TEST ${BACNET_TEST_PATH}/src/*.c)
  list(APPEND SOURCES ${SRC_TEST} )

  list(APPEND SOURCES
    ${BACNET_DATALINK_SRC}/datalink.c
    ${BACNET_SRC}/basic/sys/mstimer.c
    ${BACNET_SRC}/../../ports/rx62n/bacnet.c
    )

  add_definitions(-DBACDL_ALL=1)
  add_definitions(-DUNIT_TESTING=1)

  include($ENV{ZEPHYR_BASE}/subsys/testsuite/unittest.cmake)
  project(${BACNET_NAME})
else()
  include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
  project(${BACNET_NAME})

  target_include_directories(app PRIVATE
    ${BACNET_INCLUDE}
    ${BACNET_INCLUDE}/../test/bacnet/datalink/mock/src
    )
  file(GLOB SRC_TEST ${BACNET_TEST_PATH}/src/*.c)

  add_definitions(-DBACDL_ALL=1 -DBACNET_ETHERNET_NO_REMAP_DEFINES=1)

  target_sources(app PRIVATE
    ${BACNET_DATALINK_SRC}/datalink.c
    ${BACNET_SRC}/../../ports/rx62n/bacnet.c
    ${SRC_TEST}
    )
endif()
