-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
128 lines (109 loc) · 3.32 KB
/
CMakeLists.txt
File metadata and controls
128 lines (109 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
cmake_minimum_required(VERSION 3.25)
project(Sentinel)
if(NOT DEFINED EXE)
set(EXE "Sentinel" CACHE STRING "Executable name")
set(EXE_DEFINED OFF)
else()
set(EXE_DEFINED ON)
endif()
option(ENABLE_AVX "Enable AVX" OFF)
option(ENABLE_AVX_512 "Enable AVX512" OFF)
option(ENABLE_SSE, "Enable SSE" OFF)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_FLAGS "-Wall -pedantic")
set(CMAKE_CXX_FLAGS_DEBUG "-g -fsanitize=address,undefined")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
if(CMAKE_BUILD_TYPE STREQUAL "Release")
set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib)
set(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++ -lpthread")
endif ()
if(EXE_DEFINED)
message(STATUS "EXE defined as ${EXE}, enabling Release build with AVX")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-mavx" COMPILER_SUPPORTS_AVX)
if(COMPILER_SUPPORTS_AVX)
add_definitions(-DENABLE_AVX)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mavx")
endif()
check_cxx_compiler_flag("-mavx2" COMPILER_SUPPORTS_AVX2)
if(COMPILER_SUPPORTS_AVX2)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mavx2")
endif()
endif()
if(ENABLE_AVX)
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-mavx" COMPILER_SUPPORTS_AVX)
check_cxx_compiler_flag("-mavx2" COMPILER_SUPPORTS_AVX2)
if(COMPILER_SUPPORTS_AVX)
add_definitions(-DENABLE_AVX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx")
endif()
if(COMPILER_SUPPORTS_AVX2)
add_definitions(-DENABLE_AVX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2")
endif()
endif()
if(ENABLE_AVX_512)
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-mavx512f" COMPILER_SUPPORTS_AVX_512)
if(COMPILER_SUPPORTS_AVX_512)
add_definitions(-DENABLE_AVX_512)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx512f")
endif()
endif ()
if(ENABLE_SSE)
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-msse" COMPILER_SUPPORTS_SSE)
if(COMPILER_SUPPORTS_SSE)
add_definitions(-DENABLE_SSE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse4.1")
endif()
endif ()
include_directories(src/tests)
include_directories(src)
add_executable(${EXE}
src/bit_ops.h
src/main.cpp
src/movegen.h
src/movegen.cpp
src/magics.h
src/magics.cpp
src/board.h
src/board.cpp
src/tests/BoardTests.cpp
src/move.h
src/move.cpp
src/tests/PerftTests.cpp
src/state.h
src/uci.h
src/uci.cpp
src/search.h
src/search.cpp
src/tests/ZobristTests.cpp
src/pst.h
src/movepick.h
src/movepick.cpp
src/tt.h
src/tt.cpp
src/timer.h
src/timer.cpp
src/evaluation.cpp
src/evaluation.cpp
src/tests/NullMoveTests.cpp
src/see.cpp
src/tests/SEETests.cpp
src/timemanager.cpp
src/nnue/datagen.h
src/nnue/datagen.cpp
src/nnue/neuralnetwork.h
src/nnue/const.h
src/nnue/neuralnetwork.cpp
src/nnue/neuralnetwork.cpp
src/nnue/accumulator.cpp
src/nnue/nnue.cpp
src/boardEnums.h
src/tests/NNUETests.cpp
src/tunable.h
src/tunable.cpp
)