CXX      = g++
CC       = gcc
SDIR     = .
ISCl     = $(HOME)/lib/libscl/gpp
LSCl     = $(HOME)/lib/libscl/gpp
CXXFLAGS = -fopenmp -O2 -Wall -c -I$(SDIR) -I$(ISCl)
CFLAGS   = -fopenmp -O2 -Wall -c 
LDFLAGS  = -fopenmp -lm -L$(LSCl) -lscl             

PROGRAMS = hello mult0 mult1 mult2 mult2.clock frobnorm omp_mm

all : $(PROGRAMS)

hello : hello.o 
	$(CXX) -o hello hello.o $(LDFLAGS) 

hello.o : $(SDIR)/hello.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/hello.cpp

mult0 : mult0.o 
	$(CXX) -o mult0 mult0.o $(LDFLAGS) 

mult0.o : $(SDIR)/mult0.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/mult0.cpp

mult1 : mult1.o 
	$(CXX) -o mult1 mult1.o $(LDFLAGS) 

mult1.o : $(SDIR)/mult1.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/mult1.cpp

mult2 : mult2.o 
	$(CXX) -o mult2 mult2.o $(LDFLAGS) 

mult2.o : $(SDIR)/mult2.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/mult2.cpp

mult2.clock : mult2.clock.o 
	$(CXX) -o mult2.clock mult2.clock.o $(LDFLAGS) 

mult2.clock.o : $(SDIR)/mult2.clock.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/mult2.clock.cpp

frobnorm : frobnorm.o 
	$(CXX) -o frobnorm frobnorm.o $(LDFLAGS) 

frobnorm.o : $(SDIR)/frobnorm.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/frobnorm.cpp

omp_mm : omp_mm.o 
	$(CC) -o omp_mm omp_mm.o $(LDFLAGS) 

omp_mm.o : $(SDIR)/omp_mm.c
	$(CC) $(CFLAGS) $(SDIR)/omp_mm.c

clean :
	rm -f *.o
	rm -f core core.*

veryclean :
	rm -f *.o
	rm -f core core.*
	rm -f $(PROGRAMS)
