MODULES = ../modules/
CFLAGS = -O3 -g -Wall -I. -I$(MODULES)
#CFLAGS = -ggdb -Wall -I. -I$(MODULES)
LOPT = -lm
CC = gcc
TGTS = cb2txt txt2cb
 
CBDEPS = cb.o file.o interfc.o random.o memctrl.o 

DEPS = $(CBDEPS) cb2txt.o fvec.o textfile.o
T2CDEPS = $(CBDEPS) txt2cb.o fvec.o textfile.o

.PHONY:
all: $(TGTS)

.PHONY:
depend:
	gcc -E -MM *.c *.cpp $(MODULES)*.c $(ADDONS)*.c $(ADDONS)*.cpp -I. -I$(MODULES) -I$(ADDONS) > depend.lst

.PHONY:
install: all
	mv $(TGTS) $(HOME)/bin/

.PHONY:
clean:
	rm -f *.o $(TGTS)

cb2txt: $(DEPS)
	gcc -o cb2txt $(DEPS) $(LOPT)

cb2txt.o: cb2txt.c $(MODULES)parametr.c $(MODULES)file.h \
 $(MODULES)owntypes.h $(MODULES)parametr.h cb2txt.fac $(MODULES)cb.h \
 $(MODULES)interfc.h $(MODULES)memctrl.h $(MODULES)random.h
	gcc $(CFLAGS) -c $< -o $@

txt2cb: $(T2CDEPS)
	gcc -o txt2cb $(T2CDEPS) $(LOPT)

txt2cb.o: txt2cb.c $(MODULES)parametr.c $(MODULES)file.h \
    $(MODULES)owntypes.h $(MODULES)parametr.h txt2cb.fac \
    $(MODULES)cb.h $(MODULES)file.h $(MODULES)interfc.h
	gcc $(CFLAGS) -c $< -o $@


bintree.o: $(MODULES)bintree.c $(MODULES)memctrl.h \
 $(MODULES)bintree.h $(MODULES)interfc.h
	gcc $(CFLAGS) -c $< -o $@
cb.o: $(MODULES)cb.c $(MODULES)memctrl.h $(MODULES)file.h \
 $(MODULES)owntypes.h $(MODULES)interfc.h $(MODULES)cb.h
	gcc $(CFLAGS) -c $< -o $@
dip.o: $(MODULES)dip.c $(MODULES)image.h $(MODULES)file.h \
 $(MODULES)owntypes.h $(MODULES)pgm.h $(MODULES)interfc.h \
 $(MODULES)random.h
	gcc $(CFLAGS) -c $< -o $@
file.o: $(MODULES)file.c $(MODULES)file.h $(MODULES)owntypes.h \
 $(MODULES)interfc.h
	gcc $(CFLAGS) -c $< -o $@
heap.o: $(MODULES)heap.c $(MODULES)heap.h $(MODULES)memctrl.h \
 $(MODULES)owntypes.h
	gcc $(CFLAGS) -c $< -o $@
image.o: $(MODULES)image.c $(MODULES)interfc.h $(MODULES)file.h \
 $(MODULES)owntypes.h $(MODULES)image.h $(MODULES)pgm.h \
 $(MODULES)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
interfc.o: $(MODULES)interfc.c
	gcc $(CFLAGS) -c $< -o $@
iterate.o: $(MODULES)iterate.c $(MODULES)cb.h $(MODULES)owntypes.h \
 $(MODULES)iterate.h
	gcc $(CFLAGS) -c $< -o $@
mqcoder.o: $(MODULES)mqcoder.c $(MODULES)mqcoder.h $(MODULES)file.h \
 $(MODULES)owntypes.h $(MODULES)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
parametr.o: $(MODULES)parametr.c $(MODULES)file.h \
 $(MODULES)owntypes.h $(MODULES)parametr.h $(MODULES)parametr.fac
	gcc $(CFLAGS) -c $< -o $@
pgm.o: $(MODULES)pgm.c $(MODULES)interfc.h $(MODULES)file.h \
 $(MODULES)owntypes.h $(MODULES)pgm.h
	gcc $(CFLAGS) -c $< -o $@
pnn.o: $(MODULES)pnn.c $(MODULES)cb.h $(MODULES)owntypes.h \
 $(MODULES)heap.h $(MODULES)interfc.h $(MODULES)memctrl.h \
 $(MODULES)pnn.h $(MODULES)sa.h $(MODULES)stack.h
	gcc $(CFLAGS) -c $< -o $@
qm.o: $(MODULES)qm.c $(MODULES)qm.h $(MODULES)interfc.h
	gcc $(CFLAGS) -c $< -o $@
qmcoder.o: $(MODULES)qmcoder.c $(MODULES)qmcoder.h $(MODULES)file.h \
 $(MODULES)owntypes.h $(MODULES)interfc.h $(MODULES)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
random.o: $(MODULES)random.c $(MODULES)random.h
	gcc $(CFLAGS) -c $< -o $@
sa.o: $(MODULES)sa.c $(MODULES)random.h $(MODULES)cb.h \
 $(MODULES)owntypes.h $(MODULES)memctrl.h $(MODULES)sa.h
	gcc $(CFLAGS) -c $< -o $@
search.o: $(MODULES)search.c $(MODULES)bintree.h \
 $(MODULES)memctrl.h $(MODULES)file.h $(MODULES)owntypes.h \
 $(MODULES)cb.h $(MODULES)search.h $(MODULES)split.h \
 $(MODULES)sa.h $(MODULES)sortcb.h
	gcc $(CFLAGS) -c $< -o $@
