]> git.sesse.net Git - stockfish/blobdiff - src/Makefile
Remove handcrafted MMX code
[stockfish] / src / Makefile
index f5a420b7ce08084f90ada781acbcad7ea1bbebaa..5b43c35fdd7e838ad4c54850520f73a338fcbf7f 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 $(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), \
@@ -670,7 +674,6 @@ ifeq ($(sse2),yes)
 endif
 
 ifeq ($(mmx),yes)
-       CXXFLAGS += -DUSE_MMX
        ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
                CXXFLAGS += -mmmx
        endif
@@ -699,19 +702,24 @@ ifeq ($(pext),yes)
        endif
 endif
 
-### 3.7.1 Try to include git commit sha for versioning
+### 3.8.1 Try to include git commit sha for versioning
 GIT_SHA = $(shell git rev-parse HEAD 2>/dev/null | cut -c 1-8)
 ifneq ($(GIT_SHA), )
        CXXFLAGS += -DGIT_SHA=$(GIT_SHA)
 endif
 
-### 3.7.2 Try to include git commit date for versioning
+### 3.8.2 Try to include git commit date for versioning
 GIT_DATE = $(shell git show -s --date=format:'%Y%m%d' --format=%cd HEAD 2>/dev/null)
 ifneq ($(GIT_DATE), )
        CXXFLAGS += -DGIT_DATE=$(GIT_DATE)
 endif
 
-### 3.8 Link Time Optimization
+### 3.8.3 Try to include architecture
+ifneq ($(ARCH), )
+       CXXFLAGS += -DARCH=$(ARCH)
+endif
+
+### 3.9 Link Time Optimization
 ### This is a mix of compile and link time options because the lto link phase
 ### needs access to the optimization flags.
 ifeq ($(optimize),yes)
@@ -746,7 +754,7 @@ ifeq ($(debug), no)
 endif
 endif
 
-### 3.9 Android 5 can only run position independent executables. Note that this
+### 3.10 Android 5 can only run position independent executables. Note that this
 ### breaks Android 4.0 and earlier.
 ifeq ($(OS), Android)
        CXXFLAGS += -fPIE
@@ -757,12 +765,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 +783,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"
@@ -785,11 +793,11 @@ help:
        @echo "x86-64-sse41-popcnt     > x86 64-bit with sse41 and popcnt support"
        @echo "x86-64-modern           > deprecated, 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-sse3-popcnt      > x86 64-bit with sse3 compile and popcnt support"
        @echo "x86-64                  > x86 64-bit generic (with sse2 support)"
        @echo "x86-32-sse41-popcnt     > x86 32-bit with sse41 and popcnt support"
        @echo "x86-32-sse2             > x86 32-bit with sse2 support"
-       @echo "x86-32                  > x86 32-bit generic (with mmx and sse support)"
+       @echo "x86-32                  > x86 32-bit generic (with mmx compile support)"
        @echo "ppc-64                  > PPC 64-bit"
        @echo "ppc-32                  > PPC 32-bit"
        @echo "armv7                   > ARMv7 32-bit"
@@ -822,22 +830,21 @@ 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
 
 
-.PHONY: help build profile-build strip install clean net objclean profileclean \
-       config-sanity \
+.PHONY: help analyze build profile-build strip install clean net \
+       objclean profileclean config-sanity \
        icx-profile-use icx-profile-make \
        gcc-profile-use gcc-profile-make \
        clang-profile-use clang-profile-make FORCE
 
+analyze: net config-sanity objclean
+       $(MAKE) -k ARCH=$(ARCH) COMP=$(COMP) $(OBJS)
+
 build: net config-sanity
        $(MAKE) ARCH=$(ARCH) COMP=$(COMP) all