Do not show the details of the default architecture for a simple "make help"
invocation, as the details are most likely to confuse beginners. Instead we
make it clear which architecture is the default and put an example at the end
of the Makefile as an incentative to use "make help ARCH=blah" to discover
the flags used by the different architectures.
```
make help
make help ARCH=x86-64-ssse3
```
Also clean-up and modernize a bit the Makefile examples while at it.
closes https://github.com/official-stockfish/Stockfish/pull/2996
No functional change
# at the end of the line for flag values.
### 2.1. General and architecture defaults
# 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
optimize = yes
debug = no
sanitize = no
ARCH = x86-64-modern
### 2.2 Architecture specific
ARCH = x86-64-modern
### 2.2 Architecture specific
ifeq ($(ARCH),general-32)
arch = any
bits = 32
ifeq ($(ARCH),general-32)
arch = any
bits = 32
-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
arch = x86_64
prefetch = yes
popcnt = yes
@echo ""
@echo "Supported targets:"
@echo ""
@echo ""
@echo "Supported targets:"
@echo ""
+ @echo "help > Display architecture details"
@echo "build > Standard build"
@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 "strip > Strip executable"
@echo "install > Install executable"
@echo "clean > Clean up"
- @echo "net > Download the default nnue net"
@echo ""
@echo "Supported archs:"
@echo ""
@echo ""
@echo "Supported archs:"
@echo ""
@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-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"
@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"
@echo ""
@echo "Simple examples. If you don't know what to do, you likely want to run: "
@echo ""
@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 "Advanced examples, for experienced users: "
+ @echo "Advanced examples, for experienced users looking for performance: "
- @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"
+ifneq ($(empty_arch), yes)
+ @echo "-------------------------------\n"
+ @echo "The selected architecture $(ARCH) will enable the following configuration: "
@$(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity
@$(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity
.PHONY: help build profile-build strip install clean net objclean profileclean \
.PHONY: help build profile-build strip install clean net objclean profileclean \