cmake_minimum_required(VERSION 3.0.0)
project(bmser_tcp 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/app MAIN_SRC)

include(./cmake/components.cmake)
include(./cmake/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(mosquitto NAMES mosquitto PATHS ${CMAKE_PREFIX_PATH}/usr/lib)
find_library(bmser_utils NAMES bmser_utils PATHS ${CMAKE_PREFIX_PATH}/usr/lib)

set(LIBDBCONTROL_INC
    ${LIBDBCONTROL_DIR}/../can
    ${LIBDBCONTROL_DIR}/../cjson
    ${LIBDBCONTROL_DIR}/../db_control
    ${LIBDBCONTROL_DIR}/../dev
    ${LIBDBCONTROL_DIR}/../modbus
    ${LIBDBCONTROL_DIR}/../mqtt
    ${LIBDBCONTROL_DIR}/../utility
    ${LIBDBCONTROL_DIR}/../utils
    ${LIBDBCONTROL_DIR}/../sqlite_api
)

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

target_include_directories(bmser_tcp
                            PRIVATE
                            ./src/app/
                            ${COMPONENTS_INC_PATH}
                            ${PORT_INC_PATH}
                            ${LIBDBCONTROL_INC}
)

target_link_libraries(bmser_tcp
                        PRIVATE
                        ${db_ctrl} ${mosquitto} ${bmser_utils}
)

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

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

install(TARGETS bmser_tcp DESTINATION bin)

