SRC = naif.c kij.c ikj.c jik.c jki.c kji.c naif_sse2.c ikj_sse2.c ikj_avx2.c unroll.c block.c
OBJ = ${SRC:.c=.txt}
CC = gcc8
CFLAGS = -Wall -Wextra -O2
CLIBS = -lrt -march=native

MIN =  120
MAX = 1400
STEP =  40

.SUFFIXES:
.SUFFIXES: .c .txt

all: timings

.c.txt:
	@/bin/echo "==== $* ===="
	@${CC} ${CFLAGS} ${CLIBS} -DN=8 -DDEBUG naif.c -o naif.bin
	@${CC} ${CFLAGS} ${CLIBS} -DN=8 -DDEBUG $<     -o $*.bin
	@./naif.bin >/dev/null 2>naif.debug
	@./$*.bin   >/dev/null 2>$*.debug
	@diff -q $*.debug naif.debug
	@for n in `seq ${MIN} ${STEP} ${MAX}` ; do         \
	   ${CC} ${CFLAGS} ${CLIBS} -DN=$$n $< -o $*.bin ; \
	   ./$*.bin ;                                      \
	 done | tee $@

timings: ${OBJ}
	@(/bin/echo "set key left" ;                     \
	  /bin/echo -n "plot " ;                         \
	  for files in ${OBJ} ; do                       \
	      /bin/echo -n "'$$files' w lines, " ;       \
	  done ;                                         \
	  /bin/echo) | sed '2s/, $$//g' | gnuplot -p

clean:
	@rm -fv *~ ${SRC:.c=.bin} ${SRC:.c=.debug}

distclean: clean
	@rm -fv ${OBJ}


