stellar

UCI Chess engine written in C++20
git clone git://git.dimitrijedobrota.com/stellar.git
Log | Files | Refs | README | LICENSE

CMakeLists.txt (1554B)


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