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 \
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
### 3.4 Debugging
ifeq ($(debug),no)
CXXFLAGS += -DNDEBUG
+else
+ CXXFLAGS += -g
endif
### 3.5 Optimization
### 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 \)))
LDFLAGS += $(CXXFLAGS)
endif
endif
+ endif
endif
### ==========================================================================
@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
@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 | sed -n 's/Nodes searched : \(.*\)/\/string Version\/s\/"\\(.*\\)"\/"sig-\1"\//p' > sign.txt
+ @sed -f sign.txt misc.cpp > misc2.cpp
+ @mv misc2.cpp 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)
clean:
$(RM) $(EXE) $(EXE).exe *.o .depend *~ core bench.txt *.gcda
-testrun:
- @$(PGOBENCH)
-
default:
help