cmake_minimum_required(VERSION 3.0.0)
project(bmser_modbus_tcp_poll VERSION 0.1.0 LANGUAGES C)

include(CTest)
enable_testing()

# set(CMAKE_C_CLANG_TIDY clang-tidy)
# set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# set(CMAKE_C_CLANG_TIDY 
#   "cppcoreguidelines-pro-bounds-pointer-arithmetic"
# )

# set(CMAKE_BUILD_TYPE Debug)

aux_source_directory(./src MAIN_SRC)

include(./src/components/components.cmake)
include(./src/port/port.cmake)
find_path(LIBDBCONTROL_DIR bmser_db_control_db.h PATHS
        /usr/include/db_control/db_control)
message("LIBDBCONTROL_DIR" ${LIBDBCONTROL_DIR})

find_library(db_ctrl NAMES db_control PATHS ${CMAKE_PREFIX_PATH}/usr/lib)
find_library(bmser_utils NAMES bmser_utils PATHS ${CMAKE_PREFIX_PATH}/usr/lib)
find_library(mosquitto NAMES mosquitto)
find_library(modbus NAMES modbus)

set(LIBDBCONTROL_INC
    ${LIBDBCONTROL_DIR}/../can
    ${LIBDBCONTROL_DIR}/../cjson
    ${LIBDBCONTROL_DIR}/../db_control
    ${LIBDBCONTROL_DIR}/../dev
    ${LIBDBCONTROL_DIR}/../mqtt
    ${LIBDBCONTROL_DIR}/../utility
    ${LIBDBCONTROL_DIR}/../utils
    ${LIBDBCONTROL_DIR}/../sqlite_api
    ${CMAKE_SOURCE_DIR}/app/inc/app_sdk_lib/utils/inc
)

add_executable(bmser_modbus_tcp_poll
                ${MAIN_SRC}
                ${COMPONENTS_SRC_PATH}
                ${PORT_SRC_PATH}
)

target_include_directories(bmser_modbus_tcp_poll
                            PRIVATE
                            ./include
                            ${COMPONENTS_INC_PATH}
                            ${PORT_INC_PATH}
                            ${LIBDBCONTROL_INC}
)

target_link_libraries(bmser_modbus_tcp_poll
                        PRIVATE
                        ${db_ctrl} ${bmser_utils} ${mosquitto} ${modbus}
)

if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  target_compile_options(bmser_modbus_tcp_poll PRIVATE -g -O0 -Wall -Werror)
else()
  target_compile_options(bmser_modbus_tcp_poll PRIVATE -g0 -Os -Wall -Werror)
endif()

add_executable(mqtt_test
                ./test/mqtt_test.c
                ${COMPONENTS_INC_PATH}
                ${PORT_SRC_PATH}
)

target_include_directories(mqtt_test
                            PRIVATE
                            ./include
                            ${COMPONENTS_INC_PATH}
                            ${PORT_INC_PATH}
                            ${LIBDBCONTROL_INC}
)

target_link_libraries(mqtt_test
                        PRIVATE
                        ${db_ctrl} ${bmser_utils} ${mosquitto} ${modbus}
)

target_compile_options(mqtt_test PRIVATE -g -O0)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

install(TARGETS bmser_modbus_tcp_poll DESTINATION bin)
