CXX      = g++
SDIR     = .
IDIR     = $(HOME)/lib/libscl/gpp
LDIR     = $(HOME)/lib/libscl/gpp
CXXFLAGS = -O -Wall -c -I$(SDIR) -I$(IDIR)
LDFLAGS  = -lm -L$(LDIR) -lscl             

PROGRAMS = value refer ptr crefer cptr over fmain

all : $(PROGRAMS)

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

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

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

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

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

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

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

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

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

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

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

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

fmain : fmain.o funcs.o
	$(CXX) -o fmain fmain.o funcs.o $(LDFLAGS) 

fmain.o : $(SDIR)/fmain.cpp $(SDIR)/funcs.h
	$(CXX) $(CXXFLAGS) $(SDIR)/fmain.cpp

funcs.o : $(SDIR)/funcs.cpp $(SDIR)/funcs.h
	$(CXX) $(CXXFLAGS) $(SDIR)/funcs.cpp

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

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