nymea-app/libnymea-app/CMakeLists.txt

117 lines
3.9 KiB
CMake

set(LIBNYMEA_APP_SOURCES)
file(GLOB_RECURSE LIBNYMEA_APP_SOURCES CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
)
file(GLOB_RECURSE LIBNYMEA_APP_HEADERS CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/*.h
)
set(NYMEA_REMOTEPROXYCLIENT_MODULE
${CMAKE_SOURCE_DIR}/nymea-remoteproxy/cmake/nymea-remoteproxyclient-sources.cmake
)
set(REMOTE_PROXYCLIENT_SOURCES)
set(REMOTE_PROXYCLIENT_HEADERS)
set(REMOTE_PROXYCLIENT_INCLUDE_DIRS)
if(EXISTS ${NYMEA_REMOTEPROXYCLIENT_MODULE})
include(${NYMEA_REMOTEPROXYCLIENT_MODULE})
if(COMMAND nymea_remoteproxyclient_sources)
nymea_remoteproxyclient_sources(
REMOTE_PROXYCLIENT_SOURCES
REMOTE_PROXYCLIENT_HEADERS
REMOTE_PROXYCLIENT_INCLUDE_DIRS
)
endif()
if(DEFINED NYMEA_REMOTEPROXYCLIENT_SOURCES)
list(APPEND REMOTE_PROXYCLIENT_SOURCES ${NYMEA_REMOTEPROXYCLIENT_SOURCES})
endif()
if(DEFINED NYMEA_REMOTEPROXYCLIENT_HEADERS)
list(APPEND REMOTE_PROXYCLIENT_HEADERS ${NYMEA_REMOTEPROXYCLIENT_HEADERS})
endif()
if(DEFINED NYMEA_REMOTEPROXYCLIENT_INCLUDE_DIRS)
list(APPEND REMOTE_PROXYCLIENT_INCLUDE_DIRS ${NYMEA_REMOTEPROXYCLIENT_INCLUDE_DIRS})
endif()
if(NOT REMOTE_PROXYCLIENT_SOURCES AND NOT REMOTE_PROXYCLIENT_HEADERS)
message(FATAL_ERROR
"nymea-remoteproxyclient module did not populate its source lists. "
"Please ensure nymea-remoteproxy is checked out at the required revision."
)
endif()
else()
message(FATAL_ERROR
"nymea-remoteproxyclient CMake module not found. Did you initialize the nymea-remoteproxy submodule?"
)
endif()
if(NOT REMOTE_PROXYCLIENT_INCLUDE_DIRS)
set(_nymea_remoteproxyclient_root
${CMAKE_SOURCE_DIR}/nymea-remoteproxy/libnymea-remoteproxyclient
)
if(EXISTS ${_nymea_remoteproxyclient_root})
list(APPEND REMOTE_PROXYCLIENT_INCLUDE_DIRS ${_nymea_remoteproxyclient_root})
endif()
unset(_nymea_remoteproxyclient_root)
endif()
if(NOT REMOTE_PROXYCLIENT_INCLUDE_DIRS)
message(FATAL_ERROR
"nymea-remoteproxyclient include directories were not provided by the module. "
"Please ensure the nymea-remoteproxy submodule is checked out at the required revision."
)
endif()
set(NYMEA_APP_CORE_INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_BINARY_DIR}
)
list(APPEND NYMEA_APP_CORE_INCLUDE_DIRS ${REMOTE_PROXYCLIENT_INCLUDE_DIRS})
if(EXISTS ${CMAKE_SOURCE_DIR}/QtZeroConf)
list(APPEND NYMEA_APP_CORE_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/QtZeroConf)
endif()
add_library(nymea-app-core STATIC
${LIBNYMEA_APP_SOURCES}
${LIBNYMEA_APP_HEADERS}
${REMOTE_PROXYCLIENT_SOURCES}
${REMOTE_PROXYCLIENT_HEADERS}
)
set_target_properties(nymea-app-core PROPERTIES OUTPUT_NAME "nymea-app")
list(REMOVE_DUPLICATES NYMEA_APP_CORE_INCLUDE_DIRS)
target_include_directories(nymea-app-core PUBLIC ${NYMEA_APP_CORE_INCLUDE_DIRS})
target_link_libraries(nymea-app-core
PUBLIC
Qt6::Core
Qt6::Network
Qt6::WebSockets
Qt6::Bluetooth
Qt6::Charts
Qt6::Quick
Qt6::Qml
)
if(TARGET OpenSSL::SSL AND TARGET OpenSSL::Crypto)
target_link_libraries(nymea-app-core PUBLIC OpenSSL::SSL OpenSSL::Crypto)
else()
message(WARNING "OpenSSL development libraries not found; continuing without explicit OpenSSL linkage.")
endif()
if(NYMEA_ENABLE_ZEROCONF)
target_compile_definitions(nymea-app-core PUBLIC WITH_ZEROCONF QZEROCONF_STATIC)
find_library(QTZEROCONF_LIBRARY NAMES QtZeroConf HINTS ${CMAKE_SOURCE_DIR}/QtZeroConf)
if(NOT QTZEROCONF_LIBRARY AND TARGET Qt6::QtZeroConf)
target_link_libraries(nymea-app-core PUBLIC Qt6::QtZeroConf)
elseif(QTZEROCONF_LIBRARY)
target_link_libraries(nymea-app-core PUBLIC ${QTZEROCONF_LIBRARY})
else()
message(FATAL_ERROR "ZeroConf support requested but QtZeroConf library was not found")
endif()
endif()