CC = gcc
#CC = c89 -Ae
###############################################################################
# Library
HIPS_LIBDIR = -L/home/elektro/hips2/lib/${HOSTTYPE}
HIPS_LIBS   = -lhips -lhipsh
MAT_LIBDIR  = -L/usr/local/share/matlab/extern/lib/${HOSTTYPE}
MAT_LIBS    = -lmat
LIB         =  $(HIPS_LIBDIR) $(HIPS_LIBS) -lm 
MAT_LIB     =  $(HIPS_LIBDIR) $(MAT_LIBDIR) $(HIPS_LIBS) $(MAT_LIBS) -lm 

###############################################################################
# Include files:
#
INCLUDE = -I/home/elektro/hips2/include
MATINCLUDE = -I/usr/local/share/matlab/extern/include

###############################################################################
# C flags
CFLAGS = $(INCLUDE) $(MATINCLUDE) -g -O 

###############################################################################
# Objects
#
ABS		= mcf_abs_nonlin.o filtertree.o
ACCUR		= accur.o matrix2.o
BLACKPST	= blackpst.o matrix2.o
BLURR		= blurr.o mcf_util.o mcf_gauss.o mcf_invfourtr.o filtertree.o
CENTRFREQ	= centrfreq.o win_fourtr.o io.o
COMPLVQ		= complvq.o
DEC2SEQ		= dec2seq.o filtertree.o matrix2.o
DECIMATE	= decimate.o matrix2.o filtertree.o
DSCALE		= dscale.o mcf_util.o filtertree.o
HIPS2EPS	= hips2eps.o error.o matrix2.o 
HIPS2LVQ	= hips2lvq.o error.o matrix2.o filtertree.o
HIPS2MAT	= hips2mat.o matrix2.o
HIPS2TXT	= hips2txt.o
LVQ2HIPS	= lvq2hips.o error.o matrix2.o
MAT2HIPS	= mat2hips.o matrix2.o
MINDEC		= mindec.o filtertree.o
MCF		= mcf.o even_gabor.o mcf_tanh_nonlin.o mcf_sqr_nonlin.o \
		  mcf_abs_nonlin.o mcf_util.o mcf_gauss.o \
		  gen_gabor.o io.o one_channel_filter.o mcf_invfourtr.o \
		  filtertree.o struct_gabor.o
MKTEX		= mktex.o mktex_imout.o
ODDEVEN		= oddeven.o
QMF		= qmf.o qmf_util.o matrix2.o analysis.o dec_analysis.o \
		  dec_synthesis.o filter_2x2bnd.o filtertree.o
RAW2HIPS	= raw2hips.o matrix2.o 
SEQ2DEC		= seq2dec.o filtertree.o matrix2.o
SIZE		= size.o
SNR		= snr.o matrix2.o
SQR		= mcf_sqr_nonlin.o filtertree.o
STATSNORM	= statsnorm.o
STRUCT2LATEX	= struct2latex.o filtertree.o
TANH		= tanh.o mcf_tanh_nonlin.o filtertree.o
TEST		= test.o matrix2.o qmf_util.o
TXT2HIPS	= txt2hips.o
WINSTAT		= winstat.o matrix2.o

###############################################################################
# Operations on the compiled program
OP = chmod ugo+rx $@ ; mv $@ ${HOME}/bin/${HOSTTYPE}/$@

###############################################################################
# Compilation:
all:		accur blackpst blurr centrfreq complvq dec2seq decimate \
		dscale hips2eps hips2lvq hips2txt lvq2hips mcf mktex \
		oddeven qmf raw2hips seq2dec size snr \
		statsnorm struct2latex tanh txt2hips winstat clean

accur:		$(ACCUR)
		$(CC) $(CFLAGS) -o $@ $(ACCUR) $(LIB)
		$(OP)

blackpst:	$(BLACKPST)
		$(CC) $(CFLAGS) -o $@ $(BLACKPST) $(LIB)
		$(OP)

blurr:		$(BLURR)
		$(CC) $(CFLAGS) -o $@ $(BLURR) $(LIB)
		$(OP)

centrfreq:	$(CENTRFREQ)
		$(CC) $(CFLAGS) -o $@ $(CENTRFREQ) $(LIB)
		$(OP)

complvq:	$(COMPLVQ)
		$(CC) $(CFLAGS) -o $@ $(COMPLVQ) $(LIB)
		$(OP)

dec2seq:	$(DEC2SEQ)
		$(CC) $(CFLAGS) -o $@ $(DEC2SEQ) $(LIB)
		$(OP)

decimate:	$(DECIMATE)
		$(CC) $(CFLAGS) -o $@ $(DECIMATE) $(LIB)
		$(OP)

dscale:		$(DSCALE)
		$(CC) $(CFLAGS) -o $@ $(DSCALE) $(LIB)
		$(OP)

hips2eps:	$(HIPS2EPS)
		$(CC) $(CFLAGS) -o $@ $(HIPS2EPS) $(LIB)
		$(OP)

hips2lvq:	$(HIPS2LVQ)
		$(CC) $(CFLAGS) -o $@ $(HIPS2LVQ) $(LIB)
		$(OP)

hips2mat:	$(HIPS2MAT)
		$(CC) $(CFLAGS) -o $@ $(HIPS2MAT) $(MAT_LIB)
		$(OP)

hips2txt:	$(HIPS2TXT)
		$(CC) $(CFLAGS) -o $@ $(HIPS2TXT) $(LIB)
		$(OP)

lvq2hips:	$(LVQ2HIPS)
		$(CC) $(CFLAGS) -o $@ $(LVQ2HIPS) $(LIB)
		$(OP)

