| 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 | 
|     $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>>: | 
|     -Wall -Wextra -Wpedantic>) | 
|   | 
| target_compile_features(minilogger PRIVATE cxx_auto_type) | 
| target_compile_features(minilogger PRIVATE cxx_std_11) | 
|   | 
| target_include_directories(minilogger | 
|     PUBLIC | 
|         $<INSTALL_INTERFACE:include> | 
|         $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> | 
|     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) |