aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 6d8a8676240df391d072698bffd8cf32e769bbf0 (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
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")
include("CUTE")

##### 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/expected.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("wanda" ${WANDA_CORE_SOURCES} ${WANDA_CORE_HEADERS})
target_link_libraries("wanda" ${WANDA_CORE_LIBRARIES})
target_include_directories("wanda" INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>)
set_target_properties("wanda" PROPERTIES PUBLIC_HEADER "${WANDA_CORE_HEADERS}")
install(TARGETS "wanda" 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
  "wanda"
  "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
  "wanda"
  "CONAN_PKG::clara"
)

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

##### Wanda Core Tests #####
if(CUTE_FOUND)
  set(WANDA_CORE_TESTS_SUITE_SOURCES
    "tests/test_suite_xdg.cpp"
    )

  set(WANDA_CORE_TESTS_SUITE_HEADERS
    "tests/test_suite_xdg.hpp"
  )

  set(WANDA_CORE_TESTS_LIBRARIES
    "wanda"
    "LIB::CUTE"
  )

  add_executable("wanda_core_tests" "tests/core_driver.cpp" ${WANDA_CORE_TESTS_SUITE_SOURCES} ${WANDA_CORE_TESTS_SUITE_HEADERS})
  target_link_libraries("wanda_core_tests" ${WANDA_CORE_TESTS_LIBRARIES})
  add_test(NAME "wanda_core_tests" COMMAND "wanda_core_tests")
endif()