aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2022-09-16 21:33:48 +0200
committerFelix Morgner <felix.morgner@gmail.com>2022-09-16 21:33:48 +0200
commitd22bc7b557d36da41fe88d3188a7cd335c3ccaa0 (patch)
tree1b350b6bd89291149c9d80389c876604ed257248 /CMakeLists.txt
parentd70aaf0ef92cac0781dabb60411bbd907e7f0caa (diff)
downloadwanda-d22bc7b557d36da41fe88d3188a7cd335c3ccaa0.tar.xz
wanda-d22bc7b557d36da41fe88d3188a7cd335c3ccaa0.zip
wanda: clean up build
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt139
1 files changed, 48 insertions, 91 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f0a95f0..6d1ec20 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,56 +1,23 @@
-cmake_minimum_required(VERSION 3.10)
-project("wanda" LANGUAGES CXX)
+cmake_minimum_required(VERSION 3.24)
-set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_STANDARD "20")
-
-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")
-
-if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
-endif()
-
-if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
-endif()
-
-if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
-endif()
-
-enable_testing()
-
-# Conan Dependencies
-
-include("Conan")
-
-conan_add_remote(NAME "fmorgner"
- URL "https://api.bintray.com/conan/fmorgner/conan-public"
+project("wanda"
+ LANGUAGES CXX
+ VERSION "1.0.0"
)
-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("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
@@ -65,14 +32,6 @@ pkg_check_modules("libmagic"
"libmagic"
)
-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
@@ -95,16 +54,26 @@ add_library("${PROJECT_NAME}" STATIC
"${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"
+
+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"
@@ -119,14 +88,20 @@ add_executable("${PROJECT_NAME}d"
"${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/setting.hpp"
"${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/wallpaper.hpp"
)
-target_link_libraries("${PROJECT_NAME}d"
+
+target_link_libraries("${PROJECT_NAME}d" PRIVATE
"${PROJECT_NAME}"
- "CONAN_PKG::lyra"
- "CONAN_PKG::boost"
- "CONAN_PKG::libjpeg"
- "CONAN_PKG::libpng"
+ "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"
@@ -135,39 +110,21 @@ add_executable("${PROJECT_NAME}c"
"${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/commander.hpp"
)
-target_link_libraries("${PROJECT_NAME}c"
+
+target_link_libraries("${PROJECT_NAME}c" PRIVATE
"${PROJECT_NAME}"
- "CONAN_PKG::lyra"
+ "bfg::lyra"
)
-# Automated Tests
-
-add_library("${PROJECT_NAME}_test_driver" OBJECT
- "tests/${PROJECT_NAME}/driver.cpp"
-)
-target_link_libraries("${PROJECT_NAME}_test_driver"
- "CONAN_PKG::CUTE"
+set_target_properties("${PROJECT_NAME}c" PROPERTIES
+ CXX_STANDARD_REQUIRED YES
+ CXX_EXTENSIONS OFF
)
-function("cute_test" SUITE_NAME)
- if(NOT SUITE_NAME)
- message(FATAL_ERROR "Missing argument 'SUITE_NAME'!")
- endif()
-
- add_executable("${PROJECT_NAME}_${SUITE_NAME}_tests"
- "tests/${PROJECT_NAME}/test_suite_${SUITE_NAME}.cpp"
- )
- target_link_libraries("${PROJECT_NAME}_${SUITE_NAME}_tests"
- "${PROJECT_NAME}_test_driver"
- "${PROJECT_NAME}"
- )
- add_test(NAME "${SUITE_NAME}_tests"
- COMMAND "${PROJECT_NAME}_${SUITE_NAME}_tests"
- )
-endfunction()
-
-cute_test("xdg")
-
# Install Targets
-install(TARGETS "${PROJECT_NAME}" "${PROJECT_NAME}c" "${PROJECT_NAME}d")
+install(TARGETS
+ "${PROJECT_NAME}"
+ "${PROJECT_NAME}c"
+ "${PROJECT_NAME}d"
+)