]> git.sesse.net Git - stockfish/blobdiff - src/Makefile
ARM lsb/msb assembly
[stockfish] / src / Makefile
index 71aa7b30d195370738bcab3705f4385b7328b308..17e61773d19615b6289e085881ddb927ac44c9c9 100644 (file)
 ### Section 1. General Configuration
 ### ==========================================================================
 
+### Establish the operating system name
+UNAME = $(shell uname)
+
 ### Executable name
 EXE = stockfish
 
 ### Installation dir definitions
 PREFIX = /usr/local
+# Haiku has a non-standard filesystem layout
+ifeq ($(UNAME),Haiku)
+       PREFIX=/boot/common
+endif
 BINDIR = $(PREFIX)/bin
 
 ### Built-in benchmark for pgo-builds
@@ -32,7 +39,7 @@ PGOBENCH = ./$(EXE) bench 32 1 10 default depth
 
 ### Object files
 OBJS = benchmark.o bitbase.o bitboard.o book.o endgame.o evaluate.o main.o \
-       material.o misc.o move.o movegen.o movepick.o pawns.o position.o \
+       material.o misc.o movegen.o movepick.o notation.o pawns.o position.o \
        search.o thread.o timeman.o tt.o uci.o ucioption.o
 
 ### ==========================================================================
@@ -118,6 +125,16 @@ ifeq ($(ARCH),x86-32-old)
        popcnt = no
 endif
 
+#arm section
+ifeq ($(ARCH),armv7)
+       arch = armv7
+       os = any
+       bits = 32
+       prefetch = yes
+       bsfq = yes
+       popcnt = no
+endif
+
 # osx-section
 ifeq ($(ARCH),osx-ppc-64)
        arch = ppc64
@@ -221,7 +238,7 @@ ifeq ($(comp),clang)
 endif
 
 ifeq ($(os),osx)
-       CXXFLAGS += -arch $(arch)
+       CXXFLAGS += -arch $(arch) -mmacosx-version-min=10.6
 endif
 
 ### 3.3 General linker settings
@@ -229,11 +246,14 @@ LDFLAGS = $(EXTRALDFLAGS)
 
 ### On mingw use Windows threads, otherwise POSIX
 ifneq ($(comp),mingw)
-       LDFLAGS += -lpthread
+       # Haiku has pthreads in its libroot, so only link it in on other platforms
+       ifneq ($(UNAME),Haiku)
+               LDFLAGS += -lpthread
+       endif
 endif
 
 ifeq ($(os),osx)
-       LDFLAGS += -arch $(arch)
+       LDFLAGS += -arch $(arch) -mmacosx-version-min=10.6
 endif
 
 ### 3.4 Debugging
@@ -255,6 +275,10 @@ ifeq ($(optimize),yes)
                                CXXFLAGS += -mdynamic-no-pic
                        endif
                endif
+
+               ifeq ($(arch),armv7)
+                       CXXFLAGS += -fno-gcse
+               endif
        endif
 
        ifeq ($(comp),mingw)
@@ -270,6 +294,7 @@ ifeq ($(optimize),yes)
        endif
 
        ifeq ($(comp),clang)
+               ### -O4 requires a linker that supports LLVM's LTO
                CXXFLAGS += -O3
 
                ifeq ($(os),osx)
@@ -290,8 +315,10 @@ endif
 
 ### 3.7 prefetch
 ifeq ($(prefetch),yes)
-       CXXFLAGS += -msse
-       DEPENDFLAGS += -msse
+       ifneq ($(arch),armv7)
+               CXXFLAGS += -msse
+               DEPENDFLAGS += -msse
+       endif
 else
        CXXFLAGS += -DNO_PREFETCH
 endif
@@ -310,11 +337,13 @@ endif
 ### This is a mix of compile and link time options because the lto link phase
 ### needs access to the optimization flags.
 ifeq ($(comp),gcc)
-       GCC_MAJOR := `$(CXX) -dumpversion | cut -f1 -d.`
-       GCC_MINOR := `$(CXX) -dumpversion | cut -f2 -d.`
-       ifeq (1,$(shell expr \( $(GCC_MAJOR) \> 4 \) \| \( $(GCC_MAJOR) \= 4 \& $(GCC_MINOR) \>= 5 \)))
-               CXXFLAGS += -flto
-               LDFLAGS += $(CXXFLAGS)
+       ifeq ($(optimize),yes)
+               GCC_MAJOR := `$(CXX) -dumpversion | cut -f1 -d.`
+               GCC_MINOR := `$(CXX) -dumpversion | cut -f2 -d.`
+               ifeq (1,$(shell expr \( $(GCC_MAJOR) \> 4 \) \| \( $(GCC_MAJOR) \= 4 \& $(GCC_MINOR) \>= 5 \)))
+                       CXXFLAGS += -flto
+                       LDFLAGS += $(CXXFLAGS)
+               endif
        endif
 endif
 
@@ -347,6 +376,7 @@ help:
        @echo "osx-ppc-32           > PPC-Mac OS X 32 bit"
        @echo "osx-x86-64           > x86-Mac OS X 64 bit"
        @echo "osx-x86-32           > x86-Mac OS X 32 bit"
+       @echo "armv7                > ARMv7 32 bit"
        @echo "general-64           > unspecified 64-bit"
        @echo "general-32           > unspecified 32-bit"
        @echo ""
@@ -436,7 +466,7 @@ config-sanity:
        @test "$(debug)" = "yes" || test "$(debug)" = "no"
        @test "$(optimize)" = "yes" || test "$(optimize)" = "no"
        @test "$(arch)" = "any" || test "$(arch)" = "x86_64" || test "$(arch)" = "i386" || \
-        test "$(arch)" = "ppc64" || test "$(arch)" = "ppc"
+        test "$(arch)" = "ppc64" || test "$(arch)" = "ppc" || test "$(arch)" = "armv7"
        @test "$(os)" = "any" || test "$(os)" = "osx"
        @test "$(bits)" = "32" || test "$(bits)" = "64"
        @test "$(prefetch)" = "yes" || test "$(prefetch)" = "no"