cf12defd28
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
249 lines
6.7 KiB
CMake
249 lines
6.7 KiB
CMake
configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
|
|
|
add_library(KF6GuiAddons)
|
|
add_library(KF6::GuiAddons ALIAS KF6GuiAddons)
|
|
|
|
set_target_properties(KF6GuiAddons PROPERTIES
|
|
VERSION ${KGUIADDONS_VERSION}
|
|
SOVERSION ${KGUIADDONS_SOVERSION}
|
|
EXPORT_NAME GuiAddons
|
|
)
|
|
|
|
target_sources(KF6GuiAddons PRIVATE
|
|
colors/kcolorspaces.cpp
|
|
colors/kcolorutils.cpp
|
|
colors/kcolorcollection.cpp
|
|
colors/kcolormimedata.cpp
|
|
colors/kcolorschemewatcher.cpp
|
|
colors/kcolorschemewatcherbackend.cpp
|
|
colors/kcolorschemewatcher_qt.cpp
|
|
colors/kwindowinsetscontroller.cpp
|
|
text/kdatevalidator.cpp
|
|
text/kwordwrap.cpp
|
|
fonts/kfontutils.cpp
|
|
util/kiconutils.cpp
|
|
util/klocalimagecacheimpl.cpp
|
|
util/kmodifierkeyinfo.cpp
|
|
util/kmodifierkeyinfoprovider.cpp
|
|
util/kurlhandler_p.cpp
|
|
util/kcursorsaver.cpp
|
|
util/kcountryflagemojiiconengine.cpp
|
|
util/kjobwindows.cpp
|
|
recorder/keyboardgrabber.cpp
|
|
recorder/kkeysequencerecorder.cpp
|
|
systemclipboard/qtclipboard.cpp
|
|
systemclipboard/ksystemclipboard.cpp
|
|
|
|
colors/kcolorspaces_p.h
|
|
colors/kcolorutils.h
|
|
colors/kcolorcollection.h
|
|
colors/kcolormimedata.h
|
|
text/kdatevalidator.h
|
|
text/kwordwrap.h
|
|
fonts/kfontutils.h
|
|
util/kiconutils.h
|
|
util/klocalimagecacheimpl.h
|
|
util/kmodifierkeyinfo.h
|
|
util/kmodifierkeyinfoprovider_p.h
|
|
util/kurlhandler_p.h
|
|
util/kcursorsaver.h
|
|
util/kcountryflagemojiiconengine.h
|
|
util/kjobwindows.h
|
|
recorder/keyboardgrabber_p.h
|
|
recorder/kkeysequencerecorder.h
|
|
systemclipboard/qtclipboard_p.h
|
|
systemclipboard/ksystemclipboard.h
|
|
)
|
|
|
|
ecm_qt_declare_logging_category(KF6GuiAddons
|
|
HEADER kguiaddons_debug.h
|
|
IDENTIFIER KGUIADDONS_LOG
|
|
CATEGORY_NAME kf.guiaddons
|
|
DESCRIPTION "KGuiAddons"
|
|
EXPORT KGUIADDONS
|
|
)
|
|
|
|
if(WIN32)
|
|
target_sources(KF6GuiAddons PRIVATE colors/kcolorschemewatcher_win.cpp)
|
|
target_link_libraries(KF6GuiAddons PRIVATE advapi32)
|
|
endif()
|
|
|
|
if(APPLE)
|
|
find_library(APPKIT_LIBRARY AppKit)
|
|
target_sources(KF6GuiAddons PRIVATE colors/kcolorschemewatcher_mac.mm)
|
|
target_link_libraries(KF6GuiAddons PRIVATE ${APPKIT_LIBRARY})
|
|
endif()
|
|
|
|
if(WITH_DBUS)
|
|
target_sources(KF6GuiAddons PRIVATE colors/kcolorschemewatcher_xdg.cpp)
|
|
target_link_libraries(KF6GuiAddons PRIVATE Qt6::DBus)
|
|
endif()
|
|
|
|
if(WITH_WAYLAND)
|
|
if (Qt6_VERSION VERSION_GREATER_EQUAL "6.8.0")
|
|
set(private_code_option "PRIVATE_CODE")
|
|
endif()
|
|
qt_generate_wayland_protocol_client_sources(KF6GuiAddons
|
|
FILES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/recorder/keyboard-shortcuts-inhibit-unstable-v1.xml"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/systemclipboard/wlr-data-control-unstable-v1.xml"
|
|
"${PLASMA_WAYLAND_PROTOCOLS_DIR}/keystate.xml"
|
|
"${Wayland_DATADIR}/wayland.xml"
|
|
${private_code_option}
|
|
)
|
|
target_sources(KF6GuiAddons PRIVATE
|
|
recorder/waylandinhibition.cpp
|
|
systemclipboard/waylandclipboard.cpp
|
|
util/kmodifierkeyinfoprovider_wayland.cpp
|
|
recorder/waylandinhibition_p.h
|
|
systemclipboard/waylandclipboard_p.h
|
|
util/kmodifierkeyinfoprovider_wayland.h
|
|
)
|
|
target_compile_definitions(KF6GuiAddons PRIVATE WITH_WAYLAND)
|
|
target_link_libraries(KF6GuiAddons PRIVATE Qt6::GuiPrivate Qt6::WaylandClient Wayland::Client)
|
|
endif()
|
|
|
|
if(WITH_X11)
|
|
target_sources(KF6GuiAddons PRIVATE util/kmodifierkeyinfoprovider_xcb.cpp util/kmodifierkeyinfoprovider_xcb.h)
|
|
target_link_libraries(KF6GuiAddons PRIVATE X11::Xkb XCB::XCB)
|
|
endif()
|
|
|
|
if(ANDROID)
|
|
add_subdirectory(android)
|
|
endif()
|
|
|
|
ecm_generate_export_header(KF6GuiAddons
|
|
BASE_NAME KGuiAddons
|
|
GROUP_BASE_NAME KF
|
|
VERSION ${KF_VERSION}
|
|
USE_VERSION_HEADER
|
|
DEPRECATED_BASE_VERSION 0
|
|
DEPRECATION_VERSIONS 6.3
|
|
)
|
|
|
|
set(kguiaddons_INCLUDES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/colors
|
|
${CMAKE_CURRENT_SOURCE_DIR}/fonts
|
|
${CMAKE_CURRENT_SOURCE_DIR}/text
|
|
${CMAKE_CURRENT_SOURCE_DIR}/util
|
|
${CMAKE_CURRENT_SOURCE_DIR}/recorder
|
|
${CMAKE_CURRENT_SOURCE_DIR}/systemclipboard
|
|
)
|
|
target_include_directories(KF6GuiAddons PUBLIC "$<BUILD_INTERFACE:${kguiaddons_INCLUDES}>")
|
|
target_include_directories(KF6GuiAddons INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF}/KGuiAddons>" )
|
|
target_compile_definitions(KF6GuiAddons INTERFACE "$<INSTALL_INTERFACE:KGUIADDONS_LIB>")
|
|
target_link_libraries(KF6GuiAddons PUBLIC Qt6::Gui)
|
|
|
|
qt_extract_metatypes(KF6GuiAddons)
|
|
|
|
ecm_generate_headers(KGuiAddons_HEADERS
|
|
HEADER_NAMES
|
|
KColorUtils
|
|
KColorCollection
|
|
KColorMimeData
|
|
KColorSchemeWatcher
|
|
KWindowInsetsController
|
|
|
|
RELATIVE colors
|
|
REQUIRED_HEADERS KGuiAddons_HEADERS
|
|
)
|
|
ecm_generate_headers(KGuiAddons_HEADERS
|
|
HEADER_NAMES
|
|
KDateValidator
|
|
KWordWrap
|
|
|
|
RELATIVE text
|
|
REQUIRED_HEADERS KGuiAddons_HEADERS
|
|
)
|
|
ecm_generate_headers(KGuiAddons_HEADERS
|
|
HEADER_NAMES
|
|
KFontUtils
|
|
|
|
RELATIVE fonts
|
|
REQUIRED_HEADERS KGuiAddons_HEADERS
|
|
)
|
|
ecm_generate_headers(KGuiAddons_HEADERS
|
|
HEADER_NAMES
|
|
KIconUtils
|
|
KImageCache
|
|
KModifierKeyInfo
|
|
KCursorSaver
|
|
KCountryFlagEmojiIconEngine
|
|
KJobWindows
|
|
|
|
RELATIVE util
|
|
REQUIRED_HEADERS KGuiAddons_HEADERS
|
|
)
|
|
|
|
ecm_generate_headers(KGuiAddons_HEADERS
|
|
HEADER_NAMES
|
|
KKeySequenceRecorder
|
|
|
|
RELATIVE recorder
|
|
REQUIRED_HEADERS KGuiAddons_HEADERS
|
|
)
|
|
|
|
#add_subdirectory(systemclipboard)
|
|
|
|
ecm_generate_headers(KGuiAddons_HEADERS
|
|
HEADER_NAMES
|
|
KSystemClipboard
|
|
|
|
RELATIVE systemclipboard
|
|
REQUIRED_HEADERS KGuiAddons_HEADERS
|
|
)
|
|
|
|
install(TARGETS KF6GuiAddons EXPORT KF6GuiAddonsTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS})
|
|
install(FILES
|
|
${CMAKE_CURRENT_BINARY_DIR}/kguiaddons_export.h
|
|
util/kmodifierkeyinfoprovider_p.h
|
|
util/klocalimagecacheimpl.h # implementation detail, no forwarding header
|
|
${KGuiAddons_HEADERS}
|
|
DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KGuiAddons COMPONENT Devel
|
|
)
|
|
|
|
if(BUILD_QCH)
|
|
ecm_add_qch(
|
|
KF6GuiAddons_QCH
|
|
NAME KGuiAddons
|
|
BASE_NAME KF6GuiAddons
|
|
VERSION ${KF_VERSION}
|
|
ORG_DOMAIN org.kde
|
|
SOURCES # using only public headers, to cover only public API
|
|
${KGuiAddons_HEADERS}
|
|
MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md"
|
|
LINK_QCHS
|
|
Qt6Gui_QCH
|
|
INCLUDE_DIRS
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
${kguiaddons_INCLUDES}
|
|
BLANK_MACROS
|
|
KGUIADDONS_EXPORT
|
|
TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
|
|
QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
|
|
COMPONENT Devel
|
|
)
|
|
endif()
|
|
|
|
ecm_qt_install_logging_categories(
|
|
EXPORT KGUIADDONS
|
|
FILE kguiaddons.categories
|
|
DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}"
|
|
)
|
|
|
|
if(BUILD_TESTING)
|
|
add_executable(pasteclient systemclipboard/tests/paste.cpp)
|
|
|
|
target_link_libraries(pasteclient
|
|
KF6GuiAddons
|
|
)
|
|
endif()
|
|
|
|
if (NOT ANDROID AND BUILD_GEO_SCHEME_HANDLER)
|
|
add_subdirectory(geo-scheme-handler)
|
|
endif()
|
|
|
|
if (TARGET Qt6::Qml)
|
|
add_subdirectory(qml)
|
|
endif()
|