#
# Framsticks GDK makefile
#

TARGETS=convtest gdktest genotest neurotest loadertest f0def.xml model.def

all: $(TARGETS)

CXXOPTS= -DNOCREATUREOBJECT -DEASYMAPDEBUG -g -Wno-parentheses -Wno-overloaded-virtual -Wno-format
# -DEASYMAPDEBUG is required for convtest

AUTOGENERATED=defassign-f0_joint.h defassign-f0_part.h defassign-f0_neuro.h f0classes.h \
	defassign-f0_neuroconn.h f0def.xml neurocls-library.h neurocls-factory.h model.def

CONVMODULES=conv_f1.o

GDKOBJS=list.o advlist.o param.o sstring.o 3d.o model.o modelparts.o errmanager.o \
	neurolibrary.o geno.o genoconv.o extvalue.o framsg.o callbacks.o syntparam.o \
	multirange.o multimap.o paramtabobj.o defgenoconv.o sstringutils.o paramobj.o \
	$(CONVMODULES)

libgdk.a: $(GDKOBJS)

CONVTESTOBJS= convtest.o printconvmap.o stdouterr.o virtfile.o

convtest: libgdk.a $(CONVTESTOBJS)
	g++ $(CONVTESTOBJS) -L. -lgdk -o $@

GDKTESTOBJS= gdktest.o stdouterr.o virtfile.o

gdktest: libgdk.a $(GDKTESTOBJS)
	g++ $(GDKTESTOBJS) -L. -lgdk -o $@

GENOTESTOBJS= genotest.o virtfile.o

genotest: libgdk.a $(GENOTESTOBJS)
	g++ $(GENOTESTOBJS) -L. -lgdk -o $@

NEUROTESTOBJS= neurotest.o stdouterr.o virtfile.o neuroimpl.o neurofactory.o \
	neuroimpl-simple.o neuroimpl-channels.o neuroimpl-fuzzy.o neuroimpl-fuzzy-f0.o

neurotest: libgdk.a $(NEUROTESTOBJS)
	g++ $(NEUROTESTOBJS) -L. -lgdk -o $@

LOADERTESTOBJS=genotypeloader.o loadertest.o virtfile.o multiparamload.o stdiofile-autoinit.o stdiofile.o

loadertest: libgdk.a $(LOADERTESTOBJS)
	g++ $(LOADERTESTOBJS) -L. -lgdk -o $@

neurocls-library.h: f0.def neurocls-library.m4
	m4 neurocls-library.m4 f0.def >neurocls-library.h

neurocls-factory.h: f0.def neurocls-factory.m4
	m4 neurocls-factory.m4 f0.def >neurocls-factory.h

f0classes.h: f0.def f0classes.m4
	m4 f0classes.m4 f0.def >f0classes.h

f0def.xml: f0.def f0defxml.m4
	m4 f0defxml.m4 f0.def >f0def.xml

model.def: f0-modeldef.m4 f0.def
	m4 f0-modeldef.m4 f0.def >model.def

defassign-%.h: defassign.m4 f0.def
	m4 -DUSECLASS=$* defassign.m4 f0.def >$@

neurolibrary.cpp: neurocls-library.h
neurofactory.cpp: neurocls-factory.h
modelparts.cpp: f0classes.h defassign-f0_part.h defassign-f0_joint.h \
		defassign-f0_neuro.h defassign-f0_neuroconn.h

#############

%.o : %.cpp
	g++ -c $(CXXOPTS) $<

%.a:
	rm -f $@
	ar r $@ $^
	ranlib $@

clean:
	rm -f *.o *~ *.bak *.a

fullclean:	clean
	rm -f $(TARGETS) $(AUTOGENERATED)

prepare: $(AUTOGENERATED) depend
	rm -f Makefile.bak
	~/bin/addhead ../gdk-head.txt *.h *.cpp

depend:
	makedepend -Y *.cpp

# DO NOT DELETE