solution.o: $(MODULES)solution.c $(MODULES)memctrl.h \
 $(MODULES)file.h $(MODULES)owntypes.h $(MODULES)interfc.h \
 $(MODULES)cb.h $(MODULES)solution.h
	gcc $(CFLAGS) -c $< -o $@
sort.o: $(MODULES)sort.c $(MODULES)interfc.h $(MODULES)memctrl.h \
 $(MODULES)sort.h $(MODULES)cb.h $(MODULES)owntypes.h
	gcc $(CFLAGS) -c $< -o $@
sortcb.o: $(MODULES)sortcb.c $(MODULES)cb.h $(MODULES)owntypes.h \
 $(MODULES)interfc.h $(MODULES)sort.h $(MODULES)sortcb.h
	gcc $(CFLAGS) -c $< -o $@
split.o: $(MODULES)split.c $(MODULES)bintree.h $(MODULES)cb.h \
 $(MODULES)owntypes.h $(MODULES)memctrl.h $(MODULES)random.h \
 $(MODULES)sa.h $(MODULES)sort.h $(MODULES)split.h
	gcc $(CFLAGS) -c $< -o $@
stack.o: $(MODULES)stack.c $(MODULES)memctrl.h $(MODULES)stack.h
	gcc $(CFLAGS) -c $< -o $@
cb_util.o: $(ADDONS)cb_util.c $(ADDONS)cb_util.h $(MODULES)cb.h \
 $(MODULES)owntypes.h $(MODULES)sortcb.h $(ADDONS)memctrl.h \
 $(MODULES)interfc.h $(ADDONS)textfile.h $(MODULES)random.h \
 $(ADDONS)DistCrit/criteria.h $(ADDONS)DistCrit/distance.h \
 $(MODULES)file.h $(ADDONS)fvec.h
	gcc $(CFLAGS) -c $< -o $@
cbfloat.o: $(ADDONS)cbfloat.c $(ADDONS)memctrl.h $(MODULES)file.h \
 $(MODULES)owntypes.h $(MODULES)interfc.h $(MODULES)cb.h
	gcc $(CFLAGS) -c $< -o $@
criteria.o: $(ADDONS)DistCrit/criteria.c $(ADDONS)DistCrit/criteria.h \
 $(MODULES)cb.h $(MODULES)owntypes.h $(ADDONS)DistCrit/distance.h \
 $(ADDONS)DistCrit/ftest.h $(ADDONS)DistCrit/mdl.h \
 $(ADDONS)DistCrit/stcomplx.h $(ADDONS)DistCrit/xiebenik.h \
 $(MODULES)interfc.h $(ADDONS)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
distance.o: $(ADDONS)DistCrit/distance.c $(ADDONS)DistCrit/distance.h \
 $(MODULES)cb.h $(MODULES)owntypes.h $(MODULES)interfc.h \
 $(ADDONS)DistCrit/stcomplx.h $(ADDONS)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
ftest.o: $(ADDONS)DistCrit/ftest.c $(ADDONS)DistCrit/ftest.h $(MODULES)cb.h \
 $(MODULES)owntypes.h $(ADDONS)DistCrit/distance.h $(ADDONS)memctrl.h \
 $(ADDONS)DistCrit/criteria.h
	gcc $(CFLAGS) -c $< -o $@
fvec.o: fvec.c fvec.h $(MODULES)memctrl.h \
 $(MODULES)random.h textfile.h
	gcc $(CFLAGS) -c $< -o $@
fvec2.o: $(ADDONS)fvec2.c $(ADDONS)fvec.h $(ADDONS)memctrl.h \
 $(MODULES)random.h $(ADDONS)textfile.h
	gcc $(CFLAGS) -c $< -o $@
iter.o: $(ADDONS)iter.c $(ADDONS)iter.h $(MODULES)owntypes.h \
 $(MODULES)interfc.h $(ADDONS)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
logger.o: $(ADDONS)logger.c
	gcc $(CFLAGS) -c $< -o $@
mdl.o: $(ADDONS)DistCrit/mdl.c $(ADDONS)DistCrit/mdl.h $(MODULES)cb.h \
 $(MODULES)owntypes.h $(ADDONS)DistCrit/distance.h $(ADDONS)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
memctrl.o: $(MODULES)memctrl.c $(MODULES)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
sqmatrix.o: $(ADDONS)sqmatrix.c $(ADDONS)sqmatrix.h \
 $(ADDONS)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
stcomplx.o: $(ADDONS)DistCrit/stcomplx.c $(ADDONS)DistCrit/stcomplx.h \
 $(MODULES)cb.h $(MODULES)owntypes.h $(ADDONS)DistCrit/distance.h \
 $(ADDONS)memctrl.h $(MODULES)interfc.h $(ADDONS)DistCrit/criteria.h
	gcc $(CFLAGS) -c $< -o $@
textfile.o: textfile.c textfile.h $(MODULES)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
textfile2.o: $(ADDONS)textfile2.c $(ADDONS)textfile2.h $(ADDONS)memctrl.h
	gcc $(CFLAGS) -c $< -o $@
timer.o: $(ADDONS)timer.c $(ADDONS)timer.h
	gcc $(CFLAGS) -c $< -o $@
tracedb.o: $(ADDONS)tracedb.c $(ADDONS)tracedb.h $(ADDONS)fvec.h \
 $(ADDONS)memctrl.h $(MODULES)interfc.h
	gcc $(CFLAGS) -c $< -o $@
xiebenik.o: $(ADDONS)DistCrit/xiebenik.c $(ADDONS)DistCrit/xiebenik.h \
 $(MODULES)cb.h $(MODULES)owntypes.h $(ADDONS)DistCrit/distance.h \
 $(ADDONS)memctrl.h $(ADDONS)DistCrit/criteria.h
	gcc $(CFLAGS) -c $< -o $@
