### 2.1. General and architecture defaults
ifeq ($(ARCH),)
- ARCH = x86-64-avx2
- help_skip_sanity = yes
+ ARCH = native
endif
+
+ifeq ($(ARCH), native)
+ override ARCH = $(shell ../scripts/get_native_properties.sh | cut -d " " -f 1)
+endif
+
# explicitly check for the list of supported architectures (as listed with make help),
# the user can override with `make ARCH=x86-32-vnni256 SUPPORTED_ARCH=true`
ifeq ($(ARCH), $(filter $(ARCH), \
### 3.3 Optimization
ifeq ($(optimize),yes)
- CXXFLAGS += -O3
+ CXXFLAGS += -O3 -funroll-loops
ifeq ($(comp),gcc)
ifeq ($(OS), Android)
CXXFLAGS += -DGIT_DATE=$(GIT_DATE)
endif
+### 3.7.3 Try to include architecture
+ifneq ($(ARCH), )
+ CXXFLAGS += -DARCH=$(ARCH)
+endif
+
### 3.8 Link Time Optimization
### This is a mix of compile and link time options because the lto link phase
### needs access to the optimization flags.
### Section 4. Public Targets
### ==========================================================================
-
help:
@echo ""
@echo "To compile stockfish, type: "
@echo ""
- @echo "make target ARCH=arch [COMP=compiler] [COMPCXX=cxx]"
+ @echo "make -j target [ARCH=arch] [COMP=compiler] [COMPCXX=cxx]"
@echo ""
@echo "Supported targets:"
@echo ""
@echo ""
@echo "Supported archs:"
@echo ""
+ @echo "native > select the best architecture for the host processor (default)"
@echo "x86-64-vnni512 > x86 64-bit with vnni 512bit support"
@echo "x86-64-vnni256 > x86 64-bit with vnni 512bit support, limit operands to 256bit wide"
@echo "x86-64-avx512 > x86 64-bit with avx512 support"
@echo ""
@echo "Supported compilers:"
@echo ""
- @echo "gcc > Gnu compiler (default)"
- @echo "mingw > Gnu compiler with MinGW under Windows"
+ @echo "gcc > GNU compiler (default)"
+ @echo "mingw > GNU compiler with MinGW under Windows"
@echo "clang > LLVM Clang compiler"
@echo "icx > Intel oneAPI DPC++/C++ Compiler"
@echo "ndk > Google NDK to cross-compile for Android"
@echo "make -j profile-build ARCH=x86-64-avxvnni COMP=gcc COMPCXX=g++-12.0"
@echo "make -j build ARCH=x86-64-ssse3 COMP=clang"
@echo ""
- @echo "-------------------------------"
-ifeq ($(SUPPORTED_ARCH)$(help_skip_sanity), true)
- @echo "The selected architecture $(ARCH) will enable the following configuration: "
- @$(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity
-else
+ifneq ($(SUPPORTED_ARCH), true)
@echo "Specify a supported architecture with the ARCH option for more details"
@echo ""
endif
net: netvariables
@echo "Default net: $(nnuenet)"
@if [ "x$(curl_or_wget)" = "x" ]; then \
- echo "Neither curl nor wget is installed. Install one of these tools unless the net has been downloaded manually"; \
+ echo "Neither curl nor wget is installed. Install one of these tools unless the net has been downloaded manually"; \
fi
@if [ "x$(shasum_command)" = "x" ]; then \
- echo "shasum / sha256sum not found, skipping net validation"; \
- elif test -f "$(nnuenet)"; then \
- if [ "$(nnuenet)" != "nn-"`$(shasum_command) $(nnuenet) | cut -c1-12`".nnue" ]; then \
- echo "Removing invalid network"; rm -f $(nnuenet); \
- fi; \
+ echo "shasum / sha256sum not found, skipping net validation"; \
+ elif test -f "$(nnuenet)"; then \
+ if [ "$(nnuenet)" != "nn-"`$(shasum_command) $(nnuenet) | cut -c1-12`".nnue" ]; then \
+ echo "Removing invalid network"; rm -f $(nnuenet); \
+ fi; \
fi;
@for nnuedownloadurl in "$(nnuedownloadurl1)" "$(nnuedownloadurl2)"; do \
if test -f "$(nnuenet)"; then \
- echo "$(nnuenet) available : OK"; break; \
+ echo "$(nnuenet) available : OK"; break; \
else \
- if [ "x$(curl_or_wget)" != "x" ]; then \
+ if [ "x$(curl_or_wget)" != "x" ]; then \
echo "Downloading $${nnuedownloadurl}"; $(curl_or_wget) $${nnuedownloadurl} > $(nnuenet);\
else \
echo "No net found and download not possible"; exit 1;\
- fi; \
+ fi; \
fi; \
if [ "x$(shasum_command)" != "x" ]; then \
- if [ "$(nnuenet)" != "nn-"`$(shasum_command) $(nnuenet) | cut -c1-12`".nnue" ]; then \
+ if [ "$(nnuenet)" != "nn-"`$(shasum_command) $(nnuenet) | cut -c1-12`".nnue" ]; then \
echo "Removing failed download"; rm -f $(nnuenet); \
- fi; \
+ fi; \
fi; \
done
@if ! test -f "$(nnuenet)"; then \
- echo "Failed to download $(nnuenet)."; \
+ echo "Failed to download $(nnuenet)."; \
fi;
@if [ "x$(shasum_command)" != "x" ]; then \
if [ "$(nnuenet)" = "nn-"`$(shasum_command) $(nnuenet) | cut -c1-12`".nnue" ]; then \