cmake_minimum_required(VERSION 3.10)

project(DevToolkit)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE) # Debug and Release configuration is enough

if(MSVC)
	set(CMAKE_CXX_FLAGS "-D_CRT_SECURE_NO_WARNINGS -D _UNICODE -D UNICODE -D_USE_MATH_DEFINES -bigobj -MP -W4 -utf-8")
	set(CMAKE_CXX_FLAGS_RELEASE "-O2 -MT -DNDEBUG")
	set(CMAKE_CXX_FLAGS_DEBUG "-Od -MT -Zi")
	set(CMAKE_SUPPRESS_REGENERATION true) # no ZERO_CHECK project
	set(CMAKE_EXE_LINKER_FLAGS "-STACK:4194304") # default Windows Stack size is 1MB. You might get crashes if this is missing.
else()
	set(CMAKE_CXX_FLAGS "-march=native")
	set(CMAKE_CXX_FLAGS_RELEASE "-O3 -flto -Wall -Wextra -Wshadow -Wnon-virtual-dtor -pedantic -DNDEBUG")
	set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -Wextra")
endif()

add_executable(devToolkit
	${PROJECT_SOURCE_DIR}/devToolkit.cpp
)
