stellar

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

CMakeLists.txt (1863B)


0 cmake_minimum_required(VERSION 3.25.2)
1 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
3 project(
4 Stellar
5 VERSION 9.0.4
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)
16 set(CMAKE_CXX_FLAGS_PROFILE "-pg" CACHE STRING
17 "Enable profileing for the project"
18 FORCE
19 )
21 mark_as_advanced(CMAKE_CXX_FLAGS_PROFILE)
22 set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING
23 "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Profile"
24 FORCE
25 )
28 include(CheckCXXCompilerFlag)
30 option(STELLAR_ENABLE_PCH "Build using pre-compiled headers" ON)
31 function(stellar_target_precompile_headers)
32 if(STELLAR_ENABLE_PCH)
33 target_precompile_headers(${ARGV})
34 endif()
35 endfunction()
37 CHECK_CXX_COMPILER_FLAG("-flto" COMPILER_SUPPORTS_LTO)
38 if(COMPILER_SUPPORTS_LTO)
39 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
40 endif()
42 CHECK_CXX_COMPILER_FLAG("-fno-fat-lto-objects" COMPILER_SUPPORTS_LTO_NOFAT)
43 if(COMPILER_SUPPORTS_LTO_NOFAT)
44 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-fat-lto-objects")
45 endif()
47 CHECK_CXX_COMPILER_FLAG("-fconstexpr-ops-limit=10000000000" COMPILER_SUPPORTS_CONSTEXPR_OPS_LIMIT)
48 if(COMPILER_SUPPORTS_CONSTEXPR_OPS_LIMIT)
49 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fconstexpr-ops-limit=1000000000")
50 endif()
52 CHECK_CXX_COMPILER_FLAG("-fconstexpr-steps=1000000000" COMPILER_SUPPORTS_CONSTEXPR_STEPS)
53 if(COMPILER_SUPPORTS_CONSTEXPR_STEPS)
54 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fconstexpr-steps=1000000000")
55 endif()
57 CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
58 if(COMPILER_SUPPORTS_MARCH_NATIVE)
59 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
60 endif()
62 add_subdirectory(src)