######################################################################
# Automatically generated by cppiniter {{{date_time}}}
######################################################################

cmake_minimum_required (VERSION 3.23)
project ({{{project_name}}})

include(GNUInstallDirs)

if(NOT DEFINED VERSION_NAME)
    file(READ "version.properties" versions)

    string(REGEX MATCH "MAJOR_VERSION=([0-9]*)" _ ${versions})
    set(MAJOR_VERSION ${CMAKE_MATCH_1})

    string(REGEX MATCH "MINOR_VERSION=([0-9]*)" _ ${versions})
    set(MINOR_VERSION ${CMAKE_MATCH_1})

    string(REGEX MATCH "PATCH_VERSION=([0-9]*)" _ ${versions})
    set(PATCH_VERSION ${CMAKE_MATCH_1})

    set(VERSION_NAME "T.${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}.0")
endif()
message(STATUS "${PROJECT_NAME} version ${VERSION_NAME}")
add_definitions(-DVERSION_NAME="${VERSION_NAME}")

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)

if(WIN32)
    add_definitions(-DWINVER=0x0601)
    add_definitions(-D_WIN32_WINNT=0x0601)
endif()


if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
    set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS_DEBUG} -Og -g3 -Werror -Wall -Wextra -Wno-sign-compare")
    set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS_RELEASE} -O2")
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
    set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS_DEBUG} -Og -g3 -Werror -Wall -Wextra -Wno-sign-compare")
    set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS_RELEASE} -O2")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
    add_definitions(-D_SCL_SECURE_NO_WARNINGS=1)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS=1)

    set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD TRUE)

    string (REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
    set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS} /EHsc /utf-8 /MP /Zc:__cplusplus")
    set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS_DEBUG}  /WX /wd4244 /wd4018 /wd4267 /wd4307")
    set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS_RELEASE} /Zi")

    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
    set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
endif()

if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
    set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/build/install/ CACHE PATH "default install prefix" FORCE)
endif()

option(BUILD_TEST "build tests" OFF)

add_subdirectory(src)
{{#is_lib}}
if(BUILD_TEST)
    add_subdirectory (test)
endif()
{{/is_lib}}
