]> git.sesse.net Git - stockfish/blobdiff - src/Makefile
Export makefile ARCH in binary
[stockfish] / src / Makefile
index 0a3f8329859d140b020e527a8a30c2e5b3d95491..e7c06389bdd5d57917c0fac5a34c7951a50ddfb4 100644 (file)
@@ -104,9 +104,13 @@ VPATH = syzygy:nnue:nnue/features
 ### 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), \
@@ -711,6 +715,11 @@ ifneq ($(GIT_DATE), )
        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.
@@ -757,12 +766,11 @@ endif
 ### 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 ""
@@ -776,6 +784,7 @@ help:
        @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"
@@ -804,8 +813,8 @@ help:
        @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"
@@ -822,11 +831,7 @@ help:
        @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
@@ -895,33 +900,33 @@ netvariables:
 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 \