3d.o: nonstd.h 3d.h framsg.h
advlist.o: advlist.h list.h nonstd.h callbacks.h statrick.h
callbacks.o: callbacks.h list.h nonstd.h statrick.h
conv_f1.o: conv_f1.h genoconv.h geno.h sstring.h extvalue.h param.h list.h
conv_f1.o: nonstd.h statrick.h virtfile.h model.h modelparts.h 3d.h
conv_f1.o: sstringutils.h syntparam.h usertags.h paramtabobj.h advlist.h
conv_f1.o: callbacks.h framsg.h multirange.h multimap.h
convtest.o: genoconv.h geno.h sstring.h extvalue.h param.h list.h nonstd.h
convtest.o: statrick.h virtfile.h model.h modelparts.h 3d.h sstringutils.h
convtest.o: syntparam.h usertags.h paramtabobj.h advlist.h callbacks.h
convtest.o: multimap.h multirange.h conv_f1.h printconvmap.h stdouterr.h
convtest.o: errmanager.h framsg.h
defgenoconv.o: defgenoconv.h genoconv.h geno.h sstring.h extvalue.h param.h
defgenoconv.o: list.h nonstd.h statrick.h virtfile.h gen-config.h conv_f1.h
defgenoconv.o: model.h modelparts.h 3d.h sstringutils.h syntparam.h
defgenoconv.o: usertags.h paramtabobj.h advlist.h callbacks.h
errmanager.o: errmanager.h list.h nonstd.h sstring.h framsg.h
extvalue.o: extvalue.h sstring.h param.h list.h nonstd.h statrick.h
extvalue.o: virtfile.h framsg.h
framsg.o: nonstd.h framsg.h
gdktest.o: model.h modelparts.h 3d.h genoconv.h geno.h sstring.h extvalue.h
gdktest.o: param.h list.h nonstd.h statrick.h virtfile.h sstringutils.h
gdktest.o: syntparam.h usertags.h paramtabobj.h advlist.h callbacks.h
gdktest.o: defgenoconv.h stdouterr.h errmanager.h framsg.h
genoconv.o: nonstd.h genoconv.h geno.h sstring.h extvalue.h param.h list.h
genoconv.o: statrick.h virtfile.h multimap.h multirange.h
geno.o: geno.h sstring.h extvalue.h param.h list.h nonstd.h statrick.h
geno.o: virtfile.h genoconv.h model.h modelparts.h 3d.h sstringutils.h
geno.o: syntparam.h usertags.h paramtabobj.h advlist.h callbacks.h
genotest.o: geno.h sstring.h extvalue.h param.h list.h nonstd.h statrick.h
genotest.o: virtfile.h genoconv.h stdiofile.h sstringutils.h defgenoconv.h
genotypeloader.o: genotypeloader.h sstring.h multiparamload.h param.h list.h
genotypeloader.o: nonstd.h statrick.h virtfile.h
list.o: list.h nonstd.h
loadertest.o: genotypeloader.h sstring.h multiparamload.h param.h list.h
loadertest.o: nonstd.h statrick.h virtfile.h
model.o: nonstd.h model.h modelparts.h 3d.h genoconv.h geno.h sstring.h
model.o: extvalue.h param.h list.h statrick.h virtfile.h sstringutils.h
model.o: syntparam.h usertags.h paramtabobj.h advlist.h callbacks.h framsg.h
model.o: multimap.h multirange.h errmanager.h
modelparts.o: modelparts.h 3d.h genoconv.h geno.h sstring.h extvalue.h
modelparts.o: param.h list.h nonstd.h statrick.h virtfile.h sstringutils.h
modelparts.o: syntparam.h usertags.h paramtabobj.h model.h advlist.h
modelparts.o: callbacks.h neurolibrary.h multirange.h defassign-f0_neuro.h
modelparts.o: defassign-f0_part.h defassign-f0_joint.h f0classes.h
modelparts.o: defassign-f0_neuroconn.h
multimap.o: multimap.h multirange.h list.h nonstd.h
multiparamload.o: multiparamload.h param.h sstring.h list.h nonstd.h
multiparamload.o: statrick.h virtfile.h framsg.h
multirange.o: multirange.h list.h nonstd.h
neurofactory.o: neurofactory.h modelparts.h 3d.h genoconv.h geno.h sstring.h
neurofactory.o: extvalue.h param.h list.h nonstd.h statrick.h virtfile.h
neurofactory.o: sstringutils.h syntparam.h usertags.h paramtabobj.h
neurofactory.o: neuroimpl.h model.h advlist.h callbacks.h framsg.h
neurofactory.o: neuroimplfiles.h neuroimpl-simple.h neuroimpl-channels.h
neurofactory.o: neuroimpl-fuzzy.h neuroimpl-body-gdk.h neurocls-factory.h
neuroimpl-channels.o: neuroimpl-channels.h neuroimpl.h model.h modelparts.h
neuroimpl-channels.o: 3d.h genoconv.h geno.h sstring.h extvalue.h param.h
neuroimpl-channels.o: list.h nonstd.h statrick.h virtfile.h sstringutils.h
neuroimpl-channels.o: syntparam.h usertags.h paramtabobj.h advlist.h
neuroimpl-channels.o: callbacks.h framsg.h
neuroimpl.o: neuroimpl.h model.h modelparts.h 3d.h genoconv.h geno.h
neuroimpl.o: sstring.h extvalue.h param.h list.h nonstd.h statrick.h
neuroimpl.o: virtfile.h sstringutils.h syntparam.h usertags.h paramtabobj.h
neuroimpl.o: advlist.h callbacks.h framsg.h neurofactory.h
neuroimpl-fuzzy.o: neuroimpl-fuzzy.h neuroimpl.h model.h modelparts.h 3d.h
neuroimpl-fuzzy.o: genoconv.h geno.h sstring.h extvalue.h param.h list.h
neuroimpl-fuzzy.o: nonstd.h statrick.h virtfile.h sstringutils.h syntparam.h
neuroimpl-fuzzy.o: usertags.h paramtabobj.h advlist.h callbacks.h framsg.h
neuroimpl-fuzzy.o: neuroimpl-fuzzy-f0.h
neuroimpl-fuzzy-f0.o: neuroimpl-fuzzy-f0.h sstring.h nonstd.h
neuroimpl-simple.o: neuroimpl-simple.h neuroimpl.h model.h modelparts.h 3d.h
neuroimpl-simple.o: genoconv.h geno.h sstring.h extvalue.h param.h list.h
neuroimpl-simple.o: nonstd.h statrick.h virtfile.h sstringutils.h syntparam.h
neuroimpl-simple.o: usertags.h paramtabobj.h advlist.h callbacks.h framsg.h
neurolibrary.o: neurolibrary.h advlist.h list.h nonstd.h callbacks.h
neurolibrary.o: statrick.h param.h sstring.h virtfile.h modelparts.h 3d.h
neurolibrary.o: genoconv.h geno.h extvalue.h sstringutils.h syntparam.h
neurolibrary.o: usertags.h paramtabobj.h neurocls-library.h
neurotest.o: geno.h sstring.h extvalue.h param.h list.h nonstd.h statrick.h
neurotest.o: virtfile.h genoconv.h stdiofile.h sstringutils.h defgenoconv.h
neurotest.o: neuroimpl.h model.h modelparts.h 3d.h syntparam.h usertags.h
neurotest.o: paramtabobj.h advlist.h callbacks.h framsg.h neurofactory.h
neurotest.o: stdouterr.h errmanager.h
param.o: param.h sstring.h list.h nonstd.h statrick.h virtfile.h extvalue.h
param.o: framsg.h sstringutils.h
paramobj.o: paramobj.h param.h sstring.h list.h nonstd.h statrick.h
paramobj.o: virtfile.h extvalue.h
paramtabobj.o: paramtabobj.h param.h sstring.h list.h nonstd.h statrick.h
paramtabobj.o: virtfile.h
printconvmap.o: printconvmap.h sstring.h multimap.h multirange.h list.h
printconvmap.o: nonstd.h
sstring.o: sstring.h nonstd.h
sstringutils.o: sstringutils.h sstring.h virtfile.h framsg.h
stdiofile-autoinit.o: stdiofile.h virtfile.h sstring.h
stdiofile.o: stdiofile.h virtfile.h sstring.h nonstd.h nonstd_io.h
stdouterr.o: stdouterr.h errmanager.h list.h nonstd.h sstring.h framsg.h
syntparam.o: nonstd.h syntparam.h param.h sstring.h list.h statrick.h
syntparam.o: virtfile.h paramobj.h
virtfile.o: virtfile.h