mat2hips:	$(MAT2HIPS)
		$(CC) $(CFLAGS) -o $@ $(MAT2HIPS) $(MAT_LIB)
		$(OP)

mindec:		$(MINDEC)
		$(CC) $(CFLAGS) -o $@ $(MINDEC) $(LIB)
		$(OP)

mcf:		$(MCF)
		$(CC) $(CFLAGS) -o $@ $(MCF) $(LIB)
		$(OP)

mktex:		$(MKTEX)
		$(CC) $(CFLAGS) -o $@ $(MKTEX) $(LIB)
		$(OP)

oddeven:	$(ODDEVEN)
		$(CC) $(CFLAGS) -o $@ $(ODDEVEN) $(LIB)
		$(OP)

qmf:		$(QMF)
		$(CC) $(CFLAGS) -o $@ $(QMF) $(LIB)
		$(OP)

raw2hips:	$(RAW2HIPS)
		$(CC) $(CFLAGS) -o $@ $(RAW2HIPS) $(LIB)
		$(OP)

seq2dec:	$(SEQ2DEC)
		$(CC) $(CFLAGS) -o $@ $(SEQ2DEC) $(LIB)
		$(OP)

size:		$(SIZE)
		$(CC) $(CFLAGS) -o $@ $(SIZE) $(LIB)
		$(OP)

snr:		$(SNR)
		$(CC) $(CFLAGS) -o $@ $(SNR) $(LIB)
		$(OP)

statsnorm:	$(STATSNORM)
		$(CC) $(CFLAGS) -o $@ $(STATSNORM) $(LIB)
		$(OP)

struct2latex:	$(STRUCT2LATEX)
		$(CC) $(CFLAGS) -o $@ $(STRUCT2LATEX) $(LIB)
		$(OP)

tanh:		$(TANH)
		$(CC) $(CFLAGS) -o $@ $(TANH) $(LIB)
		$(OP)

test:		$(TEST)
		$(CC) $(CFLAGS) -o $@ $(TEST) $(LIB)
		$(OP)

txt2hips:	$(TXT2HIPS)
		$(CC) $(CFLAGS) -o $@ $(TXT2HIPS) $(LIB)
		$(OP)

winstat:	$(WINSTAT)
		$(CC) $(CFLAGS) -o $@ $(WINSTAT) $(LIB)
		$(OP)

clean: 
		rm -f *.o *~


accur.o :		accur.c math.h
analysis.o :		analysis.c nrutil.h struct_defs.h declarations.h qmf.h
blackpst.o :		blackpst.c
blurr.o :		blurr.c mcf.h math.h error.h  qmf.h struct_defs.h
centrfreq.o :		centrfreq.c mcf.h math.h
complvq.o :		complvq.c mcf.h math.h
dec_analysis.o :	dec_analysis.c nrutil.h struct_defs.h declarations.h \
			qmf.h
dec_synthesis.o :	dec_synthesis.c nrutil.h struct_defs.h declarations.h \
			qmf.h
dec2seq.o :		dec2seq.c math.h error.h qmf.h struct_defs.h
decimate.o :		decimate.c
dscale.o :		dscale.c mcf.h math.h error.h qmf.h struct_defs.h
error.o:		error.c error.h
even_gabor.o :		even_gabor.c mcf.h math.h
filter_2x2bnd.o :	filter_2x2bnd.c nrutil.h struct_defs.h \
			declarations.h qmf.h
filtertree.o :		filtertree.c nrutil.h struct_defs.h \
			declarations.h qmf.h
gen_gabor.o :		gen_gabor.c mcf.h math.h
hips2eps.o :		hips2eps.c mcf.h math.h error.h
hips2lvq.o :		hips2lvq.c mcf.h math.h error.h qmf.h struct_defs.h
hips2mat.o :		hips2mat.c
hips2txt.o :		hips2txt.c mcf.h math.h error.h
io.o :			io.c
lvq2hips.o :		lvq2hips.c mcf.h math.h error.h
mat2hips.o :		mat2hips.c
matrix2.o :		matrix2.c
mindec.o :		mindec.c qmf.h math.h
mcf.o :			mcf.c mcf.h math.h error.h struct_defs.h
mcf_abs_nonlin.o :	mcf_abs_nonlin.c mcf.h math.h error.h
mcf_gauss.o :		mcf_gauss.c mcf.h math.h error.h
mcf_sqr_nonlin.o :	mcf_sqr_nonlin.c mcf.h math.h error.h
mcf_tanh_nonlin.o :	mcf_tanh_nonlin.c mcf.h math.h error.h
mcf_util.o :		mcf_util.c mcf.h math.h error.h
mktex.o :		mktex.c mktex.h
mktex_imout.o :		mktex_imout.c mktex.h
oddeven.o :		oddeven.c mcf.h math.h
one_channel_filter.o :	one_channel_filter.c mcf.h math.h error.h
qmf.o :			qmf.c nrutil.h struct_defs.h declarations.h qmf.h
qmf_util.o :		qmf_util.c nrutil.h struct_defs.h declarations.h qmf.h
raw2hips.o :		raw2hips.c
seq2dec.o :		seq2dec.c math.h error.h qmf.h struct_defs.h
size.o :		size.c
snr.o :			snr.c
statsnorm.o :		statsnorm.c
struct_gabor.o :	struct_gabor.c mcf.h math.h error.h struct_defs.h
struct2latex.o :	struct2latex.c math.h qmf.h struct_defs.h
tanh.o :		tanh.c mcf.h math.h error.h qmf.h struct_defs.h
txt2hips.o :		txt2hips.c mcf.h math.h error.h
win_fourtr.o :		win_fourtr.c mcf.h math.h error.h
winstat.o :		winstat.c math.h

