deskflow/src/lib/platform/CMakeLists.txt
2026-06-18 22:06:37 +01:00

210 lines
6.1 KiB
CMake

# SPDX-FileCopyrightText: (C) 2024 Chris Rizzitello <sithlord48@gmail.com>
# SPDX-FileCopyrightText: (C) 2012 - 2024 Symless Ltd
# SPDX-FileCopyrightText: (C) 2009 - 2012 Nick Bolton
# SPDX-License-Identifier: MIT
if(UNIX AND NOT APPLE)
pkg_check_modules(LIBEI REQUIRED QUIET "libei-1.0 >= ${REQUIRED_LIBEI_VERSION}")
message(STATUS "libei version: ${LIBEI_VERSION}")
pkg_check_modules(LIBPORTAL REQUIRED QUIET "libportal >= ${REQUIRED_LIBPORTAL_VERSION}")
message(STATUS "libportal version: ${LIBPORTAL_VERSION}")
# Check if we have the restore ability in the IC portal
include(CMakePushCheckState)
include(CheckSymbolExists)
cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${LIBPORTAL_INCLUDE_DIRS};${GLIB2_INCLUDE_DIRS}")
set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};${LIBPORTAL_LINK_LIBRARIES};${GLIB2_LINK_LIBRARIES}")
check_symbol_exists(xdp_input_capture_session_get_restore_token "libportal/inputcapture.h" HAVE_IC_RESTORE)
check_symbol_exists(xdp_session_request_clipboard "libportal/portal-helpers.h;libportal/clipboard.h" HAVE_LP_CLIPBOARD)
cmake_pop_check_state()
endif()
if(WIN32)
set(PLATFORM_SOURCES
IMSWindowsClipboardFacade.h
MSWindowsClipboard.cpp
MSWindowsClipboard.h
MSWindowsClipboardAnyTextConverter.cpp
MSWindowsClipboardAnyTextConverter.h
MSWindowsClipboardBitmapConverter.cpp
MSWindowsClipboardBitmapConverter.h
MSWindowsClipboardFacade.cpp
MSWindowsClipboardFacade.h
MSWindowsClipboardHTMLConverter.cpp
MSWindowsClipboardHTMLConverter.h
MSWindowsClipboardUTF16Converter.cpp
MSWindowsClipboardUTF16Converter.h
MSWindowsDebugOutputter.cpp
MSWindowsDebugOutputter.h
MSWindowsDesks.cpp
MSWindowsDesks.h
MSWindowsEventQueueBuffer.cpp
MSWindowsEventQueueBuffer.h
MSWindowsHook.cpp
MSWindowsHook.h
MSWindowsKeyState.cpp
MSWindowsKeyState.h
MSWindowsPowerManager.cpp
MSWindowsPowerManager.h
MSWindowsProcess.cpp
MSWindowsProcess.h
MSWindowsScreen.cpp
MSWindowsScreen.h
MSWindowsScreenSaver.cpp
MSWindowsScreenSaver.h
MSWindowsSession.cpp
MSWindowsSession.h
MSWindowsWatchdog.cpp
MSWindowsWatchdog.h
)
elseif(APPLE)
set(PLATFORM_SOURCES
IOSXKeyResource.cpp
IOSXKeyResource.h
OSXAutoTypes.h
OSXClipboard.cpp
OSXClipboard.h
OSXClipboardAnyBitmapConverter.cpp
OSXClipboardAnyBitmapConverter.h
OSXClipboardAnyTextConverter.cpp
OSXClipboardAnyTextConverter.h
OSXClipboardBMPConverter.cpp
OSXClipboardBMPConverter.h
OSXClipboardHTMLConverter.cpp
OSXClipboardHTMLConverter.h
OSXClipboardTextConverter.cpp
OSXClipboardTextConverter.h
OSXClipboardUTF8Converter.cpp
OSXClipboardUTF8Converter.h
OSXClipboardUTF16Converter.cpp
OSXClipboardUTF16Converter.h
OSXCocoaApp.h
OSXCocoaApp.m
OSXEventQueueBuffer.cpp
OSXEventQueueBuffer.h
OSXKeyState.cpp
OSXKeyState.h
OSXMediaKeySupport.h
OSXMediaKeySupport.m
OSXPasteboardPeeker.h
OSXPasteboardPeeker.m
OSXPowerManager.cpp
OSXPowerManager.h
OSXScreen.h
OSXScreen.mm
OSXScreenSaver.cpp
OSXScreenSaver.h
OSXScreenSaverControl.h
OSXScreenSaverUtil.h
OSXScreenSaverUtil.m
OSXUchrKeyResource.cpp
OSXUchrKeyResource.h
)
elseif(UNIX)
set(PLATFORM_SOURCES
XDGPortalRegistry.h
XDGPowerManager.cpp
XDGPowerManager.h
XDGKeyUtil.h
XDGKeyUtil.cpp
)
if (BUILD_X11_SUPPORT)
configure_file(XWindowsConfig.h.in XWindowsConfig.h @ONLY)
list(APPEND PLATFORM_SOURCES
XWindowsClipboard.cpp
XWindowsClipboard.h
XWindowsClipboardAnyBitmapConverter.cpp
XWindowsClipboardAnyBitmapConverter.h
XWindowsClipboardBMPConverter.cpp
XWindowsClipboardBMPConverter.h
XWindowsClipboardHTMLConverter.cpp
XWindowsClipboardHTMLConverter.h
XWindowsClipboardTextConverter.cpp
XWindowsClipboardTextConverter.h
XWindowsClipboardUCS2Converter.cpp
XWindowsClipboardUCS2Converter.h
XWindowsClipboardUTF8Converter.cpp
XWindowsClipboardUTF8Converter.h
XWindowsEventQueueBuffer.cpp
XWindowsEventQueueBuffer.h
XWindowsKeyState.cpp
XWindowsKeyState.h
XWindowsScreen.cpp
XWindowsScreen.h
XWindowsScreenSaver.cpp
XWindowsScreenSaver.h
XWindowsUtil.cpp
XWindowsUtil.h
${CMAKE_CURRENT_BINARY_DIR}/XWindowsConfig.h
)
endif()
if(LIBEI_FOUND)
list(APPEND PLATFORM_SOURCES
EiClipboard.cpp
EiClipboard.h
EiEventQueueBuffer.cpp
EiEventQueueBuffer.h
EiKeyState.cpp
EiKeyState.h
EiScreen.cpp
EiScreen.h
)
# The Portal sources also require EI.
if(LIBPORTAL_FOUND)
list(APPEND PLATFORM_SOURCES
PortalInputCapture.cpp
PortalInputCapture.h
PortalRemoteDesktop.cpp
PortalRemoteDesktop.h
)
if(HAVE_LP_CLIPBOARD)
list(APPEND PLATFORM_SOURCES
PortalClipboard.cpp
PortalClipboard.h
)
endif()
endif()
endif()
endif()
# wayland.h is included to check for wayland support
add_library(platform STATIC ${PLATFORM_SOURCES})
target_link_libraries(platform client ${libs})
if(UNIX)
target_link_libraries(
platform
io
net
app
client
${libs})
if(APPLE)
find_library(COCOA_LIBRARY Cocoa)
target_link_libraries(platform ${COCOA_LIBRARY})
else()
if(${LIBXKBCOMMON_VERSION} VERSION_GREATER_EQUAL "1.10")
target_compile_definitions(platform PRIVATE HAVE_XKB_KEYMAP_MOD_GET_MASK=1)
endif()
target_compile_definitions(platform PUBLIC WINAPI_LIBEI WINAPI_LIBPORTAL)
if (HAVE_IC_RESTORE)
target_compile_definitions(platform PUBLIC HAVE_LIBPORTAL_INPUTCAPTURE_RESTORE)
endif()
if (HAVE_LP_CLIPBOARD)
target_compile_definitions(platform PUBLIC HAVE_LIBPORTAL_CLIPBOARD)
endif()
target_include_directories(platform PUBLIC ${LIBEI_INCLUDE_DIRS} ${LIBPORTAL_INCLUDE_DIRS})
target_link_libraries(
platform
Qt6::DBus
Qt6::Gui
${LIBXKBCOMMON_LINK_LIBRARIES}
${GLIB2_LINK_LIBRARIES} ${LIBM_LIBRARIES}
${LIBEI_LINK_LIBRARIES} ${LIBPORTAL_LINK_LIBRARIES})
endif()
endif()