#
# This is a simple Makefile to test some of the RAID-6 code
# from userspace.
#

CC	 = gcc
OPTFLAGS = -O2			# Adjust as desired
CFLAGS	 = -I.. -g $(OPTFLAGS)
LD	 = ld
PERL	 = perl
AR	 = ar
RANLIB	 = ranlib

.c.o:
	$(CC) $(CFLAGS) -c -o $@ $<

%.c: ../%.c
	cp -f $< $@

%.uc: ../%.uc
	cp -f $< $@

all:	raid6.a raid6test

raid6.a: raid6int1.o raid6int2.o raid6int4.o raid6int8.o raid6int16.o \
	 raid6int32.o \
	 raid6mmx.o raid6sse1.o raid6sse2.o \
	 raid6altivec1.o raid6altivec2.o raid6altivec4.o raid6altivec8.o \
	 raid6recov.o raid6algos.o \
	 raid6tables.o
	 rm -f $@
	 $(AR) cq $@ $^
	 $(RANLIB) $@

raid6test: test.c raid6.a
	$(CC) $(CFLAGS) -o raid6test $^

raid6altivec1.c: raid6altivec.uc ../unroll.pl
	$(PERL) ../unroll.pl 1 < raid6altivec.uc > $@

raid6altivec2.c: raid6altivec.uc ../unroll.pl
	$(PERL) ../unroll.pl 2 < raid6altivec.uc > $@

raid6altivec4.c: raid6altivec.uc ../unroll.pl
	$(PERL) ../unroll.pl 4 < raid6altivec.uc > $@

raid6altivec8.c: raid6altivec.uc ../unroll.pl
	$(PERL) ../unroll.pl 8 < raid6altivec.uc > $@

raid6int1.c: raid6int.uc ../unroll.pl
	$(PERL) ../unroll.pl 1 < raid6int.uc > $@

raid6int2.c: raid6int.uc ../unroll.pl
	$(PERL) ../unroll.pl 2 < raid6int.uc > $@

raid6int4.c: raid6int.uc ../unroll.pl
	$(PERL) ../unroll.pl 4 < raid6int.uc > $@

raid6int8.c: raid6int.uc ../unroll.pl
	$(PERL) ../unroll.pl 8 < raid6int.uc > $@

raid6int16.c: raid6int.uc ../unroll.pl
	$(PERL) ../unroll.pl 16 < raid6int.uc > $@

raid6int32.c: raid6int.uc ../unroll.pl
	$(PERL) ../unroll.pl 32 < raid6int.uc > $@

raid6tables.c: mktables
	./mktables > raid6tables.c

clean:
	rm -f *.o *.a mktables mktables.c raid6int.uc raid6*.c raid6test

spotless: clean
	rm -f *~
