]> git.sesse.net Git - stockfish/blobdiff - src/Makefile
Fixes for ARM compilation
[stockfish] / src / Makefile
index e5564eff0ef39ee9152a7840c008e56e2a6d71f0..9ec071a1d0bdbcc10832bc8ab24f386b8f3a09b7 100644 (file)
 ### ==========================================================================
 
 ### Establish the operating system name
 ### ==========================================================================
 
 ### Establish the operating system name
-UNAME = $(shell uname)
+KERNEL = $(shell uname -s)
+ifneq ($(KERNEL),Darwin)
+       OS = $(shell uname -o)
+endif
 
 ### Executable name
 EXE = stockfish
 
 ### Executable name
 EXE = stockfish
@@ -145,8 +148,17 @@ endif
 ifeq ($(COMP),gcc)
        comp=gcc
        CXX=g++
 ifeq ($(COMP),gcc)
        comp=gcc
        CXX=g++
-       CXXFLAGS += -pedantic -Wextra -Wshadow -m$(bits)
-       ifneq ($(UNAME),Darwin)
+       CXXFLAGS += -pedantic -Wextra -Wshadow
+
+       ifeq ($(ARCH),armv7)
+               ifeq ($(OS),Android)
+                       CXXFLAGS += -m$(bits)
+               endif
+       else
+               CXXFLAGS += -m$(bits)
+       endif
+
+       ifneq ($(KERNEL),Darwin)
           LDFLAGS += -Wl,--no-as-needed
        endif
 endif
           LDFLAGS += -Wl,--no-as-needed
        endif
 endif
@@ -154,7 +166,7 @@ endif
 ifeq ($(COMP),mingw)
        comp=mingw
 
 ifeq ($(COMP),mingw)
        comp=mingw
 
-       ifeq ($(UNAME),Linux)
+       ifeq ($(KERNEL),Linux)
                ifeq ($(bits),64)
                        ifeq ($(shell which x86_64-w64-mingw32-c++-posix),)
                                CXX=x86_64-w64-mingw32-c++
                ifeq ($(bits),64)
                        ifeq ($(shell which x86_64-w64-mingw32-c++-posix),)
                                CXX=x86_64-w64-mingw32-c++
@@ -185,9 +197,19 @@ endif
 ifeq ($(COMP),clang)
        comp=clang
        CXX=clang++
 ifeq ($(COMP),clang)
        comp=clang
        CXX=clang++
-       CXXFLAGS += -pedantic -Wextra -Wshadow -m$(bits)
-       LDFLAGS += -m$(bits)
-       ifeq ($(UNAME),Darwin)
+       CXXFLAGS += -pedantic -Wextra -Wshadow
+
+       ifeq ($(ARCH),armv7)
+               ifeq ($(OS),Android)
+                       CXXFLAGS += -m$(bits)
+                       LDFLAGS += -m$(bits)
+               endif
+       else
+               CXXFLAGS += -m$(bits)
+               LDFLAGS += -m$(bits)
+       endif
+
+       ifeq ($(KERNEL),Darwin)
                CXXFLAGS += -stdlib=libc++
                DEPENDFLAGS += -stdlib=libc++
        endif
                CXXFLAGS += -stdlib=libc++
                DEPENDFLAGS += -stdlib=libc++
        endif
@@ -205,7 +227,7 @@ else
        profile_clean = gcc-profile-clean
 endif
 
        profile_clean = gcc-profile-clean
 endif
 
-ifeq ($(UNAME),Darwin)
+ifeq ($(KERNEL),Darwin)
        CXXFLAGS += -arch $(arch) -mmacosx-version-min=10.9
        LDFLAGS += -arch $(arch) -mmacosx-version-min=10.9
 endif
        CXXFLAGS += -arch $(arch) -mmacosx-version-min=10.9
        LDFLAGS += -arch $(arch) -mmacosx-version-min=10.9
 endif
@@ -223,9 +245,9 @@ endif
 ### On mingw use Windows threads, otherwise POSIX
 ifneq ($(comp),mingw)
        # On Android Bionic's C library comes with its own pthread implementation bundled in
 ### On mingw use Windows threads, otherwise POSIX
 ifneq ($(comp),mingw)
        # On Android Bionic's C library comes with its own pthread implementation bundled in
