aboutsummaryrefslogtreecommitdiff
path: root/source/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'source/CMakeLists.txt')
-rw-r--r--source/CMakeLists.txt130
1 files changed, 130 insertions, 0 deletions
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
new file mode 100644
index 0000000..6d1ec20
--- /dev/null
+++ b/source/CMakeLists.txt
@@ -0,0 +1,130 @@
+cmake_minimum_required(VERSION 3.24)
+
+project("wanda"
+ LANGUAGES CXX
+ VERSION "1.0.0"
+)
+
+set(CMAKE_THREAD_PREFER_PTHREAD ON)
+set(THREADS_PREFER_PTHREAD_FLAG ON)
+
+find_package("asio")
+find_package("Boost")
+find_package("JPEG")
+find_package("PNG")
+find_package("lyra")
+find_package("spdlog")
+find_package("Threads")
+
+find_package("PkgConfig" REQUIRED)
+
+pkg_check_modules("GIO"
+ REQUIRED
+ IMPORTED_TARGET
+ GLOBAL
+ "gio-2.0"
+)
+
+pkg_check_modules("libmagic"
+ REQUIRED
+ IMPORTED_TARGET
+ GLOBAL
+ "libmagic"
+)
+
+# Core Library
+
+add_library("${PROJECT_NAME}" STATIC
+ "${PROJECT_SOURCE_DIR}/src/wanda/command.cpp"
+ "${PROJECT_SOURCE_DIR}/src/wanda/control_connection.cpp"
+ "${PROJECT_SOURCE_DIR}/src/wanda/environment.cpp"
+ "${PROJECT_SOURCE_DIR}/src/wanda/logging.cpp"
+ "${PROJECT_SOURCE_DIR}/src/wanda/message.cpp"
+ "${PROJECT_SOURCE_DIR}/src/wanda/xdg.cpp"
+
+ "${PROJECT_SOURCE_DIR}/include/wanda/command.hpp"
+ "${PROJECT_SOURCE_DIR}/include/wanda/control_connection.hpp"
+ "${PROJECT_SOURCE_DIR}/include/wanda/deferred_failure.hpp"
+ "${PROJECT_SOURCE_DIR}/include/wanda/environment.hpp"
+ "${PROJECT_SOURCE_DIR}/include/wanda/expected.hpp"
+ "${PROJECT_SOURCE_DIR}/include/wanda/keyed.hpp"
+ "${PROJECT_SOURCE_DIR}/include/wanda/logging.hpp"
+ "${PROJECT_SOURCE_DIR}/include/wanda/message.hpp"
+ "${PROJECT_SOURCE_DIR}/include/wanda/optional.hpp"
+ "${PROJECT_SOURCE_DIR}/include/wanda/type_wrapper.hpp"
+ "${PROJECT_SOURCE_DIR}/include/wanda/xdg.hpp"
+)
+
+target_compile_features("${PROJECT_NAME}" PUBLIC
+ "cxx_std_20"
+)
+
+target_link_libraries("${PROJECT_NAME}" PUBLIC
+ "asio::asio"
+ "spdlog::spdlog"
+ "Threads::Threads"
+)
+
+target_include_directories("${PROJECT_NAME}" SYSTEM
+ PUBLIC "${PROJECT_SOURCE_DIR}/include"
+)
+
+set_target_properties("${PROJECT_NAME}" PROPERTIES
+ CXX_STANDARD_REQUIRED YES
+ CXX_EXTENSIONS OFF
+)
+
+# Core Executables
+
+add_executable("${PROJECT_NAME}d"
+ "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}/control_interface.cpp"
+ "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}/filesystem.cpp"
+ "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}/setting.cpp"
+ "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}/wallpaper.cpp"
+ "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}/wandad.cpp"
+
+ "${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/control_interface.hpp"
+ "${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/filesystem.hpp"
+ "${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/setting.hpp"
+ "${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/wallpaper.hpp"
+)
+
+target_link_libraries("${PROJECT_NAME}d" PRIVATE
+ "${PROJECT_NAME}"
+ "bfg::lyra"
+ "boost::boost"
+ "JPEG::JPEG"
+ "PkgConfig::GIO"
+ "PkgConfig::libmagic"
+ "PNG::PNG"
+)
+
+set_target_properties("${PROJECT_NAME}d" PROPERTIES
+ CXX_STANDARD_REQUIRED YES
+ CXX_EXTENSIONS OFF
+)
+
+add_executable("${PROJECT_NAME}c"
+ "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}/commander.cpp"
+ "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}/wandac.cpp"
+
+ "${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/commander.hpp"
+)
+
+target_link_libraries("${PROJECT_NAME}c" PRIVATE
+ "${PROJECT_NAME}"
+ "bfg::lyra"
+)
+
+set_target_properties("${PROJECT_NAME}c" PROPERTIES
+ CXX_STANDARD_REQUIRED YES
+ CXX_EXTENSIONS OFF
+)
+
+# Install Targets
+
+install(TARGETS
+ "${PROJECT_NAME}"
+ "${PROJECT_NAME}c"
+ "${PROJECT_NAME}d"
+)