project(lb_mqtt_test C)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=deprecated-declarations -Wno-deprecated-declarations")

# lb_mqtt 客户端库 + 本地 lbMqttTest IDF 代码生成产物
aux_source_directory(${CMAKE_SOURCE_DIR}/src/lib SRC_TEST_LIB)
aux_source_directory(test_interface/client SRC_TEST_IF_CLIENT)
aux_source_directory(test_interface/server SRC_TEST_IF_SERVER)
aux_source_directory(test_interface/public SRC_TEST_IF_PUBLIC)
list(SORT SRC_TEST_LIB)
list(SORT SRC_TEST_IF_CLIENT)
list(SORT SRC_TEST_IF_SERVER)
list(SORT SRC_TEST_IF_PUBLIC)

add_executable(${PROJECT_NAME}
    test_service.c
    ${SRC_TEST_LIB}
    ${SRC_TEST_IF_CLIENT}
    ${SRC_TEST_IF_SERVER}
    ${SRC_TEST_IF_PUBLIC}
)

pkg_check_modules(LB_CORE REQUIRED lb_core)
pkg_check_modules(LB_BASE REQUIRED lb_base)
pkg_check_modules(GIO REQUIRED gio-2.0)
pkg_check_modules(GLIB2 REQUIRED glib-2.0)
pkg_check_modules(MOSQUITTO REQUIRED mosquitto)

# yyjson 通过 conan find_package 引入，与 mqtt_bridge 插件一致
find_package(yyjson REQUIRED)

target_include_directories(${PROJECT_NAME} PUBLIC
    ${CMAKE_SOURCE_DIR}/inc
    test_interface
    test_interface/client
    test_interface/server
    test_interface/public
    ${GLIB2_INCLUDE_DIRS}
    ${LB_BASE_INCLUDE_DIRS}
    ${LB_CORE_INCLUDE_DIRS}
    ${GIO_INCLUDE_DIRS}
    ${MOSQUITTO_INCLUDE_DIRS}
)
target_link_directories(${PROJECT_NAME} PUBLIC
    ${GLIB2_LIBRARY_DIRS}
    ${LB_CORE_LIBRARY_DIRS}
    ${LB_BASE_LIBRARY_DIRS}
    ${GIO_LIBRARY_DIRS}
    ${MOSQUITTO_LIBRARY_DIRS}
    $ENV{HOME}/.local/lib64
)
target_link_libraries(${PROJECT_NAME} PUBLIC
    ${GLIB2_LIBRARIES}
    ${LB_CORE_LIBRARIES}
    ${LB_BASE_LIBRARIES}
    ${GIO_LIBRARIES}
    yyjson::yyjson
    ${MOSQUITTO_LIBRARIES}
)
install(TARGETS ${PROJECT_NAME} DESTINATION opt/litebmc/apps/lb_mqtt)
file(GLOB MQTT_TEST_XML test_interface/server/com.litebmc.MqttTest.*.xml)
install(FILES ${MQTT_TEST_XML} DESTINATION usr/share/dbus-1/interfaces)
