deskflow/src/lib/deskflow/CMakeLists.txt

169 lines
3.7 KiB
CMake

# SPDX-FileCopyrightText: 2024 Chris Rizzitello <sithlord48@gmail.com>
# SPDX-FileCopyrightText: 2012 - 2025 Symless Ltd
# SPDX-FileCopyrightText: 2009 - 2012 Nick Bolton
# SPDX-License-Identifier: MIT
find_package(CLI11 QUIET)
if(CLI11_FOUND)
message(STATUS "CLI11 [System] Version: ${CLI11_VERSION}")
set(cli11_lib CLI11::CLI11)
else()
#Be sure to update the version and MD5 together
set(CLI11_VERSION 2.4.2)
set(CLI11_MD5 d7923d1ca06d03e2299e55cad532d126)
file(
DOWNLOAD "https://github.com/CLIUtils/CLI11/releases/download/v${CLI11_VERSION}/CLI11.hpp"
"${CMAKE_BINARY_DIR}/include/CLI/CLI.hpp"
EXPECTED_MD5 ${CLI11_MD5}
)
set(cli11_inc_dir "${CMAKE_BINARY_DIR}/include")
message(STATUS "CLI11 [Downloaded] Version: ${CLI11_VERSION}")
message(STATUS "CLI11 INC_DIR: ${cli11_inc_dir}")
endif()
find_package(tomlplusplus QUIET)
if(tomlplusplus_FOUND)
message(STATUS "tomlplusplus [System] Version: ${tomlplusplus_VERSION}")
set(tomlPP_lib tomlplusplus::tomlplusplus)
else()
# Be sure to update the version and MD5 together
# Save our copy with .h not .hpp for compatibliy with system version < 3.4
set(TOMLPP_VERSION 3.4.0)
set(TOMLPP_MD5 caefb3b60119731fb4b4d24b6339e7fb)
file(
DOWNLOAD "https://raw.githubusercontent.com/marzer/tomlplusplus/refs/tags/v${TOMLPP_VERSION}/toml.hpp"
"${CMAKE_BINARY_DIR}/include/toml++/toml.h"
SHOW_PROGRESS
EXPECTED_MD5 ${TOMLPP_MD5}
)
set(tomlPP_inc_dir "${CMAKE_BINARY_DIR}/include")
message(STATUS "tomlplusplus [Downloaded] Version: 3.4.0")
message(STATUS "tomlplusplus INC DIR: ${tomlPP_inc_dir}")
endif()
####################Start Making Library#########################
set(lib_name app)
# arch
if(WIN32)
set(PLATFORM_CODE
win32/AppUtilWindows.cpp
win32/AppUtilWindows.h
)
elseif(UNIX)
set(PLATFORM_CODE
unix/AppUtilUnix.cpp
unix/AppUtilUnix.h
unix/DeskflowXkbKeyboard.cpp
unix/DeskflowXkbKeyboard.h
unix/ISO639Table.h
unix/X11LayoutsParser.cpp
unix/X11LayoutsParser.h
)
endif()
add_library(${lib_name} STATIC ${PLATFORM_CODE}
App.cpp
App.h
AppUtil.cpp
AppUtil.h
ArgParser.cpp
ArgParser.h
ArgsBase.h
Chunk.cpp
Chunk.h
ClientApp.cpp
ClientApp.h
ClientArgs.cpp
ClientArgs.h
ClipboardTypes.h
Clipboard.cpp
Clipboard.h
ClipboardChunk.cpp
ClipboardChunk.h
Config.cpp
Config.h
DaemonApp.cpp
DaemonApp.h
DisplayInvalidException.h
IApp.h
IAppUtil.h
IClient.h
IClipboard.cpp
IClipboard.h
IKeyState.cpp
IKeyState.h
INode.h
IPlatformScreen.cpp
IPlatformScreen.h
IPrimaryScreen.cpp
IPrimaryScreen.h
IScreen.h
IScreenSaver.h
ISecondaryScreen.h
KeyTypes.cpp
KeyTypes.h
KeyMap.cpp
KeyMap.h
KeyState.cpp
KeyState.h
MouseTypes.h
OptionTypes.h
PacketStreamFilter.cpp
PacketStreamFilter.h
PlatformScreen.cpp
PlatformScreen.h
ProtocolTypes.cpp
ProtocolTypes.h
ProtocolUtil.cpp
ProtocolUtil.h
Screen.cpp
Screen.h
ServerApp.cpp
ServerApp.h
ServerArgs.cpp
ServerArgs.h
StreamChunker.cpp
StreamChunker.h
XDeskflow.cpp
XDeskflow.h
XScreen.cpp
XScreen.h
languages/LanguageManager.cpp
languages/LanguageManager.h
ipc/DaemonIpcServer.cpp
ipc/DaemonIpcServer.h
)
target_link_libraries(${lib_name} PUBLIC Qt6::Core Qt6::Network)
if(WIN32)
target_link_libraries(${lib_name} PRIVATE ${cli11_lib} ${tomlPP_lib})
endif()
target_include_directories(
${lib_name}
PRIVATE
${cli11_inc_dir}
${tomlPP_inc_dir}
)
if(UNIX)
target_link_libraries(
${lib_name}
PRIVATE
arch
client
net
base
platform
mt
server
${cli11_lib}
${tomlPP_lib}
)
if(NOT APPLE)
target_link_libraries(${lib_name} PRIVATE Qt6::Xml)
endif()
endif()