aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 20579104d263ce2ec1b079274eacaa932f8d4b70 (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
cmake_minimum_required(VERSION 3.10)
project("wanda" LANGUAGES CXX)

set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD "17")

if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE "Release")
endif()

if(NOT CMAKE_EXPORT_COMPILE_COMMANDS)
  set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endif()

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules")

include("ConanDependencies")
include("SystemDependencies")

##### Wanda CORE #####

set(WANDA_CORE_SOURCES
  "src/command.cpp"
  "src/control_connection.cpp"
  "src/environment.cpp"
  "src/message.cpp"
  "src/xdg.cpp"
)

set(WANDA_CORE_HEADERS
  "src/command.hpp"
  "src/control_connection.hpp"
  "src/deferred_failure.hpp"
  "src/environment.hpp"
  "src/keyed.hpp"
  "src/message.hpp"
  "src/optional.hpp"
  "src/type_wrapper.hpp"
  "src/xdg.hpp"
)

set(WANDA_CORE_LIBRARIES
  "CONAN_PKG::asio"
  "CONAN_PKG::spdlog"
  "SYSTEM::C++FS"
  "Threads::Threads"
)

add_library("core" ${WANDA_CORE_SOURCES} ${WANDA_CORE_HEADERS})
target_link_libraries("core" ${WANDA_CORE_LIBRARIES})
set_target_properties("core" PROPERTIES PUBLIC_HEADER "${WANDA_CORE_HEADERS}")
install(TARGETS "core" ARCHIVE DESTINATION "lib" PUBLIC_HEADER DESTINATION "include")

##### Wanda Daemon #####

set(WANDA_DAEMON_SOURCES
  "src/control_interface.cpp"
  "src/filesystem.cpp"
  "src/setting.cpp"
  "src/wallpaper.cpp"
  "src/wandad.cpp"
)

set(WANDA_DAEMON_HEADERS
  "src/control_interface.hpp"
  "src/filesystem.hpp"
  "src/setting.hpp"
  "src/wallpaper.hpp"
)

set(WANDA_DAEMON_LIBRARIES
  "core"
  "CONAN_PKG::clara"
  "SYSTEM::GIO"
)

add_executable("wandad" ${WANDA_DAEMON_SOURCES} ${WANDA_DAEMON_HEADERS})
target_link_libraries("wandad" ${WANDA_DAEMON_LIBRARIES})
install(TARGETS "wandad" RUNTIME DESTINATION "bin")

##### Wanda Controller #####

set(WANDA_CONTROLLER_SOURCES
  "src/commander.cpp"
  "src/wandac.cpp"
)

set(WANDA_CONTROLLER_HEADERS
  "src/commander.hpp"
)

set(WANDA_CONTROLLER_LIBRARIES
  "CONAN_PKG::clara"
  "core"
)

add_executable("wandac" ${WANDA_CONTROLLER_SOURCES} ${WANDA_CONTROLLER_HEADERS})
target_link_libraries("wandac" ${WANDA_CONTROLLER_LIBRARIES})
install(TARGETS "wandac" RUNTIME DESTINATION "bin")