diff options
Diffstat (limited to 'lib/CMakeLists.txt')
| -rw-r--r-- | lib/CMakeLists.txt | 123 |
1 files changed, 82 insertions, 41 deletions
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} -# ) |
