-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
98 lines (81 loc) · 2.06 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.5)
project(chess)
if(MSVC)
set(CMAKE_C_STANDARD 17)
else()
set(CMAKE_C_STANDARD 23)
endif()
include_directories(${chess_SOURCE_DIR}/include)
add_library(chess_lib STATIC
src/board.c
src/common.c
src/constants.c
src/engine.c
src/generate.c
src/move.c
src/parser.c
src/pgn.c
src/piece.c
src/result.c
src/utils.c
src/tests.c
)
set(HEADER_FILES
include/board.h
include/common.h
include/constants.h
include/engine.h
include/defs.h
include/generate.h
include/move.h
include/parser.h
include/pgn.h
include/piece.h
include/result.h
include/tests.h
include/utils.h
)
target_sources(chess_lib PRIVATE ${HEADER_FILES})
add_executable(munchess
src/uci.c
src/munchess.c
)
target_sources(munchess PRIVATE include/uci.h)
add_executable(tests
src/tests_main.c
)
target_link_libraries(munchess PRIVATE chess_lib)
target_link_libraries(tests PRIVATE chess_lib)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif()
function(set_compiler_flags target)
if(MSVC)
# Debug flags
target_compile_options(${target} PRIVATE
$<$<CONFIG:Debug>:/Od /Zi /RTC1 /W4>
)
# Release flags
target_compile_options(${target} PRIVATE
$<$<CONFIG:Release>:/O2 /Oi /GL>
)
else() # Linux - GCC/Clang
# Debug flags
target_compile_options(${target} PRIVATE
$<$<CONFIG:Debug>:-O0 -g3 -Wall -Wextra -Wpedantic -Werror>
)
# Release flags
target_compile_options(${target} PRIVATE
$<$<CONFIG:Release>:-O3 -march=native -DNDEBUG>
)
endif()
endfunction()
set_compiler_flags(chess_lib)
set_compiler_flags(munchess)
set_compiler_flags(tests)
set(RESOURCE_FILES
${CMAKE_SOURCE_DIR}/res/tests/game-1.pgn
)
source_group("Resource Files" FILES ${RESOURCE_FILES})
target_sources(chess_lib PRIVATE ${RESOURCE_FILES})
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT tests)