psemek/CMakeLists.txt

51 lines
1.5 KiB
CMake

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)
psemek_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()