CC         = gcc
CFLAGS     += -Wall -Ofast

Arch       := intel64
IntelDir   := /opt/intel/compilers_and_libraries/linux
IncludeDir := $(IntelDir)/mkl/include
LibDirs    := $(IntelDir)/lib/$(Arch) $(IntelDir)/mkl/lib/$(Arch)
LinkerFlag := -Wl,
Rpath      := $(patsubst %,$(LinkerFlag)-rpath $(LinkerFlag)%,$(LibDirs))
Lpath      := $(patsubst %,-L%,$(LibDirs))

LDFLAGS    += $(Lpath) $(Rpath)
CPPFLAGS   += -I$(IncludeDir) -DMKL_ILP64
LDLIBS     += -lmkl_intel_ilp64 -lmkl_core -lmkl_sequential -lm -lpthread

TARGETS = gemv_bench_sol_row gemv_bench_sol_col

%_row : %.c
	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(LDLIBS) -DROWMAJOR=1 -o $@ $<

%_col : %.c
	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(LDLIBS) -DROWMAJOR=0 -o $@ $<

all: $(TARGETS)

clean:
	$(RM) $(TARGETS)
