stellarUCI Chess engine written in C++20 |
git clone git://git.dimitrijedobrota.com/stellar.git |
Log | Files | Refs | README | LICENSE | |
CMakeLists.txt (1554B)
1 cmake_minimum_required(VERSION 3.25.2) 2 set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 3 4 project( 5 Stellar 6 VERSION 1.1.0 7 DESCRIPTION "Chess engine written in C++" 8 HOMEPAGE_URL https://git.dimitrijedobrota.com/stellar.git 9 LANGUAGES CXX 10 ) 11 enable_testing() 12 13 set(CMAKE_CXX_STANDARD 20) 14 set(CMAKE_CXX_STANDARD_REQUIRED ON) 15 set(CMAKE_CXX_EXTENSIONS OFF) 16 17 18 include(CheckCXXCompilerFlag) 19 20 option(STELLAR_ENABLE_PCH "Build using pre-compiled headers" ON) 21 function(stellar_target_precompile_headers) 22 if(STELLAR_ENABLE_PCH) 23 target_precompile_headers(${ARGV}) 24 endif() 25 endfunction() 26 27 CHECK_CXX_COMPILER_FLAG("-flto" COMPILER_SUPPORTS_LTO) 28 if(COMPILER_SUPPORTS_LTO) 29 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") 30 endif() 31 32 CHECK_CXX_COMPILER_FLAG("-fno-fat-lto-objects" COMPILER_SUPPORTS_LTO_NOFAT) 33 if(COMPILER_SUPPORTS_LTO_NOFAT) 34 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-fat-lto-objects") 35 endif() 36 37 CHECK_CXX_COMPILER_FLAG("-fconstexpr-ops-limit=10000000000" COMPILER_SUPPORTS_CONSTEXPR_OPS_LIMIT) 38 if(COMPILER_SUPPORTS_CONSTEXPR_OPS_LIMIT) 39 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fconstexpr-ops-limit=1000000000") 40 endif() 41 42 CHECK_CXX_COMPILER_FLAG("-fconstexpr-steps=1000000000" COMPILER_SUPPORTS_CONSTEXPR_STEPS) 43 if(COMPILER_SUPPORTS_CONSTEXPR_STEPS) 44 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fconstexpr-steps=1000000000") 45 endif() 46 47 CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE) 48 if(COMPILER_SUPPORTS_MARCH_NATIVE) 49 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") 50 endif() 51 52 add_subdirectory(src)