1 # SPDX-License-Identifier: GPL-2.0
3 # This is a simple Makefile to test some of the RAID-6 code
8 OPTFLAGS
= -O2
# Adjust as desired
9 CFLAGS
= -I..
-I ..
/..
/..
/include -g
$(OPTFLAGS
)
14 OBJS
= int1.o int2.o int4.o int8.o int16.o int32.o recov.o algos.o tables.o
16 ARCH
:= $(shell uname
-m
2>/dev
/null | sed
-e
/s
/i
.86/i386
/)
18 CFLAGS
+= -DCONFIG_X86_32
22 CFLAGS
+= -DCONFIG_X86_64
27 CFLAGS
+= -I..
/..
/..
/arch
/arm
/include -mfpu
=neon
30 ifeq ($(ARCH
),aarch64
)
31 CFLAGS
+= -I..
/..
/..
/arch
/arm64
/include
36 OBJS
+= mmx.o sse1.o sse2.o avx2.o recov_ssse3.o recov_avx2.o avx512.o recov_avx512.o
37 CFLAGS
+= $(shell echo
"pshufb %xmm0, %xmm0" | \
38 gcc
-c
-x assembler
- >&/dev
/null
&& \
39 rm .
/-.o
&& echo
-DCONFIG_AS_SSSE3
=1)
40 CFLAGS
+= $(shell echo
"vpbroadcastb %xmm0, %ymm1" | \
41 gcc
-c
-x assembler
- >&/dev
/null
&& \
42 rm .
/-.o
&& echo
-DCONFIG_AS_AVX2
=1)
43 CFLAGS
+= $(shell echo
"vpmovm2b %k1, %zmm5" | \
44 gcc
-c
-x assembler
- >&/dev
/null
&& \
45 rm .
/-.o
&& echo
-DCONFIG_AS_AVX512
=1)
46 else ifeq ($(HAS_NEON
),yes
)
47 OBJS
+= neon.o neon1.o neon2.o neon4.o neon8.o recov_neon.o recov_neon_inner.o
48 CFLAGS
+= -DCONFIG_KERNEL_MODE_NEON
=1
50 HAS_ALTIVEC
:= $(shell printf
'\#include <altivec.h>\nvector int a;\n' |\
51 gcc
-c
-x c
- >/dev
/null
&& rm .
/-.o
&& echo yes
)
52 ifeq ($(HAS_ALTIVEC
),yes
)
53 CFLAGS
+= -I..
/..
/..
/arch
/powerpc
/include
54 CFLAGS
+= -DCONFIG_ALTIVEC
55 OBJS
+= altivec1.o altivec2.o altivec4.o altivec8.o \
56 vpermxor1.o vpermxor2.o vpermxor4.o vpermxor8.o
61 $(CC
) $(CFLAGS
) -c
-o
$@
$<
69 all: raid6.a raid6test
76 raid6test
: test.c raid6.a
77 $(CC
) $(CFLAGS
) -o raid6test
$^
79 neon1.c
: neon.uc ..
/unroll.awk
80 $(AWK
) ..
/unroll.awk
-vN
=1 < neon.uc
> $@
82 neon2.c
: neon.uc ..
/unroll.awk
83 $(AWK
) ..
/unroll.awk
-vN
=2 < neon.uc
> $@
85 neon4.c
: neon.uc ..
/unroll.awk
86 $(AWK
) ..
/unroll.awk
-vN
=4 < neon.uc
> $@
88 neon8.c
: neon.uc ..
/unroll.awk
89 $(AWK
) ..
/unroll.awk
-vN
=8 < neon.uc
> $@
91 altivec1.c
: altivec.uc ..
/unroll.awk
92 $(AWK
) ..
/unroll.awk
-vN
=1 < altivec.uc
> $@
94 altivec2.c
: altivec.uc ..
/unroll.awk
95 $(AWK
) ..
/unroll.awk
-vN
=2 < altivec.uc
> $@
97 altivec4.c
: altivec.uc ..
/unroll.awk
98 $(AWK
) ..
/unroll.awk
-vN
=4 < altivec.uc
> $@
100 altivec8.c
: altivec.uc ..
/unroll.awk
101 $(AWK
) ..
/unroll.awk
-vN
=8 < altivec.uc
> $@
103 vpermxor1.c
: vpermxor.uc ..
/unroll.awk
104 $(AWK
) ..
/unroll.awk
-vN
=1 < vpermxor.uc
> $@
106 vpermxor2.c
: vpermxor.uc ..
/unroll.awk
107 $(AWK
) ..
/unroll.awk
-vN
=2 < vpermxor.uc
> $@
109 vpermxor4.c
: vpermxor.uc ..
/unroll.awk
110 $(AWK
) ..
/unroll.awk
-vN
=4 < vpermxor.uc
> $@
112 vpermxor8.c
: vpermxor.uc ..
/unroll.awk
113 $(AWK
) ..
/unroll.awk
-vN
=8 < vpermxor.uc
> $@
115 int1.c
: int.uc ..
/unroll.awk
116 $(AWK
) ..
/unroll.awk
-vN
=1 < int.uc
> $@
118 int2.c
: int.uc ..
/unroll.awk
119 $(AWK
) ..
/unroll.awk
-vN
=2 < int.uc
> $@
121 int4.c
: int.uc ..
/unroll.awk
122 $(AWK
) ..
/unroll.awk
-vN
=4 < int.uc
> $@
124 int8.c
: int.uc ..
/unroll.awk
125 $(AWK
) ..
/unroll.awk
-vN
=8 < int.uc
> $@
127 int16.c
: int.uc ..
/unroll.awk
128 $(AWK
) ..
/unroll.awk
-vN
=16 < int.uc
> $@
130 int32.c
: int.uc ..
/unroll.awk
131 $(AWK
) ..
/unroll.awk
-vN
=32 < int.uc
> $@
134 .
/mktables
> tables.c
137 rm -f
*.o
*.a mktables mktables.c
*.uc int
*.c altivec
*.c vpermxor
*.c neon
*.c tables.c raid6test