###
#
# @file Makefile
#
#  PLASMA is a software package provided by Univ. of Tennessee,
#  Univ. of California Berkeley and Univ. of Colorado Denver
#
# @version 2.2.0
# @author Mathieu Faverge
# @date 2009-11-15
#
###

PLASMA_DIR = ..
include ../Makefile.internal

CFLAGS  += -I../control/ $(INC)
LDFLAGS += $(LIB)

AUX_H = auxiliary.h 	\
	sauxiliary.h	\
	dauxiliary.h	\
	cauxiliary.h	\
	zauxiliary.h

HEADERS = $(AUX_H)    	\
	timing.h	\
	timing.c

NAMES = posv potrf posv_tile potrf_tile \
	gesv gesv_tile getrf_tile \
	gels gels_tile geqrf_tile \
	gemm gemm_tile

#gesv posv gels getrf potrf geqrf

ZSRC = $(NAMES:%=time_z%.c)
CSRC = $(NAMES:%=time_c%.c)
DSRC = $(NAMES:%=time_d%.c)
SSRC = $(NAMES:%=time_s%.c)

SRC = $(ZSRC) $(CSRC) $(DSRC) $(SSRC)
OBJ = $(SRC:.c=.o)
EXE = $(OBJ:.o=)

all: $(EXE)

clean:
	rm -f *.o *~

cleanall: clean
	rm -f $(EXE)

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

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

zplghe.o : zplghe.c
	$(CC) $(CFLAGS) -c $< -o $@
cplghe.o : cplghe.c
	$(CC) $(CFLAGS) -c $< -o $@
splgsy.o : splgsy.c
	$(CC) $(CFLAGS) -c $< -o $@
dplgsy.o : dplgsy.c
	$(CC) $(CFLAGS) -c $< -o $@


time_s% : time_s%.o sauxiliary.o splgsy.o $(LIBCOREBLAS) $(LIBPLASMA) $(QUARKDIR)/libquark.a
	$(LOADER) $^ -o $@ $(LDFLAGS)

time_d% : time_d%.o dauxiliary.o dplgsy.o $(LIBCOREBLAS) $(LIBPLASMA) $(QUARKDIR)/libquark.a
	$(LOADER) $^ -o $@ $(LDFLAGS)

time_c% : time_c%.o cauxiliary.o cplghe.o $(LIBCOREBLAS) $(LIBPLASMA) $(QUARKDIR)/libquark.a
	$(LOADER) $^ -o $@ $(LDFLAGS)

time_z% : time_z%.o zauxiliary.o zplghe.o $(LIBCOREBLAS) $(LIBPLASMA) $(QUARKDIR)/libquark.a
	  $(LOADER) $^ -o $@ $(LDFLAGS)

png: time_dgesv time_zgesv
	./time_dgesv --gnuplot-png | tee timeplot.gpt ; gnuplot timeplot.gpt

.PHONY: all clean

