+help:
+ @echo ""
+ @echo "To compile stockfish, type: "
+ @echo ""
+ @echo "make target ARCH=arch [COMP=comp]"
+ @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 ""
+ @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 ""
+ @echo "Supported comps:"
+ @echo ""
+ @echo "gcc > Gnu compiler (default)"
+ @echo "icc > Intel compiler"
+ @echo "mingw > Gnu compiler with MinGW under Windows"
+ @echo "clang > LLVM Clang compiler"
+ @echo ""
+ @echo "Non-standard targets:"
+ @echo ""
+ @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 ""
+
+.PHONY: build profile-build embed-signature
+build:
+ $(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity
+ $(MAKE) ARCH=$(ARCH) COMP=$(COMP) all
+
+profile-build:
+ $(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity
+ @echo ""
+ @echo "Step 0/4. Preparing for profile build."
+ $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_prepare)
+ @echo ""
+ @echo "Step 1/4. Building executable for benchmark ..."
+ @touch *.cpp *.h
+ $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_make)
+ @echo ""
+ @echo "Step 2/4. Running benchmark for pgo-build ..."
+ @$(PGOBENCH) > /dev/null
+ @echo ""
+ @echo "Step 3/4. Building final executable ..."
+ @touch *.cpp
+ $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_use)
+ @echo ""
+ @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