cmake_minimum_required(VERSION 3.8...3.16 FATAL_ERROR) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON) project(minilogger LANGUAGES C CXX VERSION 1.0.0) list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_LIST_DIR}/cmake) option(MINILOGGER_USE_LIBUNWIND "use libunwind as unwinder" OFF) if (APPLE) set(MINILOGGER_USE_LIBUNWIND OFF) endif() if (MINILOGGER_USE_LIBUNWIND) set(MIN_Libunwind_VERSION 1.31) find_package(Libunwind REQUIRED) endif() find_package(GLib2 REQUIRED) add_library(minilogger STATIC src/backtrace.cpp src/log.cpp) add_library(MiniLogger::MiniLogger ALIAS minilogger) if (NOT APPLE) target_compile_options(minilogger PRIVATE -rdynamic) endif() target_compile_options(minilogger PRIVATE -fno-exceptions -fno-rtti) target_compile_options(minilogger PRIVATE -fstack-protector-all -fstack-check) target_compile_options(minilogger PRIVATE -Wno-variadic-macros) target_compile_options(minilogger PRIVATE -g -ggdb -gdwarf) target_compile_options(minilogger PRIVATE -funwind-tables) target_compile_options(minilogger PRIVATE $<$,$,$>: -Wall -Wextra -Wpedantic>) target_compile_features(minilogger PRIVATE cxx_auto_type) target_compile_features(minilogger PRIVATE cxx_std_11) target_include_directories(minilogger PUBLIC $ $ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) target_link_libraries(minilogger PUBLIC GLib2::glib ) if (MINILOGGER_USE_LIBUNWIND) target_compile_options(minilogger PRIVATE -DUSE_LIBUNWIND) target_link_libraries(minilogger PUBLIC ${LIBUNWIND_LIBRARIES} ) endif() include(GNUInstallDirs) set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/MiniLogger) install(TARGETS minilogger EXPORT minilogger-targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) set_target_properties(minilogger PROPERTIES EXPORT_NAME MiniLogger) install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(EXPORT minilogger-targets FILE MiniLoggerTargets.cmake NAMESPACE MiniLogger:: DESTINATION ${INSTALL_CONFIGDIR} ) include(CMakePackageConfigHelpers) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/MiniLoggerConfigVersion.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY AnyNewerVersion ) configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/cmake/MiniLoggerConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/MiniLoggerConfig.cmake INSTALL_DESTINATION ${INSTALL_CONFIGDIR} ) install(FILES ${CMAKE_CURRENT_LIST_DIR}/cmake/FindGLib2.cmake ${CMAKE_CURRENT_LIST_DIR}/cmake/FindLibunwind.cmake ${CMAKE_CURRENT_BINARY_DIR}/MiniLoggerConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/MiniLoggerConfigVersion.cmake DESTINATION ${INSTALL_CONFIGDIR} ) configure_file(${CMAKE_CURRENT_LIST_DIR}/cmake/FindLibunwind.cmake ${CMAKE_CURRENT_BINARY_DIR}/FindLibunwind.cmake COPYONLY) export(EXPORT minilogger-targets FILE ${CMAKE_CURRENT_BINARY_DIR}/MiniLoggerTargets.cmake NAMESPACE MiniLogger::) export(PACKAGE MiniLogger) enable_testing() add_subdirectory(test)