project(LomiriOnlineAccountsDaemon LANGUAGES CXX)

pkg_check_modules(ACCOUNTSQT accounts-qt${QT_VERSION} REQUIRED)
pkg_check_modules(SIGNONQT libsignon-qt${QT_VERSION} REQUIRED)

set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined")
set(CMAKE_CXX_VISIBILITY_PRESET hidden)

set(ACCOUNTD_LIB lomiri-online-accounts-daemon)

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_SOURCE_DIR}
    ${LomiriOnlineAccountsClient_SOURCE_DIR}/..
)
add_definitions(
    ${ACCOUNTSQT_CFLAGS}
    ${APPARMOR_CFLAGS}
    ${OACLIENT_CFLAGS}
    ${SIGNONQT_CFLAGS}
)

add_library(${ACCOUNTD_LIB} SHARED
    access_request.cpp
    async_operation.cpp
    authentication_request.cpp
    authenticator.cpp
    client_registry.cpp
    i18n.cpp
    manager.cpp
    manager_adaptor.cpp
    state_saver.cpp
)
set_target_properties(${ACCOUNTD_LIB} PROPERTIES
    VERSION 1.0.0
    SOVERSION 1
    LINK_FLAGS -Wl,--no-undefined
)
target_link_libraries(${ACCOUNTD_LIB}
    Qt${QT_VERSION}::DBus
    lomiri-online-accounts-client
    ${ACCOUNTSQT_LDFLAGS}
    ${APPARMOR_LDFLAGS}
    ${OACLIENT_LDFLAGS}
    ${SIGNONQT_LDFLAGS}
)
set_target_properties(${ACCOUNTD_LIB} PROPERTIES AUTOMOC TRUE)

# Install

install(TARGETS ${ACCOUNTD_LIB} LIBRARY
        DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

# Development files

configure_file(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)

install(FILES "com.lomiri.OnlineAccounts.Manager.xml"
        DESTINATION ${CMAKE_INSTALL_DATADIR}/dbus-1/interfaces
)

install(FILES
        Manager manager.h
        dbus_constants.h
        DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/${ACCOUNTD_LIB}/${PROJECT_NAME})
