diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 153 |
1 files changed, 94 insertions, 59 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 42d2c2b..15bb80b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,75 +28,110 @@ if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") endif() -include("ConanDependencies") -include("SystemDependencies") include("CUTE") -include("WandaTargets") - -add_wanda_library(NAME "wanda" - SOURCES - "command.cpp" - "control_connection.cpp" - "environment.cpp" - "logging.cpp" - "message.cpp" - "xdg.cpp" - - HEADERS - "command.hpp" - "control_connection.hpp" - "deferred_failure.hpp" - "environment.hpp" - "expected.hpp" - "keyed.hpp" - "logging.hpp" - "message.hpp" - "optional.hpp" - "type_wrapper.hpp" - "xdg.hpp" - - LIBRARIES + +# Conan Dependencies + +include("Conan") + +conan_add_remote(NAME "bincrafters" + URL "https://api.bintray.com/conan/bincrafters/public-conan" +) +conan_cmake_run(CONANFILE "conanfile.py" + BASIC_SETUP + CMAKE_TARGETS + BUILD "missing" + OUTPUT_QUIET +) + +# System Dependencies + +set(CMAKE_THREAD_PREFER_PTHREAD ON) +set(THREADS_PREFER_PTHREAD_FLAG ON) + +find_package("Threads") +find_package("PkgConfig" REQUIRED) +pkg_check_modules("GIO" + REQUIRED + IMPORTED_TARGET + GLOBAL + "gio-2.0" +) + +find_library(C++FS_LIBRARIES + "stdc++fs" + DOC "The C++ Standard Library Filesystem implementation" +) +if(NOT C++FS_LIBRARIES) + message(FATAL_ERROR "Failed to find libstdc++fs") +endif() + +# 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_link_libraries("${PROJECT_NAME}" + "${C++FS_LIBRARIES}" "CONAN_PKG::asio" - "CONAN_PKG::spdlog" "CONAN_PKG::range-v3" - "SYSTEM::C++FS" + "CONAN_PKG::spdlog" "Threads::Threads" ) +target_include_directories("${PROJECT_NAME}" SYSTEM + PUBLIC "${PROJECT_SOURCE_DIR}/include" +) + +# Core Executables -add_wanda_executable(NAME "wandad" - SOURCES - "control_interface.cpp" - "filesystem.cpp" - "setting.cpp" - "wallpaper.cpp" - "wandad.cpp" - - HEADERS - "control_interface.hpp" - "filesystem.hpp" - "setting.hpp" - "wallpaper.hpp" - - LIBRARIES - "wanda" +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" + "${PROJECT_NAME}" "CONAN_PKG::clara" - "SYSTEM::GIO" + "PkgConfig::GIO" ) -add_wanda_executable(NAME "wandac" - SOURCES - "commander.cpp" - "wandac.cpp" - - HEADERS - "commander.hpp" +add_executable("${PROJECT_NAME}c" + "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}/commander.cpp" + "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}/wandac.cpp" - LIBRARIES - "wanda" + "${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/commander.hpp" +) +target_link_libraries("${PROJECT_NAME}c" + "${PROJECT_NAME}" "CONAN_PKG::clara" ) -add_wanda_test(NAME "xdg" - LIBRARIES - "wanda" -)
\ No newline at end of file +# Automated Tests + +if(CUTE_FOUND) + cute_test("xdg") +endif()
\ No newline at end of file |
