X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2FMakefile;h=8658425d3cb67433300f9d769bb628942396020a;hp=b23d671f07600388a87a3956fc211980f1659352;hb=9518cc3254972ca174a028487d9fe39241101e93;hpb=373503f4a9a990054b51806dd276f34107bd60bc diff --git a/src/Makefile b/src/Makefile index b23d671f..8658425d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -34,8 +34,9 @@ ifeq ($(UNAME),Haiku) endif BINDIR = $(PREFIX)/bin -### Built-in benchmark for pgo-builds +### Built-in benchmark for pgo-builds and signature PGOBENCH = ./$(EXE) bench 32 1 10 default depth +SIGNBENCH = ./$(EXE) bench ### Object files OBJS = benchmark.o bitbase.o bitboard.o book.o endgame.o evaluate.o main.o \ @@ -231,7 +232,7 @@ ifeq ($(COMP),clang) endif ### 3.2 General compiler settings -CXXFLAGS = -g -Wall -Wcast-qual -fno-exceptions -fno-rtti $(EXTRACXXFLAGS) +CXXFLAGS = -Wall -Wcast-qual -fno-exceptions -fno-rtti $(EXTRACXXFLAGS) ifeq ($(comp),gcc) CXXFLAGS += -ansi -pedantic -Wno-long-long -Wextra -Wshadow @@ -275,6 +276,8 @@ endif ### 3.4 Debugging ifeq ($(debug),no) CXXFLAGS += -DNDEBUG +else + CXXFLAGS += -g endif ### 3.5 Optimization @@ -354,6 +357,7 @@ endif ### needs access to the optimization flags. ifeq ($(comp),gcc) ifeq ($(optimize),yes) + ifeq ($(debug),no) GCC_MAJOR := `$(CXX) -dumpversion | cut -f1 -d.` GCC_MINOR := `$(CXX) -dumpversion | cut -f2 -d.` ifeq (1,$(shell expr \( $(GCC_MAJOR) \> 4 \) \| \( $(GCC_MAJOR) \= 4 \& $(GCC_MINOR) \>= 5 \))) @@ -361,6 +365,7 @@ ifeq ($(comp),gcc) LDFLAGS += $(CXXFLAGS) endif endif + endif endif ### ========================================================================== @@ -375,44 +380,46 @@ help: @echo "" @echo "Supported targets:" @echo "" - @echo "build > Build unoptimized version" - @echo "profile-build > Build PGO-optimized version" - @echo "strip > Strip executable" - @echo "install > Install executable" - @echo "clean > Clean up" - @echo "testrun > Make sample run" + @echo "build > Standard build" + @echo "signature-build > Standard build with embedded signature" + @echo "profile-build > PGO build" + @echo "signature-profile-build > PGO build with embedded signature" + @echo "strip > Strip executable" + @echo "install > Install executable" + @echo "clean > Clean up" @echo "" @echo "Supported archs:" @echo "" - @echo "x86-64 > x86 64-bit" - @echo "x86-64-modern > x86 64-bit with runtime support for popcnt instruction" - @echo "x86-32 > x86 32-bit excluding old hardware without SSE-support" - @echo "x86-32-old > x86 32-bit including also very old hardware" - @echo "osx-ppc-64 > PPC-Mac OS X 64 bit" - @echo "osx-ppc-32 > PPC-Mac OS X 32 bit" - @echo "osx-x86-64 > x86-Mac OS X 64 bit" - @echo "osx-x86-32 > x86-Mac OS X 32 bit" - @echo "armv7 > ARMv7 32 bit" - @echo "general-64 > unspecified 64-bit" - @echo "general-32 > unspecified 32-bit" + @echo "x86-64 > x86 64-bit" + @echo "x86-64-modern > x86 64-bit with popcnt support" + @echo "x86-32 > x86 32-bit with SSE support" + @echo "x86-32-old > x86 32-bit fall back for old hardware" + @echo "osx-ppc-64 > PPC-Mac OS X 64 bit" + @echo "osx-ppc-32 > PPC-Mac OS X 32 bit" + @echo "osx-x86-64 > x86-Mac OS X 64 bit" + @echo "osx-x86-32 > x86-Mac OS X 32 bit" + @echo "armv7 > ARMv7 32 bit" + @echo "general-64 > unspecified 64-bit" + @echo "general-32 > unspecified 32-bit" @echo "" - @echo "Supported comps:" + @echo "Supported compilers:" @echo "" - @echo "gcc > Gnu compiler (default)" - @echo "icc > Intel compiler" - @echo "mingw > Gnu compiler with MinGW under Windows" - @echo "clang > LLVM Clang compiler" + @echo "gcc > Gnu compiler (default)" + @echo "mingw > Gnu compiler with MinGW under Windows" + @echo "clang > LLVM Clang compiler" + @echo "icc > Intel compiler" @echo "" @echo "Non-standard targets:" @echo "" - @echo "make hpux > Compile for HP-UX. Compiler = aCC" + @echo "make hpux > Compile for HP-UX. Compiler = aCC" @echo "" @echo "Examples. If you don't know what to do, you likely want to run: " @echo "" - @echo "make profile-build ARCH=x86-64 (This is for 64-bit systems)" - @echo "make profile-build ARCH=x86-32 (This is for 32-bit systems)" + @echo "make build ARCH=x86-64 (This is for 64-bit systems)" + @echo "make build ARCH=x86-32 (This is for 32-bit systems)" @echo "" +.PHONY: build profile-build embed-signature build: $(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity $(MAKE) ARCH=$(ARCH) COMP=$(COMP) all @@ -437,6 +444,18 @@ profile-build: @echo "Step 4/4. Deleting profile data ..." $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_clean) +embed-signature: + @echo "Running benchmark for getting the signature ..." + @$(SIGNBENCH) 2>&1 | grep 'Nodes searched' | grep -o ": .*" | tr -d ': ' > sign.txt + @sed -i -e 's,^,/static const string Version/s/"\\(.*\\)"/"sig-,1' -e 's,$$,"/1,1' sign.txt + @sed -i -f sign.txt misc.cpp + @rm sign.txt + +signature-build: build embed-signature + $(MAKE) ARCH=$(ARCH) COMP=$(COMP) all + +signature-profile-build: build embed-signature profile-build + strip: strip $(EXE) @@ -448,9 +467,6 @@ install: clean: $(RM) $(EXE) $(EXE).exe *.o .depend *~ core bench.txt *.gcda -testrun: - @$(PGOBENCH) - default: help