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: |