Files
yggm/CMakeLists.txt
2025-08-07 06:17:29 +05:00

48 lines
1.6 KiB
CMake

cmake_minimum_required(VERSION 3.31)
project(yggm)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
file(GLOB ${PROJECT_NAME}SOURCES *.cpp)
file(GLOB ${PROJECT_NAME}HEADERS *.h)
add_executable(${PROJECT_NAME} sources/main.cpp)
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/libs)
if(CMAKE_BUILD_TYPE)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DDEBUG)
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
add_definitions(-DRELEASE)
endif()
elseif(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE)
endif()
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-mavx2" HAVE_AVX2)
if(HAVE_AVX2)
target_compile_options(${PROJECT_NAME} PRIVATE -mavx2)
target_compile_definitions(${PROJECT_NAME} PRIVATE USE_AVX2=1)
else()
message(WARNING "AVX2 not supported: fallback")
target_compile_definitions(${PROJECT_NAME} PRIVATE USE_AVX2=0)
endif()
set(CXX_ADDITIONAL_FLAGS
"-fomit-frame-pointer \
-funroll-loops \
-ftree-vectorize \
-ftree-slp-vectorize \
-fdelete-null-pointer-checks \
-fno-exceptions \
-fno-rtti \
-funsafe-math-optimizations \
-fstrict-aliasing \
-fstrict-overflow \
-fno-stack-protector \
-fno-math-errno")
set(CXXFLAGSR "-march=native -O3 -ffast-math -pipe -Wall -Wextra -Wpedantic -Wconversion -Wuninitialized -Wsign-conversion -flto")
set(CXXFLAGSD "-O0 -pipe -Wall -Wextra -Wpedantic -Wconversion -Wuninitialized -Wsign-conversion -g")
set(CMAKE_CXX_FLAGS_RELEASE "${CXXFLAGSR} ${CXX_ADDITIONAL_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${CXXFLAGSD}")
target_link_libraries(${PROJECT_NAME} pthread sodium)