diff options
| -rw-r--r-- | CMakeLists.txt | 77 | ||||
| -rw-r--r-- | lib/CMakeLists.txt | 123 |
2 files changed, 90 insertions, 110 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index d2d1fd0..a82c7fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,83 +6,22 @@ project("turns" VERSION "1.0.0" ) -enable_testing() - list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules") +# Global Modules + include("CheckIPOSupported") include("EnableCoverage") -include("GlibCompileResources") -include("GlibCompileSchemas") -include("GlibMkenums") include("GNUInstallDirs") -find_package("Gettext" REQUIRED) -find_package("Intl" REQUIRED) -find_package("PkgConfig" REQUIRED) - -check_ipo_supported(RESULT CAN_DO_IPO LANGUAGES CXX) - -set(CMAKE_CXX_STANDARD "23") -set(CMAKE_CXX_EXTENSIONS OFF) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL ${CAN_DO_IPO}) - -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib") -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib") -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin") +# Global Settings -set(GLIB_MINIMUM_VERSION "2.84") -set(GTK4_MINIMUM_VERSION "4.18") +set(TURNS_GLIB_MINIMUM_VERSION "2.84") +check_ipo_supported(RESULT TURNS_CAN_DO_IPO LANGUAGES CXX) -# Build options +# Sub projects -option(TURNS_USE_INSTALLED_TRANSLATIONS "Use the installed translation files" ON) -option(TURNS_USE_INSTALLED_SCHEMA_FILES "Use the installed schema files" ON) - -# Dependencies - -include("FetchContent") - -FetchContent_Declare( - "Catch2" - URL "https://github.com/catchorg/Catch2/archive/refs/tags/v3.6.0.tar.gz" - URL_HASH "SHA256=485932259a75c7c6b72d4b874242c489ea5155d17efa345eb8cc72159f49f356" - EXCLUDE_FROM_ALL - SYSTEM - FIND_PACKAGE_ARGS -) - -FetchContent_Declare( - "nlohmann_json" - URL "https://github.com/nlohmann/json/archive/refs/tags/v3.11.3.tar.gz" - URL_HASH "SHA256=0d8ef5af7f9794e3263480193c491549b2ba6cc74bb018906202ada498a79406" - EXCLUDE_FROM_ALL - SYSTEM - FIND_PACKAGE_ARGS -) - -FetchContent_MakeAvailable("Catch2" "nlohmann_json") - -pkg_check_modules("gio" IMPORTED_TARGET REQUIRED "gio-2.0>=${GLIB_MINIMUM_VERSION}") -pkg_check_modules("giomm" IMPORTED_TARGET REQUIRED "giomm-2.68>=${GLIB_MINIMUM_VERSION}") -pkg_check_modules("glibmm" IMPORTED_TARGET REQUIRED "glibmm-2.68>=${GLIB_MINIMUM_VERSION}") -pkg_check_modules("gtkmm" IMPORTED_TARGET REQUIRED "gtkmm-4.0>=${GTK4_MINIMUM_VERSION}") -pkg_check_modules("gobject" IMPORTED_TARGET REQUIRED "gobject-2.0>=${GLIB_MINIMUM_VERSION}") - -add_subdirectory("deps/libadwaitamm" EXCLUDE_FROM_ALL SYSTEM) - -include("Catch") - -# Targets - -add_subdirectory("lib") - -# add_subdirectory("app") -# add_subdirectory("core") -# add_subdirectory("lang") -# add_subdirectory("style") -# add_subdirectory("ui") +add_subdirectory("lib" SYSTEM) # License @@ -90,4 +29,4 @@ install(FILES "LICENSE.txt" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/licenses/turns" RENAME "LICENSE" -)
\ No newline at end of file +) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index ceb4d5c..c4b1a0f 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -1,3 +1,48 @@ +cmake_minimum_required(VERSION "4.0.0") + +project("libturns" + LANGUAGES C CXX + DESCRIPTION "The core library for 'Turns, the simple turn order tracker'" + VERSION "1.0.0" +) + +include("FetchContent") +include("GlibMkenums") + +find_package("PkgConfig" REQUIRED) + +#Dependencies + +pkg_check_modules("glib" + IMPORTED_TARGET + REQUIRED + "glib-2.0>=${TURNS_GLIB_MINIMUM_VERSION}" + "gio-2.0>=${TURNS_GLIB_MINIMUM_VERSION}" + "gobject-2.0>=${TURNS_GLIB_MINIMUM_VERSION}" +) + +pkg_check_modules("glibmm" + IMPORTED_TARGET + REQUIRED + "giomm-2.68>=${TURNS_GLIB_MINIMUM_VERSION}" + "glibmm-2.68>=${TURNS_GLIB_MINIMUM_VERSION}" +) + +# Testing Dependencies + +FetchContent_Declare( + "Catch2" + URL "https://github.com/catchorg/Catch2/archive/refs/tags/v3.6.0.tar.gz" + URL_HASH "SHA256=485932259a75c7c6b72d4b874242c489ea5155d17efa345eb8cc72159f49f356" + EXCLUDE_FROM_ALL + SYSTEM + FIND_PACKAGE_ARGS +) + +FetchContent_MakeAvailable("Catch2") + +include("Catch") + # Library set(HEADERS @@ -14,10 +59,7 @@ set(SOURCES "src/turns-turn-order.cpp" ) -add_library("lib" - ${SOURCES} -) - +add_library("lib" ${SOURCES}) add_library("turns::lib" ALIAS "lib") target_sources("lib" PUBLIC @@ -28,29 +70,34 @@ target_sources("lib" PUBLIC ) target_compile_options("lib" PUBLIC + "$<$<C_COMPILER_ID:GNU,Clang>:-Wall>" + "$<$<C_COMPILER_ID:GNU,Clang>:-Wextra>" + "$<$<C_COMPILER_ID:GNU,Clang>:-Werror>" + "$<$<C_COMPILER_ID:GNU,Clang>:-pedantic-errors>" "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wall>" "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wextra>" "$<$<CXX_COMPILER_ID:GNU,Clang>:-Werror>" "$<$<CXX_COMPILER_ID:GNU,Clang>:-pedantic-errors>" ) -target_include_directories("lib" PUBLIC - "src" +target_compile_features("lib" PUBLIC + "c_std_23" + "cxx_std_23" ) -target_link_libraries("lib" PUBLIC - "PkgConfig::gio" - "PkgConfig::gobject" -) +target_include_directories("lib" PUBLIC "src") -target_compile_definitions("lib" PUBLIC - "$<$<NOT:$<BOOL:TURNS_USE_INSTALLED_SCHEMA_FILES>>:TURNS_SETTINGS_SCHEMA_DIR=\"${CMAKE_CURRENT_BINARY_DIR}\">" +target_link_libraries("lib" PUBLIC + "PkgConfig::glib" ) set_target_properties("lib" PROPERTIES OUTPUT_NAME "turns" SOVERSION "${PROJECT_VERSION_MAJOR}" VERSION "${PROJECT_VERSION}" + INTERPROCEDURAL_OPTIMIZATION "${TURNS_CAN_DO_IPO}" + C_EXTENSIONS OFF + CXX_EXTENSIONS OFF ) target_add_glib_enums("lib" @@ -62,9 +109,7 @@ target_add_glib_enums("lib" enable_coverage("lib") -install(TARGETS "lib" - FILE_SET HEADERS DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/turns" -) +install(TARGETS "lib" FILE_SET HEADERS DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/turns") # C++ Wrapper @@ -86,10 +131,7 @@ set(CXX_SOURCES "src/turnsmm/turn-order.cpp" ) -add_library("libmm" - ${CXX_SOURCES} -) - +add_library("libmm" ${CXX_SOURCES}) add_library("turns::mm" ALIAS "libmm") target_sources("libmm" PUBLIC @@ -106,14 +148,10 @@ target_compile_options("libmm" PUBLIC "$<$<CXX_COMPILER_ID:GNU,Clang>:-pedantic-errors>" ) -target_include_directories("libmm" PUBLIC - "src" -) +target_include_directories("libmm" PUBLIC "src") target_link_libraries("libmm" PUBLIC - "PkgConfig::giomm" "PkgConfig::glibmm" - "turns::lib" ) @@ -121,16 +159,19 @@ set_target_properties("libmm" PROPERTIES OUTPUT_NAME "turnsmm" SOVERSION "${PROJECT_VERSION_MAJOR}" VERSION "${PROJECT_VERSION}" + INTERPROCEDURAL_OPTIMIZATION "${TURNS_CAN_DO_IPO}" + C_EXTENSIONS OFF + CXX_EXTENSIONS OFF ) enable_coverage("libmm") -install(TARGETS "libmm" - FILE_SET HEADERS DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/turnsmm" -) +install(TARGETS "libmm" FILE_SET HEADERS DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/turnsmm") # Tests +enable_testing() + add_executable("lib-tests" "tests/runtime_init.cpp" "tests/turns-participant.cpp" @@ -139,18 +180,23 @@ add_executable("lib-tests" target_link_libraries("lib-tests" PRIVATE "Catch2::Catch2WithMain" - "turns::lib" ) -target_link_options("lib-tests" PRIVATE - "$<$<AND:$<CXX_COMPILER_ID:GNU,Clang>,$<CONFIG:Debug>>:--coverage>" +target_link_options("lib-tests" PRIVATE "$<$<AND:$<CXX_COMPILER_ID:GNU,Clang>,$<CONFIG:Debug>>:--coverage>") + +set_target_properties("lib-tests" PROPERTIES + INTERPROCEDURAL_OPTIMIZATION "${TURNS_CAN_DO_IPO}" + C_EXTENSIONS OFF + CXX_EXTENSIONS OFF ) catch_discover_tests("lib-tests") # C++ Wrapper Tests +enable_testing() + add_executable("libmm-tests" "tests/turnsmm/runtime_init.cpp" "tests/turnsmm/participant.cpp" @@ -159,20 +205,15 @@ add_executable("libmm-tests" target_link_libraries("libmm-tests" PRIVATE "Catch2::Catch2WithMain" - "turns::mm" ) -target_link_options("libmm-tests" PRIVATE - "$<$<AND:$<CXX_COMPILER_ID:GNU,Clang>,$<CONFIG:Debug>>:--coverage>" +target_link_options("libmm-tests" PRIVATE "$<$<AND:$<CXX_COMPILER_ID:GNU,Clang>,$<CONFIG:Debug>>:--coverage>") + +set_target_properties("libmm-tests" PROPERTIES + INTERPROCEDURAL_OPTIMIZATION "${TURNS_CAN_DO_IPO}" + C_EXTENSIONS OFF + CXX_EXTENSIONS OFF ) catch_discover_tests("libmm-tests") - -# file(GLOB_RECURSE TEST_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/tests" CONFIGURE_DEPENDS "*.trns") - -# target_add_glib_resources("core-tests" -# PREFIX "/ch/arknet/Turns/core-tests/" -# WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tests" -# CSS_FILES ${TEST_FILES} -# ) |