-       ifneq ($(arch),armv7)
+       ifneq ($(OS),Android)
                # Haiku has pthreads in its libroot, so only link it in on other platforms
                # Haiku has pthreads in its libroot, so only link it in on other platforms
-               ifneq ($(UNAME),Haiku)
+               ifneq ($(KERNEL),Haiku)
                        LDFLAGS += -lpthread
                endif
        endif
                        LDFLAGS += -lpthread
                endif
        endif
@@ -245,7 +267,7 @@ ifeq ($(optimize),yes)
 
        ifeq ($(comp),gcc)
 
 
        ifeq ($(comp),gcc)
 
-               ifeq ($(UNAME),Darwin)
+               ifeq ($(KERNEL),Darwin)
                        ifeq ($(arch),i386)
                                CXXFLAGS += -mdynamic-no-pic
                        endif
                        ifeq ($(arch),i386)
                                CXXFLAGS += -mdynamic-no-pic
                        endif
@@ -254,19 +276,19 @@ ifeq ($(optimize),yes)
                        endif
                endif
 
                        endif
                endif
 
-               ifeq ($(arch),armv7)
+               ifeq ($(OS), Android)
                        CXXFLAGS += -fno-gcse -mthumb -march=armv7-a -mfloat-abi=softfp
                endif
        endif
 
        ifeq ($(comp),icc)
                        CXXFLAGS += -fno-gcse -mthumb -march=armv7-a -mfloat-abi=softfp
                endif
        endif
 
        ifeq ($(comp),icc)
-               ifeq ($(UNAME),Darwin)
+               ifeq ($(KERNEL),Darwin)
                        CXXFLAGS += -mdynamic-no-pic
                endif
        endif
 
        ifeq ($(comp),clang)
                        CXXFLAGS += -mdynamic-no-pic
                endif
        endif
 
        ifeq ($(comp),clang)
-               ifeq ($(UNAME),Darwin)
+               ifeq ($(KERNEL),Darwin)
                        ifeq ($(pext),no)
                                CXXFLAGS += -flto
                                LDFLAGS += $(CXXFLAGS)
                        ifeq ($(pext),no)
                                CXXFLAGS += -flto
                                LDFLAGS += $(CXXFLAGS)
@@ -326,7 +348,7 @@ ifeq ($(comp),gcc)
 endif
 
 ifeq ($(comp),mingw)
 endif
 
 ifeq ($(comp),mingw)
-       ifeq ($(UNAME),Linux)
+       ifeq ($(KERNEL),Linux)
        ifeq ($(optimize),yes)
        ifeq ($(debug),no)
                CXXFLAGS += -flto
        ifeq ($(optimize),yes)
        ifeq ($(debug),no)
                CXXFLAGS += -flto
@@ -338,7 +360,7 @@ endif
 
 ### 3.9 Android 5 can only run position independent executables. Note that this
 ### breaks Android 4.0 and earlier.
 
 ### 3.9 Android 5 can only run position independent executables. Note that this
 ### breaks Android 4.0 and earlier.
-ifeq ($(arch),armv7)
+ifeq ($(OS), Android)
        CXXFLAGS += -fPIE
        LDFLAGS += -fPIE -pie
 endif
        CXXFLAGS += -fPIE
        LDFLAGS += -fPIE -pie
 endif
@@ -446,6 +468,8 @@ config-sanity:
        @echo "optimize: '$(optimize)'"
        @echo "arch: '$(arch)'"
        @echo "bits: '$(bits)'"
        @echo "optimize: '$(optimize)'"
        @echo "arch: '$(arch)'"
        @echo "bits: '$(bits)'"
+       @echo "kernel: '$(KERNEL)'"
+       @echo "os: '$(OS)'"
        @echo "prefetch: '$(prefetch)'"
        @echo "popcnt: '$(popcnt)'"
        @echo "sse: '$(sse)'"
        @echo "prefetch: '$(prefetch)'"
        @echo "popcnt: '$(popcnt)'"
        @echo "sse: '$(sse)'"