-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
158 lines (134 loc) · 5.41 KB
/
Copy pathMakefile
File metadata and controls
158 lines (134 loc) · 5.41 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# -----------------------------------------------------
# Variáveis iniciais
.DEFAULT_GOAL = default
EPOCH = $(shell date +%s)
VERSION = $(shell cat version.capizero)
VERSION_WITHOUTQUOTES = $(patsubst '"%"',%, $(VERSION))
CXXFLAGS = -Wall -std=c++11 -O3 -march=native -flto -DBUILDNO=$(EPOCH) -DCAPIZERO_VERSION=$(shell cat version.capizero)
CXXDEBUGFLAGS = -Wall -std=c++11 -DBUILDNO=$(EPOCH) -DCAPIZERO_VERSION=$(shell cat version.capizero) -g -DDEBUG_BUILD
EXE := $(NAME)
COMP = g++
# -----------------------------------------------------
# Configurações
ifeq ($(NAME),)
EXE := capizero_$(VERSION_WITHOUTQUOTES)
endif
# - Compilador
ifeq ($(COMP),gcc)
CXXFLAGS += -DGNUC
else ifeq ($(COMP),g++)
CXXFLAGS += -DGNUC
else ifeq ($(COMP),clang)
CXXFLAGS += -DMSVC
endif
# - PEXT
ifeq ($(PEXT),false)
CXXFLAGS += -DNOT_USE_PEXT
else ifeq ($(PEXT),FALSE)
CXXFLAGS += -DNOT_USE_PEXT
endif
# -----------------------------------------------------
# Objs
SRCS = ./src/bitboard.o ./src/init.o \
./src/update.o ./src/gen.o \
./src/eval.o ./src/hash.o \
./src/game.o ./src/search.o \
./src/interface.o ./src/attacks.o \
./src/xboard.o ./src/uci.o \
./src/bench.o ./src/help.o \
./src/debug.o
# Headers
HEADER_FILES = ./src/bitboard.h ./src/init.h \
./src/update.h ./src/gen.h \
./src/eval.h ./src/hash.h \
./src/game.h ./src/search.h \
./src/interface.h ./src/attacks.h \
./src/xboard.h ./src/uci.h \
./src/help.h ./src/consts.h \
./src/params.h ./src/tests.h \
./src/values.h ./src/bench.h \
./src/bench_fens.h ./src/debug.h \
./src/magics.h
# -----------------------------------------------------
# Targets
build: clean ./src/main.o $(SRCS) $(HEADER_FILES)
@ $(COMP) $(CXXFLAGS) -o $(EXE) ./src/main.o $(SRCS)
@ echo "================="
@ echo "$(EXE) compilado com sucesso"
debug: clean add_debug_variables ./src/main.o $(SRCS) $(HEADER_FILES)
@ $(COMP) $(CXXFLAGS) -o capi_debug ./src/main.o $(SRCS)
@ echo "================="
@ echo "capi_debug compilado com sucesso"
tests: clean ./src/unit_tests.o ./src/tests.o $(SRCS)
@ $(COMP) $(CXXFLAGS) -o capi_tests ./src/unit_tests.o ./src/tests.o $(SRCS)
@ echo "================="
@ echo "capi_tests compilado com sucesso"
bench: clean ./src/bench_tests.o $(SRCS)
@ $(COMP) $(CXXFLAGS) -o capi_bench ./src/bench_tests.o $(SRCS)
@ echo "================="
@ echo "capi_bench compilado com sucesso"
# Texel-style eval tuner. Reuses the engine's eval/board/state code; tuner.cpp
# adds the dataset loader, loss function, and (eventually) coordinate-descent
# tuning loop. Runs as: ./capi_tuner <dataset.txt>
tuner: clean ./src/tuner.o $(SRCS)
@ $(COMP) $(CXXFLAGS) -o capi_tuner ./src/tuner.o $(SRCS)
@ echo "================="
@ echo "capi_tuner compilado com sucesso"
# Self-play data collector — Phase A. Plays engine-vs-engine games, samples
# quiet positions during play, writes them out labeled with the game's WDL
# result. Output feeds capi_resolve (Phase B) and then capi_tuner.
selfplay: clean ./src/selfplay.o ./src/fen_serializer.o $(SRCS)
@ $(COMP) $(CXXFLAGS) -o capi_selfplay ./src/selfplay.o ./src/fen_serializer.o $(SRCS)
@ echo "================="
@ echo "capi_selfplay compilado com sucesso"
# PV-resolver — Phase B. For each input position, runs a high-depth search,
# walks the PV through the TT, and emits the leaf position with the original
# game's WDL. Produces the final dataset for capi_tuner.
resolve: clean ./src/resolve.o ./src/fen_serializer.o $(SRCS)
@ $(COMP) $(CXXFLAGS) -o capi_resolve ./src/resolve.o ./src/fen_serializer.o $(SRCS)
@ echo "================="
@ echo "capi_resolve compilado com sucesso"
magics: ./src/generate_magics.cpp
@ $(COMP) -c $(CXXFLAGS) ./src/generate_magics.cpp -o ./src/generate_magics.o
@ $(COMP) -o generate_magics ./src/generate_magics.o
@ echo "================="
@ echo "generate_magics compilado com sucesso"
# -----------------------------------------------------
# Outros comandos
clean:
@ rm -rf ./src/*.o
help:
@ echo "Para compilar o capizero, você deve usar:"
@ echo "make [alvo] [opções]"
@ echo ""
@ echo "Os alvos são: "
@ echo "======================"
@ echo "build: compila o capizero com todas as optimizações recomendadas para o uso em jogos"
@ echo "tests: compila um binário para testes unitários"
@ echo "debug: compila o capizero sem optimizações e com flags para debug"
@ echo "bench: compila um binário para testar a performance da engine no seu computador"
@ echo "======================"
@ echo "As opções: "
@ echo "NAME = string: define o nome do binário"
@ echo "COMP = string: define o compilador (padrão=g++)"
@ echo "PEXT = [true/false]: define se a engine usará bitboards PEXT (padrão=true) - recomendado desativar para CPUs antigas ou com PEXT lento"
@ echo ""
@ echo "Outros comandos: "
@ echo "----------------------"
@ echo "clean: deleta todos os arquivos .o"
@ echo "help: exibe este menu"
@ echo "credits: exibe os criadores do capizero"
@ echo "----------------------"
@ echo ""
credits:
@ echo ""
@ echo "capizero $(VERSION_WITHOUTQUOTES) é escrito por HugoSouza"
@ echo ""
default: help credits
# -----------------------------------------------------
# Outras receitas
add_debug_variables:
@ $(eval CXXFLAGS = $(CXXDEBUGFLAGS))
%.o : %.cpp
@ echo building $@
@ $(COMP) -c $(CXXFLAGS) $< -o $@