CPUCC    = g++
GPUCC    = nvcc
SDIR     = .
ISCL     = ../../libscl_float/gpp
LSCL     = ../../libscl_float/gpp
ICUDA    = /usr/local/cuda/include
LCUDA    = /usr/local/cuda/lib
CPUFLAGS = -O2 -Wall -c -I$(ICUDA) -I$(SDIR) -I$(ISCL)
GPUFLAGS = -O -c -I$(ICUDA) -I$(SDIR)
LFLAGS   = -L$(LCUDA) -lcuda -lcudart -lcublas -L$(LSCL) -lscl -lm 

PROGRAMS = device

LIBRARIES = libscl.a

all : $(LIBRARIES) $(PROGRAMS) 

libscl.a :
	make -C $(LSCL)

device : device.o $(LIBRARIES)
	$(CPUCC) -o device device.o $(OBJECTS) $(LFLAGS) 

device.o : $(SDIR)/device.cpp
	$(CPUCC) $(CPUFLAGS) $(SDIR)/device.cpp

clean :
	make -C $(LSCL) clean
	rm -f *.o
	rm -f core core.*

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

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