2010-08-11 00:19:05 +01:00
#
# This is a simple Makefile to test some of the RAID-6 code
# from userspace.
#
CC = gcc
OPTFLAGS = -O2 # Adjust as desired
CFLAGS = -I.. -I ../../../include -g $( OPTFLAGS)
LD = ld
AWK = awk -f
AR = ar
RANLIB = ranlib
2012-11-30 13:10:40 -08:00
OBJS = int1.o int2.o int4.o int8.o int16.o int32.o recov.o algos.o tables.o
2010-08-11 00:19:05 +01:00
2012-11-30 13:10:39 -08:00
ARCH := $( shell uname -m 2>/dev/null | sed -e /s/i.86/i386/)
i f e q ( $( ARCH ) , i 3 8 6 )
CFLAGS += -DCONFIG_X86_32
2012-11-30 13:10:40 -08:00
IS_X86 = yes
2012-11-30 13:10:39 -08:00
e n d i f
i f e q ( $( ARCH ) , x 8 6 _ 6 4 )
CFLAGS += -DCONFIG_X86_64
2012-11-30 13:10:40 -08:00
IS_X86 = yes
e n d i f
2013-05-16 17:20:32 +02:00
i f e q ( $( ARCH ) , a r m )
CFLAGS += -I../../../arch/arm/include -mfpu= neon
HAS_NEON = yes
e n d i f
i f e q ( $( ARCH ) , a r m 6 4 )
CFLAGS += -I../../../arch/arm64/include
HAS_NEON = yes
e n d i f
2012-11-30 13:10:40 -08:00
i f e q ( $( IS_X 86) , y e s )
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)
2013-05-16 17:20:32 +02:00
e l s e i f e q ( $( HAS_NEON ) , y e s )
OBJS += neon.o neon1.o neon2.o neon4.o neon8.o
CFLAGS += -DCONFIG_KERNEL_MODE_NEON= 1
2012-11-30 13:10:40 -08:00
e l s e
2013-08-22 18:53:06 +04:00
HAS_ALTIVEC := $( shell printf '\#include <altivec.h>\nvector int a;\n' | \
2012-11-30 13:10:40 -08:00
gcc -c -x c - >& /dev/null && \
rm ./-.o && echo yes)
ifeq ( $( HAS_ALTIVEC) ,yes)
OBJS += altivec1.o altivec2.o altivec4.o altivec8.o
endif
2012-11-30 13:10:39 -08:00
e n d i f
2013-08-07 12:39:56 -04:00
i f e q ( $( ARCH ) , t i l e g x )
OBJS += tilegx8.o
e n d i f
2012-11-30 13:10:39 -08:00
2010-08-11 00:19:05 +01:00
.c.o :
$( CC) $( CFLAGS) -c -o $@ $<
%.c : ../%.c
cp -f $< $@
%.uc : ../%.uc
cp -f $< $@
all : raid 6.a raid 6test
2012-11-30 13:10:40 -08:00
raid6.a : $( OBJS )
2010-08-11 00:19:05 +01:00
rm -f $@
$( AR) cq $@ $^
$( RANLIB) $@
raid6test : test .c raid 6.a
$( CC) $( CFLAGS) -o raid6test $^
2013-05-16 17:20:32 +02:00
neon1.c : neon .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 1 < neon.uc > $@
neon2.c : neon .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 2 < neon.uc > $@
neon4.c : neon .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 4 < neon.uc > $@
neon8.c : neon .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 8 < neon.uc > $@
2010-08-11 00:19:05 +01:00
altivec1.c : altivec .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 1 < altivec.uc > $@
altivec2.c : altivec .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 2 < altivec.uc > $@
altivec4.c : altivec .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 4 < altivec.uc > $@
altivec8.c : altivec .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 8 < altivec.uc > $@
int1.c : int .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 1 < int.uc > $@
int2.c : int .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 2 < int.uc > $@
int4.c : int .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 4 < int.uc > $@
int8.c : int .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 8 < int.uc > $@
int16.c : int .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 16 < int.uc > $@
int32.c : int .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 32 < int.uc > $@
2013-08-07 12:39:56 -04:00
tilegx8.c : tilegx .uc ../unroll .awk
$( AWK) ../unroll.awk -vN= 8 < tilegx.uc > $@
2010-08-11 00:19:05 +01:00
tables.c : mktables
./mktables > tables.c
clean :
2013-05-16 17:20:32 +02:00
rm -f *.o *.a mktables mktables.c *.uc int*.c altivec*.c neon*.c tables.c raid6test
2013-08-07 12:39:56 -04:00
rm -f tilegx*.c
2010-08-11 00:19:05 +01:00
spotless : clean
rm -f *~