Rev 169 | Rev 183 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 169 | Rev 182 | ||
|---|---|---|---|
| Line 20... | Line 20... | ||
| 20 | ### ========================================================================== |
20 | ### ========================================================================== |
| 21 | ### Section 1. General Configuration |
21 | ### Section 1. General Configuration |
| 22 | ### ========================================================================== |
22 | ### ========================================================================== |
| 23 | 23 | ||
| 24 | ### Establish the operating system name |
24 | ### Establish the operating system name |
| - | 25 | # Pierre-Marie Baty -- Windows doesn't know uname |
|
| - | 26 | ifeq ($(OS),Windows_NT) |
|
| - | 27 | KERNEL = Windows |
|
| - | 28 | else |
|
| 25 | KERNEL = $(shell uname -s) |
29 | KERNEL = $(shell uname -s) |
| 26 | ifeq ($(KERNEL),Linux) |
30 | ifeq ($(KERNEL),Linux) |
| 27 | OS = $(shell uname -o) |
31 | OS = $(shell uname -o) |
| - | 32 | endif |
|
| 28 | endif |
33 | endif |
| 29 | 34 | ||
| 30 | ### Executable name |
35 | ### Executable name |
| - | 36 | # Pierre-Marie Baty -- on Windows, add the .exe extension |
|
| - | 37 | ifeq ($(OS),Windows_NT) |
|
| - | 38 | EXE = stockfish.exe |
|
| - | 39 | else |
|
| 31 | EXE = stockfish |
40 | EXE = stockfish |
| - | 41 | endif |
|
| 32 | 42 | ||
| 33 | ### Installation dir definitions |
43 | ### Installation dir definitions |
| 34 | PREFIX = /usr/local |
44 | PREFIX = /usr/local |
| 35 | BINDIR = $(PREFIX)/bin |
45 | BINDIR = $(PREFIX)/bin |
| 36 | 46 | ||
| Line 139... | Line 149... | ||
| 139 | ### Section 3. Low-level configuration |
149 | ### Section 3. Low-level configuration |
| 140 | ### ========================================================================== |
150 | ### ========================================================================== |
| 141 | 151 | ||
| 142 | ### 3.1 Selecting compiler (default = gcc) |
152 | ### 3.1 Selecting compiler (default = gcc) |
| 143 | 153 | ||
| - | 154 | ifeq ($(OS),Windows_NT) |
|
| - | 155 | # Pierre-Marie Baty -- we need two extra flags AND the C++14 standard when building with Clang against the Visual Studio 2015 SDK |
|
| - | 156 | CXXFLAGS += -Xclang -flto-visibility-public-std -Wall -Wcast-qual -fno-exceptions -std=c++14 $(EXTRACXXFLAGS) |
|
| - | 157 | DEPENDFLAGS += -std=c++14 |
|
| - | 158 | else |
|
| 144 | CXXFLAGS += -Wall -Wcast-qual -fno-exceptions -std=c++11 $(EXTRACXXFLAGS) |
159 | CXXFLAGS += -Wall -Wcast-qual -fno-exceptions -std=c++11 $(EXTRACXXFLAGS) |
| 145 | DEPENDFLAGS += -std=c++11 |
160 | DEPENDFLAGS += -std=c++11 |
| - | 161 | endif |
|
| 146 | LDFLAGS += $(EXTRALDFLAGS) |
162 | LDFLAGS += $(EXTRALDFLAGS) |
| 147 | 163 | ||
| 148 |
|
164 | #ifeq ($(COMP),) |
| 149 | COMP=gcc |
165 | # COMP=gcc |
| 150 |
|
166 | #endif |
| - | 167 | COMP=clang |
|
| 151 | 168 | ||
| 152 | ifeq ($(COMP),gcc) |
169 | ifeq ($(COMP),gcc) |
| 153 | comp=gcc |
170 | comp=gcc |
| 154 | CXX=g++ |
171 | CXX=g++ |
| 155 | CXXFLAGS += -pedantic -Wextra -Wshadow |
172 | CXXFLAGS += -pedantic -Wextra -Wshadow |
| Line 202... | Line 219... | ||
| 202 | 219 | ||
| 203 | ifeq ($(COMP),clang) |
220 | ifeq ($(COMP),clang) |
| 204 | comp=clang |
221 | comp=clang |
| 205 | CXX=clang++ |
222 | CXX=clang++ |
| 206 | CXXFLAGS += -pedantic -Wextra -Wshadow |
223 | CXXFLAGS += -pedantic -Wextra -Wshadow |
| - | 224 | # Pierre-Marie Baty -- also add the test case for Windows |
|
| - | 225 | ifneq ($(OS),Windows_NT) |
|
| 207 | ifneq ($(KERNEL),Darwin) |
226 | ifneq ($(KERNEL),Darwin) |
| 208 | ifneq ($(KERNEL),OpenBSD) |
227 | ifneq ($(KERNEL),OpenBSD) |
| 209 | LDFLAGS += -latomic |
228 | LDFLAGS += -latomic |
| - | 229 | endif |
|
| 210 | endif |
230 | endif |
| 211 | endif |
231 | endif |
| 212 | 232 | ||
| 213 | ifeq ($(ARCH),armv7) |
233 | ifeq ($(ARCH),armv7) |
| 214 | ifeq ($(OS),Android) |
234 | ifeq ($(OS),Android) |
| Line 247... | Line 267... | ||
| 247 | ### Allow overwriting CXX from command line |
267 | ### Allow overwriting CXX from command line |
| 248 | ifdef COMPCXX |
268 | ifdef COMPCXX |
| 249 | CXX=$(COMPCXX) |
269 | CXX=$(COMPCXX) |
| 250 | endif |
270 | endif |
| 251 | 271 | ||
| - | 272 | # Pierre-Marie Baty -- also add the test case for Windows |
|
| - | 273 | ifneq ($(OS),Windows_NT) |
|
| 252 | ### On mingw use Windows threads, otherwise POSIX |
274 | ### On mingw use Windows threads, otherwise POSIX |
| 253 | ifneq ($(comp),mingw) |
275 | ifneq ($(comp),mingw) |
| 254 | # On Android Bionic's C library comes with its own pthread implementation bundled in |
276 | # On Android Bionic's C library comes with its own pthread implementation bundled in |
| 255 | ifneq ($(OS),Android) |
277 | ifneq ($(OS),Android) |
| 256 | # Haiku has pthreads in its libroot, so only link it in on other platforms |
278 | # Haiku has pthreads in its libroot, so only link it in on other platforms |
| 257 | ifneq ($(KERNEL),Haiku) |
279 | ifneq ($(KERNEL),Haiku) |
| 258 | LDFLAGS += -lpthread |
280 | LDFLAGS += -lpthread |
| - | 281 | endif |
|
| 259 | endif |
282 | endif |
| 260 | endif |
283 | endif |
| 261 | endif |
284 | endif |
| 262 | 285 | ||
| 263 | ### 3.2.1 Debugging |
286 | ### 3.2.1 Debugging |
| Line 457... | Line 480... | ||
| 457 | -cp $(EXE) $(BINDIR) |
480 | -cp $(EXE) $(BINDIR) |
| 458 | -strip $(BINDIR)/$(EXE) |
481 | -strip $(BINDIR)/$(EXE) |
| 459 | 482 | ||
| 460 | #clean all |
483 | #clean all |
| 461 | clean: objclean profileclean |
484 | clean: objclean profileclean |
| - | 485 | ifneq ($(OS),Windows_NT) |
|
| 462 | @rm -f .depend *~ core |
486 | @rm -f .depend *~ core |
| - | 487 | else |
|
| - | 488 | @del /f .depend *~ core > nul 2>&1 |
|
| - | 489 | endif |
|
| 463 | 490 | ||
| 464 | # clean binaries and objects |
491 | # clean binaries and objects |
| 465 | objclean: |
492 | objclean: |
| - | 493 | ifneq ($(OS),Windows_NT) |
|
| 466 | @rm -f $(EXE) $(EXE).exe *.o ./syzygy/*.o |
494 | @rm -f $(EXE) $(EXE).exe *.o ./syzygy/*.o |
| - | 495 | else |
|
| - | 496 | @del /f $(EXE) $(EXE).exe *.o .\syzygy\*.o > nul 2>&1 |
|
| - | 497 | endif |
|
| 467 | 498 | ||
| 468 | # clean auxiliary profiling files |
499 | # clean auxiliary profiling files |
| 469 | profileclean: |
500 | profileclean: |
| - | 501 | ifneq ($(OS),Windows_NT) |
|
| 470 | @rm -rf profdir |
502 | @rm -rf profdir |
| 471 | @rm -f bench.txt *.gcda ./syzygy/*.gcda *.gcno ./syzygy/*.gcno |
503 | @rm -f bench.txt *.gcda ./syzygy/*.gcda *.gcno ./syzygy/*.gcno |
| 472 | @rm -f stockfish.profdata *.profraw |
504 | @rm -f stockfish.profdata *.profraw |
| - | 505 | else |
|
| - | 506 | @del /f /s /q profdir > nul 2>&1 |
|
| - | 507 | @del /f bench.txt *.gcda .\syzygy\*.gcda *.gcno .\syzygy\*.gcno > nul 2>&1 |
|
| - | 508 | @del /f stockfish.profdata *.profraw > nul 2>&1 |
|
| - | 509 | endif |
|
| 473 | 510 | ||
| 474 | default: |
511 | default: |
| 475 | help |
512 | help |
| 476 | 513 | ||
| 477 | ### ========================================================================== |
514 | ### ========================================================================== |
| Line 498... | Line 535... | ||
| 498 | @echo "Flags:" |
535 | @echo "Flags:" |
| 499 | @echo "CXX: $(CXX)" |
536 | @echo "CXX: $(CXX)" |
| 500 | @echo "CXXFLAGS: $(CXXFLAGS)" |
537 | @echo "CXXFLAGS: $(CXXFLAGS)" |
| 501 | @echo "LDFLAGS: $(LDFLAGS)" |
538 | @echo "LDFLAGS: $(LDFLAGS)" |
| 502 | @echo "" |
539 | @echo "" |
| - | 540 | # Pierre-Marie Baty -- "test" doesn't exist on Windows, so just skip that |
|
| - | 541 | ifneq ($(OS),Windows_NT) |
|
| 503 | @echo "Testing config sanity. If this fails, try 'make help' ..." |
542 | @echo "Testing config sanity. If this fails, try 'make help' ..." |
| 504 | @echo "" |
543 | @echo "" |
| 505 | @test "$(debug)" = "yes" || test "$(debug)" = "no" |
544 | @test "$(debug)" = "yes" || test "$(debug)" = "no" |
| 506 | @test "$(sanitize)" = "undefined" || test "$(sanitize)" = "thread" || test "$(sanitize)" = "no" |
545 | @test "$(sanitize)" = "undefined" || test "$(sanitize)" = "thread" || test "$(sanitize)" = "no" |
| 507 | @test "$(optimize)" = "yes" || test "$(optimize)" = "no" |
546 | @test "$(optimize)" = "yes" || test "$(optimize)" = "no" |
| Line 511... | Line 550... | ||
| 511 | @test "$(prefetch)" = "yes" || test "$(prefetch)" = "no" |
550 | @test "$(prefetch)" = "yes" || test "$(prefetch)" = "no" |
| 512 | @test "$(popcnt)" = "yes" || test "$(popcnt)" = "no" |
551 | @test "$(popcnt)" = "yes" || test "$(popcnt)" = "no" |
| 513 | @test "$(sse)" = "yes" || test "$(sse)" = "no" |
552 | @test "$(sse)" = "yes" || test "$(sse)" = "no" |
| 514 | @test "$(pext)" = "yes" || test "$(pext)" = "no" |
553 | @test "$(pext)" = "yes" || test "$(pext)" = "no" |
| 515 | @test "$(comp)" = "gcc" || test "$(comp)" = "icc" || test "$(comp)" = "mingw" || test "$(comp)" = "clang" |
554 | @test "$(comp)" = "gcc" || test "$(comp)" = "icc" || test "$(comp)" = "mingw" || test "$(comp)" = "clang" |
| - | 555 | endif |
|
| 516 | 556 | ||
| 517 | $(EXE): $(OBJS) |
557 | $(EXE): $(OBJS) |
| 518 | $(CXX) -o $@ $(OBJS) $(LDFLAGS) |
558 | $(CXX) -o $@ $(OBJS) $(LDFLAGS) |
| 519 | 559 | ||
| 520 | clang-profile-make: |
560 | clang-profile-make: |