lib/raid6: build proper files on corresponding arch
[firefly-linux-kernel-4.4.55.git] / lib / raid6 / test / Makefile
index 754cbac0f9f80dcadae67b14270227132ae43c24..087332dbf8aa164630148626e33c523dfd52dbf7 100644 (file)
@@ -10,16 +10,31 @@ LD   = ld
 AWK     = awk -f
 AR      = ar
 RANLIB  = ranlib
+OBJS    = int1.o int2.o int4.o int8.o int16.o int32.o recov.o algos.o tables.o
 
 ARCH := $(shell uname -m 2>/dev/null | sed -e /s/i.86/i386/)
 ifeq ($(ARCH),i386)
         CFLAGS += -DCONFIG_X86_32
+        IS_X86 = yes
 endif
 ifeq ($(ARCH),x86_64)
         CFLAGS += -DCONFIG_X86_64
+        IS_X86 = yes
+endif
+
+ifeq ($(IS_X86),yes)
+        OBJS   += mmx.o sse1.o sse2.o avx2.o recov_ssse3.o recov_avx2.o
+        CFLAGS += $(shell echo "vpbroadcastb %xmm0, %ymm1" |   \
+                    gcc -c -x assembler - >&/dev/null &&       \
+                    rm ./-.o && echo -DCONFIG_AS_AVX2=1)
+else
+        HAS_ALTIVEC := $(shell echo -e '\#include <altivec.h>\nvector int a;' |\
+                         gcc -c -x c - >&/dev/null && \
+                         rm ./-.o && echo yes)
+        ifeq ($(HAS_ALTIVEC),yes)
+                OBJS += altivec1.o altivec2.o altivec4.o altivec8.o
+        endif
 endif
-CFLAGS += $(shell echo "vpbroadcastb %xmm0, %ymm1"| gcc -c -x assembler - &&\
-            rm ./-.o && echo -DCONFIG_AS_AVX2=1)
 
 .c.o:
        $(CC) $(CFLAGS) -c -o $@ $<
@@ -32,9 +47,7 @@ CFLAGS += $(shell echo "vpbroadcastb %xmm0, %ymm1"| gcc -c -x assembler - &&\
 
 all:   raid6.a raid6test
 
-raid6.a: int1.o int2.o int4.o int8.o int16.o int32.o mmx.o sse1.o sse2.o avx2.o \
-        altivec1.o altivec2.o altivec4.o altivec8.o recov.o recov_ssse3.o recov_avx2.o algos.o \
-        tables.o
+raid6.a: $(OBJS)
         rm -f $@
         $(AR) cq $@ $^
         $(RANLIB) $@