68 lines
2 KiB
CMake
68 lines
2 KiB
CMake
cmake_minimum_required(VERSION 3.8)
|
|
project(psemek)
|
|
|
|
cmake_policy(SET CMP0077 NEW)
|
|
|
|
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()
|
|
|
|
option(PSEMEK_ROBUST_PREDICATES "Turn on robust geometric predicates" OFF)
|
|
if(PSEMEK_ROBUST_PREDICATES)
|
|
list(APPEND PSEMEK_DEFINITIONS "-DPSEMEK_ROBUST_PREDICATES=1")
|
|
endif()
|
|
|
|
set(PSEMEK_CXX_FLAGS)
|
|
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
|
|
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"))
|
|
# -Wdtor-name gives false-positive on audio::engine::impl::~impl
|
|
list(APPEND PSEMEK_CXX_FLAGS -Wno-dtor-name)
|
|
endif()
|
|
|
|
set(PSEMEK_BACKEND "SDL2" CACHE STRING "Application backend (OFF/SDL2)")
|
|
option(PSEMEK_LEGACY_UI "Use legacy UI library" OFF)
|
|
|
|
message(STATUS "Using backend ${PSEMEK_BACKEND}")
|
|
|
|
add_subdirectory(3rdparty)
|
|
|
|
get_directory_property(PSEMEK_PARENT_DIRECTORY PARENT_DIRECTORY)
|
|
|
|
add_subdirectory(package)
|
|
|
|
if(PSEMEK_PACKAGE_MODE)
|
|
set(Boost_USE_STATIC_LIBS ON)
|
|
endif()
|
|
|
|
add_subdirectory(tools)
|
|
add_subdirectory(libs)
|
|
|
|
set(PSEMEK_SOURCES)
|
|
if(NOT PSEMEK_PARENT_DIRECTORY)
|
|
list(APPEND PSEMEK_SOURCES todo.md)
|
|
endif()
|
|
|
|
psemek_add_library(psemek EXCLUDE_FROM_ALL ${PSEMEK_SOURCES})
|
|
target_link_libraries(psemek INTERFACE ${PSEMEK_LIBRARIES})
|
|
set_target_properties(psemek PROPERTIES LINKER_LANGUAGE CXX)
|
|
|
|
psemek_add_library(psemek-backend EXCLUDE_FROM_ALL)
|
|
target_link_libraries(psemek-backend INTERFACE psemek ${PSEMEK_BACKEND_LIBRARY})
|
|
|
|
option(PSEMEK_EXAMPLES "Build example apps" ON)
|
|
|
|
if(PSEMEK_EXAMPLES)
|
|
add_subdirectory(examples)
|
|
endif()
|