cmake_minimum_required(VERSION 3.18)

if (NOT DEFINED CMAKE_CXX_STANDARD)
  set(CMAKE_CXX_STANDARD 20)
endif()

set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

set(CMAKE_SOURCE_DIR src/)

project(
  encrypted_tgen
  VERSION 0.0.0
  LANGUAGES CXX C
)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(WARNING_FLAGS
  -Wall -pedantic -Wdouble-promotion -Wshadow -Wextra
    -Wformat-security)

set(COMMON_FLAGS -fno-omit-frame-pointer -ftrapv -fPIC -pthread)
set(COMMON_LINK_OPTS -pie -Wl,-z,relro,-z,now -pthread)

IF(CMAKE_BUILD_TYPE MATCHES Debug)
  list(APPEND COMMON_FLAGS -fsanitize=address -fstack-protector-all
    -Wstack-protector -DDEBUG)
  list(APPEND COMMON_LINK_OPTS -fsanitize=address)
ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)

if(CMAKE_EXPORT_COMPILE_COMMANDS)
  set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES 
      ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
endif()

add_subdirectory(src/)
