#include $(ROOT)/usr/include/make/commondefs

CC  = gcc

CPP  = g++

CFLAGS  =  -c

LDFLAGS = -lm 

LCDEFS	=  -O -g 

TARGETDIR = /usr/local/bin

all : local multivar smooth wavelet peek quantize hrule vrule lc

clean : 
	rm -f *.o *.~* core\
	local multivar smooth wavelet peek quantize hrule vrule lc

install: $(TARGETDIR)/local    $(TARGETDIR)/smooth\
	 $(TARGETDIR)/multivar $(TARGETDIR)/peek\
	 $(TARGETDIR)/quantize $(TARGETDIR)/wavelet\
	 $(TARGETDIR)/hrule    $(TARGETDIR)/vrule\
	 $(TARGETDIR)/lc

$(TARGETDIR)/local:     local
	cp local    $(TARGETDIR)

$(TARGETDIR)/smooth:    smooth
	cp smooth   $(TARGETDIR)

$(TARGETDIR)/multivar:  multivar
	cp multivar $(TARGETDIR)

$(TARGETDIR)/peek:      peek
	cp peek     $(TARGETDIR)

$(TARGETDIR)/quantize:  quantize
	cp quantize $(TARGETDIR)

$(TARGETDIR)/wavelet:   wavelet
	cp wavelet  $(TARGETDIR)

$(TARGETDIR)/hrule:     hrule
	cp hrule    $(TARGETDIR)

$(TARGETDIR)/vrule:     vrule
	cp vrule    $(TARGETDIR)

$(TARGETDIR)/lc:        lc
	cp lc       $(TARGETDIR)

matrix.o : matrix.c matrix.h eigenvalue.h d3vector.h
	$(CPP) $(CFLAGS) $(LCDEFS) matrix.c 

local.o : local.c local.h matrix.h eigenvalue.h d3vector.h wavelet.h
	$(CPP) $(CFLAGS) $(LCDEFS) local.c 

local-main.o : local-main.c local.h matrix.h\
	 eigenvalue.h d3vector.h wavelet.h 
	$(CPP) $(CFLAGS) $(LCDEFS) local-main.c 

eigenvalue.o : eigenvalue.c eigenvalue.h matrix.h
	$(CPP) $(CFLAGS) $(LCDEFS) eigenvalue.c 

d3vector.o : d3vector.c d3vector.h 
	$(CPP) $(CFLAGS) $(LCDEFS) d3vector.c 

amino.o: amino.c amino.h
	$(CPP) $(CFLAGS) $(LCDEFS) amino.c 

field.o: field.c field.h
	$(CPP) $(CFLAGS) $(LCDEFS) field.c

wavelet.o :wavelet.c wavelet.h
	$(CPP) $(CFLAGS) $(LCDEFS) wavelet.c

wavelet-main.o: wavelet-main.c wavelet.h 
	$(CPP) $(CFLAGS) $(LCDEFS) wavelet-main.c

multivar.o: multivar.c multivar.h field.h eigenvalue.h
	$(CPP) $(CFLAGS) $(LCDEFS) multivar.c

smooth.o: smooth.c
	$(CPP) $(CFLAGS) $(LCDEFS) smooth.c

peek.o: peek.c field.h
	$(CPP) $(CFLAGS) $(LCDEFS) peek.c

quantize.o: quantize.c multivar.h eigenvalue.h matrix.h
	$(CPP) $(CFLAGS) $(LCDEFS) quantize.c

multivar-main.o: multivar-main.c multivar.h
	$(CPP) $(CFLAGS) $(LCDEFS) multivar-main.c

localID.o: localID.c localID.h
	$(CPP) $(CFLAGS) $(LCDEFS) localID.c

hrule.o: hrule.c field.h
	$(CPP) $(CFLAGS) $(LCDEFS) hrule.c

vrule.o: vrule.c field.h
	$(CPP) $(CFLAGS) $(LCDEFS) vrule.c

smooth: smooth.o
	$(CPP) smooth.o -o smooth $(LDFLAGS)

local: local-main.o local.o matrix.o d3vector.o amino.o wavelet.o
	$(CPP) local-main.o local.o matrix.o d3vector.o amino.o wavelet.o\
	 -o local $(LDFLAGS)

multivar: multivar-main.o  multivar.o field.o eigenvalue.o matrix.o
	$(CPP) multivar-main.o  multivar.o field.o eigenvalue.o matrix.o\
	 -o multivar $(LDFLAGS)

wavelet: wavelet.o wavelet-main.o
	$(CPP) wavelet-main.o wavelet.o -o wavelet $(LDFLAGS)

peek: peek.o
	$(CPP) peek.o field.o  -o peek $(LDFLAGS)

quantize: quantize.o field.o multivar.o eigenvalue.o matrix.o
	$(CPP) quantize.o field.o multivar.o eigenvalue.o matrix.o\
	 -o quantize $(LDFLAGS)

hrule: hrule.o field.o localID.o
	$(CPP) hrule.o field.o localID.o -o hrule

vrule: vrule.o field.o localID.o
	$(CPP) vrule.o field.o localID.o -o vrule

lc:    lc.c
	$(CPP) $(LCDEFS) lc.c -o lc

