X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2FMakefile;h=38f607cb24f58fdc2719197be82b82be87e01b04;hb=ce009ea1aaecc577bbdf208cef8e61dd1827a18e;hp=0804cdd51a9dcfe7bafc5feb15b11a4ed0455c4f;hpb=dd63b98fb06e050aa961fbad6fd1f9316f2b17df;p=stockfish diff --git a/src/Makefile b/src/Makefile index 0804cdd5..38f607cb 100644 --- a/src/Makefile +++ b/src/Makefile @@ -81,6 +81,11 @@ endif # at the end of the line for flag values. ### 2.1. General and architecture defaults + +ifeq ($(ARCH),) + empty_arch = yes +endif + optimize = yes debug = no sanitize = no @@ -99,6 +104,7 @@ neon = no ARCH = x86-64-modern ### 2.2 Architecture specific + ifeq ($(ARCH),general-32) arch = any bits = 32 @@ -141,16 +147,7 @@ ifeq ($(ARCH),x86-64-ssse3) ssse3 = yes endif -ifeq ($(ARCH),x86-64-modern) - arch = x86_64 - prefetch = yes - popcnt = yes - sse = yes - ssse3 = yes - sse41 = yes -endif - -ifeq ($(ARCH),x86-64-sse41-popcnt) +ifeq ($(ARCH),$(filter $(ARCH),x86-64-sse41-popcnt x86-64-modern)) arch = x86_64 prefetch = yes popcnt = yes @@ -468,7 +465,7 @@ ifeq ($(neon),yes) endif ifeq ($(arch),x86_64) - CXXFLAGS += -DUSE_SSE2 + CXXFLAGS += -msse2 -DUSE_SSE2 endif ### 3.7 pext @@ -535,12 +532,13 @@ help: @echo "" @echo "Supported targets:" @echo "" + @echo "help > Display architecture details" @echo "build > Standard build" - @echo "profile-build > Standard build with PGO" + @echo "net > Download the default nnue net" + @echo "profile-build > Faster build (with profile-guided optimization)" @echo "strip > Strip executable" @echo "install > Install executable" @echo "clean > Clean up" - @echo "net > Download the default nnue net" @echo "" @echo "Supported archs:" @echo "" @@ -549,7 +547,7 @@ help: @echo "x86-64-bmi2 > x86 64-bit with bmi2 support" @echo "x86-64-avx2 > x86 64-bit with avx2 support" @echo "x86-64-sse41-popcnt > x86 64-bit with sse41 and popcnt support" - @echo "x86-64-modern > the same as previous (x86-64-sse41-popcnt)" + @echo "x86-64-modern > common modern CPU, currently x86-64-sse41-popcnt" @echo "x86-64-ssse3 > x86 64-bit with ssse3 support" @echo "x86-64-sse3-popcnt > x86 64-bit with sse3 and popcnt support" @echo "x86-64 > x86 64-bit generic" @@ -572,17 +570,20 @@ help: @echo "" @echo "Simple examples. If you don't know what to do, you likely want to run: " @echo "" - @echo "make -j build ARCH=x86-64 (This is for 64-bit systems)" - @echo "make -j build ARCH=x86-32 (This is for 32-bit systems)" + @echo "make -j build ARCH=x86-64 (A portable, slow compile for 64-bit systems)" + @echo "make -j build ARCH=x86-32 (A portable, slow compile for 32-bit systems)" @echo "" - @echo "Advanced examples, for experienced users: " + @echo "Advanced examples, for experienced users looking for performance: " @echo "" - @echo "make -j build ARCH=x86-64-modern COMP=clang" - @echo "make -j profile-build ARCH=x86-64-bmi2 COMP=gcc COMPCXX=g++-4.8" - @echo "" - @echo "The selected architecture $(ARCH) enables the following configuration: " + @echo "make help ARCH=x86-64-bmi2" + @echo "make -j profile-build ARCH=x86-64-bmi2 COMP=gcc COMPCXX=g++-9.0" + @echo "make -j build ARCH=x86-64-ssse3 COMP=clang" @echo "" +ifneq ($(empty_arch), yes) + @echo "-------------------------------\n" + @echo "The selected architecture $(ARCH) will enable the following configuration: " @$(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity +endif .PHONY: help build profile-build strip install clean net objclean profileclean \ @@ -623,8 +624,10 @@ net: $(eval nnuenet := $(shell grep EvalFile ucioption.cpp | grep Option | sed 's/.*\(nn-[a-z0-9]\{12\}.nnue\).*/\1/')) @echo "Default net: $(nnuenet)" $(eval nnuedownloadurl := https://tests.stockfishchess.org/api/nn/$(nnuenet)) - $(eval curl_or_wget := $(shell if hash curl 2>/dev/null; then echo "curl -sL"; elif hash wget 2>/dev/null; then echo "wget -qO-"; fi)) + $(eval curl_or_wget := $(shell if hash curl 2>/dev/null; then echo "curl -skL"; elif hash wget 2>/dev/null; then echo "wget -qO-"; fi)) @if test -f "$(nnuenet)"; then echo "Already available."; else echo "Downloading $(nnuedownloadurl)"; $(curl_or_wget) $(nnuedownloadurl) > $(nnuenet); fi + $(eval shasum_command := $(shell if hash shasum 2>/dev/null; then echo "shasum -a 256 "; elif hash sha256sum 2>/dev/null; then echo "sha256sum "; fi)) + @if [ "$(nnuenet)" != "nn-"`$(shasum_command) $(nnuenet) | cut -c1-12`".nnue" ]; then echo "Failed download or $(nnuenet) corrupted, please delete!"; exit 1; fi # clean binaries and objects objclean: