cmake_minimum_required(VERSION 3.16) project(psemek) set(CMAKE_CXX_STANDARD 20) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") string(TOUPPER "${CMAKE_BUILD_TYPE}" PSEMEK_BUILD_TYPE) set(PSEMEK_DEFINITIONS) if(PSEMEK_BUILD_TYPE STREQUAL "DEBUG") list(APPEND PSEMEK_DEFINITIONS "-DPSEMEK_DEBUG=1") endif() set(PSEMEK_CXX_FLAGS) if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")) list(APPEND PSEMEK_CXX_FLAGS -Wall -Werror -Wextra -pedantic -Wno-narrowing -Wno-sign-compare) endif() if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU")) # gcc gives way too many false positives on -Wmaybe-uninitialized list(APPEND PSEMEK_CXX_FLAGS -Wno-maybe-uninitialized) endif() if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")) # gives false-positive on audio::engine::impl::~impl list(APPEND PSEMEK_CXX_FLAGS -Wno-dtor-name) endif() option(PSEMEK_ASAN "Turn on Address Sanitizer" OFF) if(PSEMEK_ASAN) list(APPEND CMAKE_CXX_FLAGS -fsanitize=address) endif() option(PSEMEK_UBSAN "Turn on UB Sanitizer" OFF) if(PSEMEK_UBSAN) list(APPEND CMAKE_CXX_FLAGS -fsanitize=undefined) endif() set(Boost_USE_STATIC_LIBS ON) add_subdirectory(package) add_subdirectory(tools) add_subdirectory(libs) add_library(psemek EXCLUDE_FROM_ALL todo.md) target_link_libraries(psemek INTERFACE ${PSEMEK_LIBRARIES}) set_target_properties(psemek PROPERTIES LINKER_LANGUAGE CXX) option(PSEMEK_EXAMPLES "Build example apps" OFF) if(PSEMEK_EXAMPLES) add_subdirectory(examples) endif()