]> git.sesse.net Git - stockfish/blobdiff - src/Makefile
Add loongarch64 support
[stockfish] / src / Makefile
index 7b7ee41b6548b368358c9f54342dd05803b16b21..761b40869eeae285f793746fe1771a9e53ec514c 100644 (file)
@@ -20,9 +20,9 @@
 ### ==========================================================================
 
 ### Establish the operating system name
-KERNEL = $(shell uname -s)
+KERNEL := $(shell uname -s)
 ifeq ($(KERNEL),Linux)
-       OS = $(shell uname -o)
+       OS := $(shell uname -o)
 endif
 
 ### Target Windows OS
@@ -33,7 +33,7 @@ ifeq ($(OS),Windows_NT)
 else ifeq ($(COMP),mingw)
        target_windows = yes
        ifeq ($(WINE_PATH),)
-               WINE_PATH = $(shell which wine)
+               WINE_PATH := $(shell which wine)
        endif
 endif
 
@@ -116,7 +116,7 @@ ifeq ($(ARCH),)
 endif
 
 ifeq ($(ARCH), native)
-   override ARCH = $(shell $(SHELL) ../scripts/get_native_properties.sh | cut -d " " -f 1)
+   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),
@@ -125,7 +125,7 @@ ifeq ($(ARCH), $(filter $(ARCH), \
                  x86-64-vnni512 x86-64-vnni256 x86-64-avx512 x86-64-avxvnni x86-64-bmi2 \
                  x86-64-avx2 x86-64-sse41-popcnt x86-64-modern x86-64-ssse3 x86-64-sse3-popcnt \
                  x86-64 x86-32-sse41-popcnt x86-32-sse2 x86-32 ppc-64 ppc-32 e2k \
-                 armv7 armv7-neon armv8 armv8-dotprod apple-silicon general-64 general-32 riscv64))
+                 armv7 armv7-neon armv8 armv8-dotprod apple-silicon general-64 general-32 riscv64 loongarch64))
    SUPPORTED_ARCH=true
 else
    SUPPORTED_ARCH=false
@@ -153,7 +153,7 @@ dotprod = no
 arm_version = 0
 STRIP = strip
 
-ifneq ($(shell command -v clang-format-17),)
+ifneq ($(shell which clang-format-17 2> /dev/null),)
        CLANG-FORMAT = clang-format-17
 else
        CLANG-FORMAT = clang-format
@@ -369,6 +369,10 @@ endif
 ifeq ($(ARCH),riscv64)
        arch = riscv64
 endif
+
+ifeq ($(ARCH),loongarch64)
+       arch = loongarch64
+endif
 endif
 
 
@@ -404,6 +408,8 @@ ifeq ($(COMP),gcc)
                ifeq ($(ARCH),riscv64)
                        CXXFLAGS += -latomic
                endif
+       else ifeq ($(ARCH),loongarch64)
+               CXXFLAGS += -latomic
        else
                CXXFLAGS += -m$(bits)
                LDFLAGS += -m$(bits)
@@ -474,6 +480,8 @@ ifeq ($(COMP),clang)
                ifeq ($(ARCH),riscv64)
                        CXXFLAGS += -latomic
                endif
+       else ifeq ($(ARCH),loongarch64)
+               CXXFLAGS += -latomic
        else
                CXXFLAGS += -m$(bits)
                LDFLAGS += -m$(bits)
@@ -542,8 +550,8 @@ endif
 
 ### Sometimes gcc is really clang
 ifeq ($(COMP),gcc)
-       gccversion = $(shell $(CXX) --version 2>/dev/null)
-       gccisclang = $(findstring clang,$(gccversion))
+       gccversion := $(shell $(CXX) --version 2>/dev/null)
+       gccisclang := $(findstring clang,$(gccversion))
        ifneq ($(gccisclang),)
                profile_make = clang-profile-make
                profile_use = clang-profile-use
@@ -601,7 +609,7 @@ ifeq ($(optimize),yes)
        endif
 
        ifeq ($(comp),clang)
-               clangmajorversion = $(shell $(CXX) -dumpversion 2>/dev/null | cut -f1 -d.)
+               clangmajorversion := $(shell $(CXX) -dumpversion 2>/dev/null | cut -f1 -d.)
                ifeq ($(shell expr $(clangmajorversion) \< 16),1)
                        CXXFLAGS += -fexperimental-new-pass-manager
                endif
@@ -717,13 +725,13 @@ ifeq ($(pext),yes)
 endif
 
 ### 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)
+GIT_SHA := $(shell git rev-parse HEAD 2>/dev/null | cut -c 1-8)
 ifneq ($(GIT_SHA), )
        CXXFLAGS += -DGIT_SHA=$(GIT_SHA)
 endif
 
 ### 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)
+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
@@ -823,6 +831,7 @@ help:
        @echo "general-64              > unspecified 64-bit"
        @echo "general-32              > unspecified 32-bit"
        @echo "riscv64                 > RISC-V 64-bit"
+       @echo "loongarch64             > LoongArch 64-bit"
        @echo ""
        @echo "Supported compilers:"
        @echo ""
@@ -854,7 +863,8 @@ endif
        objclean profileclean config-sanity \
        icx-profile-use icx-profile-make \
        gcc-profile-use gcc-profile-make \
-       clang-profile-use clang-profile-make FORCE
+       clang-profile-use clang-profile-make FORCE \
+       format analyze
 
 analyze: net config-sanity objclean
        $(MAKE) -k ARCH=$(ARCH) COMP=$(COMP) $(OBJS)
@@ -951,7 +961,7 @@ net: netvariables
        fi; \
 
 format:
-       $(CLANG-FORMAT) -i $(SRCS) $(HEADERS) -style=file:../.clang-format
+       $(CLANG-FORMAT) -i $(SRCS) $(HEADERS) -style=file
 
 # default target
 default:
@@ -1003,7 +1013,7 @@ config-sanity: net
        @test "$(SUPPORTED_ARCH)" = "true"
        @test "$(arch)" = "any" || test "$(arch)" = "x86_64" || test "$(arch)" = "i386" || \
         test "$(arch)" = "ppc64" || test "$(arch)" = "ppc" || test "$(arch)" = "e2k" || \
-        test "$(arch)" = "armv7" || test "$(arch)" = "armv8" || test "$(arch)" = "arm64" || test "$(arch)" = "riscv64"
+        test "$(arch)" = "armv7" || test "$(arch)" = "armv8" || test "$(arch)" = "arm64" || test "$(arch)" = "riscv64" || test "$(arch)" = "loongarch64"
        @test "$(bits)" = "32" || test "$(bits)" = "64"
        @test "$(prefetch)" = "yes" || test "$(prefetch)" = "no"
        @test "$(popcnt)" = "yes" || test "$(popcnt)" = "no"