# SPDX-FileCopyrightText: 2025 Felix Morgner # SPDX-License-Identifier: LGPL-2.1-only # C Library set(HEADERS "include/turns-init.h" "include/turns-participant.h" "include/turns-turn-order.h" "include/turns.h" ) set(SOURCES "src/turns-init.c" "src/turns-participant.c" "src/turns-turn-order.c" ) add_library("lib" ${SOURCES}) add_library("turns::lib" ALIAS "lib") target_sources("lib" PUBLIC FILE_SET HEADERS BASE_DIRS "include" FILES ${HEADERS} ) target_compile_options("lib" PUBLIC "$<$:-Wall>" "$<$:-Wextra>" "$<$:-Werror>" "$<$:-pedantic-errors>" "$<$:-Wall>" "$<$:-Wextra>" "$<$:-Werror>" "$<$:-pedantic-errors>" ) target_compile_features("lib" PUBLIC "c_std_23" "cxx_std_23" ) target_include_directories("lib" PUBLIC "$" "$" ) 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 ) glib_wrap_enums("lib" SOURCE_TEMPLATE "src/turns-enums.c.in" OUTPUT_NAME "turns-enums" HEADERS ${HEADERS} ) glib_generate_gir("lib" NAMESPACE "Turns" VERSION "${PROJECT_VERSION_MAJOR}.0" DEPENDENCIES "GLib-2.0" "Gio-2.0" "GObject-2.0" ) enable_coverage("lib") install(TARGETS "lib" FILE_SET HEADERS DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/turns-${PROJECT_VERSION_MAJOR}.0" ) if(BUILD_SHARED_LIBS) install(FILES "${Turns_GIR_FILE}" DESTINATION "${CMAKE_INSTALL_LIBDIR}/gir-1.0") install(FILES "${Turns_TYPELIB_FILE}" DESTINATION "${CMAKE_INSTALL_LIBDIR}/girepository-1.0") endif() # C++ Wrapper set(CXX_HEADERS "include/turnsmm/enum_helpers.hpp" "include/turnsmm/init.hpp" "include/turnsmm/participant.hpp" "include/turnsmm/turn-order.hpp" "include/turnsmm.hpp" "include/turnsmm/private/participant_p.hpp" "include/turnsmm/private/turn-order_p.hpp" ) set(CXX_SOURCES "src/turnsmm/init.cpp" "src/turnsmm/participant.cpp" "src/turnsmm/turn-order.cpp" ) add_library("libmm" ${CXX_SOURCES}) add_library("turns::mm" ALIAS "libmm") target_sources("libmm" PUBLIC FILE_SET HEADERS BASE_DIRS "include" FILES ${CXX_HEADERS} ) target_compile_options("libmm" PUBLIC "$<$:-Wall>" "$<$:-Wextra>" "$<$:-Werror>" "$<$:-pedantic-errors>" ) target_link_libraries("libmm" PUBLIC "PkgConfig::glibmm" "turns::lib" ) set_target_properties("libmm" PROPERTIES OUTPUT_NAME "turnsmm" SOVERSION "${PROJECT_VERSION_MAJOR}" VERSION "${PROJECT_VERSION}" INTERPROCEDURAL_OPTIMIZATION "${TURNS_CAN_DO_IPO}" CXX_EXTENSIONS OFF ) enable_coverage("libmm") install(TARGETS "libmm" FILE_SET HEADERS DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/turnsmm-${PROJECT_VERSION_MAJOR}.0" ) # Tests add_executable("lib-tests" "tests/glib-test.cpp" "tests/turns-participant.cpp" "tests/turns-turn-order.cpp" ) target_link_libraries("lib-tests" PRIVATE "Catch2::Catch2WithMain" "turns::lib" ) target_link_options("lib-tests" PRIVATE "$<$,$>:--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 add_executable("libmm-tests" "tests/turnsmm/glibmm-test.cpp" "tests/turnsmm/participant.cpp" "tests/turnsmm/turn-order.cpp" ) target_link_libraries("libmm-tests" PRIVATE "Catch2::Catch2WithMain" "turns::mm" ) target_link_options("libmm-tests" PRIVATE "$<$,$>:--coverage>") set_target_properties("libmm-tests" PROPERTIES INTERPROCEDURAL_OPTIMIZATION "${TURNS_CAN_DO_IPO}" C_EXTENSIONS OFF CXX_EXTENSIONS OFF ) catch_discover_tests("libmm-tests")