summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 10f41d86a2f71419e08e13a500ebb3454c9c3b0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
cmake_minimum_required(VERSION 3.14)

project(KzXdg VERSION 1.0.0 LANGUAGES CXX)

include(GNUInstallDirs)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if(NOT DEFINED QML_MODULE_INSTALL_PATH)
    if(DEFINED OE_QMAKE_PATH_QML)
        set(QML_MODULE_INSTALL_PATH ${OE_QMAKE_PATH_QML} )
    else()
        set(QML_MODULE_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/qt6/qml )
    endif()
endif()

find_package(Qt6 COMPONENTS Core Quick Qml DBus REQUIRED)

set(PLUGIN_SOURCES
    src/kzxdg_plugin.h src/kzxdg_plugin.cpp
    qml/qmldir
)

include_directories(src/lib)
set(LIBRARY_SOURCES
    src/lib/debug.cpp
    src/lib/xdgbasedir.cpp
    src/lib/xdgentry.cpp
    src/lib/xdgentries.cpp
    src/lib/xdgdesktopentries.cpp
    src/lib/xdgdesktopfilter.cpp
    src/lib/xdgautostart.cpp
    src/lib/xdgnotificationserver.cpp
    src/lib/xdgnotificationmessage.cpp
    src/lib/xdgnotificationmanager.cpp
    src/lib/xdgnotificationactions.cpp
    src/lib/xdgnotifier.cpp
    src/lib/xdgstatusnotifieritem.cpp
    src/lib/xdgstatusnotifierhost.cpp
    src/lib/xdgstatusnotifierwatcher.cpp
    cmake/CPack.cmake
)

set(LIBRARY_HEADERS_PRIVATE
    src/lib/debug.h
)

set(LIBRARY_HEADERS
    src/lib/xdgbasedir.h
    src/lib/xdgentry.h
    src/lib/xdgentries.h
    src/lib/xdgdesktopentries.h
    src/lib/xdgdesktopfilter.h
    src/lib/xdgautostart.h
    src/lib/xdgnotificationserver.h
    src/lib/xdgnotificationmessage.h
    src/lib/xdgnotificationmanager.h
    src/lib/xdgnotificationactions.h
    src/lib/xdgnotifier.h
    src/lib/xdgstatusnotifieritem.h
    src/lib/xdgstatusnotifierhost.h
    src/lib/xdgstatusnotifierwatcher.h
)


list(APPEND             DBUS_IFACE_SRCS api/org.freedesktop.Notifications.xml)
qt_add_dbus_adaptor(    DBUS_IFACE_SRCS api/org.freedesktop.Notifications.xml xdgnotificationserver.h XdgNotificationServer)
qt_add_dbus_interface(  DBUS_IFACE_SRCS api/org.freedesktop.Notifications.xml NotificationsIface)

list(APPEND             DBUS_IFACE_SRCS api/org.freedesktop.StatusNotifierItem.xml)
qt_add_dbus_adaptor(    DBUS_IFACE_SRCS api/org.freedesktop.StatusNotifierItem.xml xdgstatusnotifieritem.h KaZoe::StatusNotifierItem)
qt_add_dbus_interface(  DBUS_IFACE_SRCS api/org.freedesktop.StatusNotifierItem.xml XdgStatusNotifierItemIface)

list(APPEND             DBUS_IFACE_SRCS api/org.freedesktop.StatusNotifierWatcher.xml)
qt_add_dbus_adaptor(    DBUS_IFACE_SRCS api/org.freedesktop.StatusNotifierWatcher.xml xdgstatusnotifierwatcher.h KaZoe::StatusNotifierWatcher)
qt_add_dbus_interface(  DBUS_IFACE_SRCS api/org.freedesktop.StatusNotifierWatcher.xml XdgStatusNotifierWatcherIface)

add_library(KzXdgPlugin  SHARED ${PLUGIN_SOURCES})
add_library(KzXdg        SHARED ${LIBRARY_SOURCES} ${LIBRARY_HEADERS} ${LIBRARY_HEADERS_PRIVATE} ${DBUS_IFACE_SRCS} cmake/Config.cmake.in)
set_target_properties(KzXdg PROPERTIES PUBLIC_HEADER "${LIBRARY_HEADERS}")
set_target_properties(KzXdg PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} SOVERSION 1)

target_compile_definitions(KzXdgPlugin
    PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>
)

target_link_libraries(KzXdgPlugin
    PRIVATE
        Qt6::Qml
        KzXdg
)

target_link_libraries(KzXdg
    PRIVATE
        Qt6::Core
        Qt6::Quick
        Qt6::DBus
)

add_executable(test_xdg src/test/test_xdg.cpp)
target_link_libraries(test_xdg PRIVATE KzXdg Qt6::Core)

install(TARGETS KzXdgPlugin DESTINATION ${QML_MODULE_INSTALL_PATH}/org/kazoe/xdg)
install(FILES qml/qmldir DESTINATION ${QML_MODULE_INSTALL_PATH}/org/kazoe/xdg)
install(TARGETS KzXdg PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/KaZoe/Xdg/")
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/notificationsadaptor.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/KaZoe/Xdg" RENAME xdgnotificationsadaptor.h)

# CMake Module
include(CMakePackageConfigHelpers)
set(CMakeModuleName "KzXdg")
configure_package_config_file(
    cmake/Config.cmake.in
    ${CMAKE_CURRENT_BINARY_DIR}/${CMakeModuleName}Config.cmake
    INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMakeModuleName}
)
write_basic_package_version_file(
  ${CMAKE_CURRENT_BINARY_DIR}/${CMakeModuleName}ConfigVersion.cmake
  VERSION ${PROJECT_VERSION}
  COMPATIBILITY SameMajorVersion )
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMakeModuleName}Config.cmake
              ${CMAKE_CURRENT_BINARY_DIR}/${CMakeModuleName}ConfigVersion.cmake
        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMakeModuleName}
)

include(cmake/CPack.cmake)