# Compiling
SYSCONF_CC		= g++ -g

# Compiling with support libraries
SYSCONF_CFLAGS_X11	= -I/usr/X11R6/include
SYSCONF_CFLAGS_QT	= -I$(QTDIR)/include
SYSCONF_CFLAGS_OPENGL	= -I/usr/X11R6/include

# Compiline YACC output
SYSCONF_CFLAGS_YACC     = -Wno-unused -Wno-parentheses

# Linking with support libraries
# X11
SYSCONF_LFLAGS_X11	= -L/usr/X11R6/lib
SYSCONF_LIBS_X11	= -lX11
# Qt, Qt+OpenGL
SYSCONF_LFLAGS_QT	= -L$(QTDIR)/lib
SYSCONF_LIBS_QT		= -lqt
SYSCONF_LIBS_QT_OPENGL	= -lqgl
# OpenGL
# SYSCONF_LFLAGS_OPENGL	= -L/usr/X11R6/lib
# SYSCONF_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu -lXext -lm

# Linking applications
SYSCONF_LINK		= g++
SYSCONF_LFLAGS		= 
SYSCONF_LIBS		= 

# Link flags shared objects
SYSCONF_LFLAGS_SHOBJ	= -shared

# Meta-object compiler
SYSCONF_MOC		= /usr/bin/moc


####### Compiler, tools and options

CC	=	$(SYSCONF_CC)
CFLAGS	=	$(SYSCONF_CFLAGS_QT) $(SYSCONF_CFLAGS)
LFLAGS	=	$(SYSCONF_LFLAGS_QT) $(SYSCONF_LFLAGS_X11) $(SYSCONF_LFLAGS)
LIBS	=	$(SYSCONF_LIBS_QT) $(SYSCONF_LIBS_X11) $(SYSCONF_LIBS)
MOC	=	$(SYSCONF_MOC)

####### Target

TARGET1	= Neuron
TARGET2 = Learn
TARGET3 = Control
DESTDIR = ./
VER_MAJ = 1
VER_MIN = 7

####### Files

HEADERS =	mainmenu.h  init.h neuron.h qworks.h works.h misc.h str.h graphics.h gfunc.h saveload.h files.h mask.h files_st.h errors.h
SOURCES =	mainmenu.c  init.c neuron.c qworks.c works.c misc.c str.c graphics.c gfunc.c saveload.c files.c mask.c
OBJECTS =	neuron.o misc.o str.o graphics.o gfunc.o files.o mask.o consoleinit.o
OBJECTS1 = 	mainmenu.o qworks.o works.o saveload.o init.o 
OBJECTS2 =	learn.o 
SRCMOC	=	moc_qw.c moc_sl.c moc_in.c
OBJMOC	=	moc_qw.o moc_sl.o moc_in.o


####### Build rules

all: $(DESTDIR)$(TARGET1) $(DESTDIR)$(TARGET2)

$(DESTDIR)$(TARGET1): $(OBJECTS) $(OBJECTS1) $(OBJMOC) 
	$(SYSCONF_LINK) $(LFLAGS) -o $(TARGET1) $(OBJECTS) $(OBJECTS1) $(OBJMOC) $(LIBS)

$(DESTDIR)$(TARGET2): $(OBJECTS) $(OBJECTS2)
	$(SYSCONF_LINK) $(LFLAGS) -o $(TARGET2) $(OBJECTS) $(OBJECTS2) $(LIBS)

moc: $(SRCMOC)

clean:
	-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(TARGET1) $(TARGET2)
	-rm -f *~ core
	-rm -f a.out

####### Compile
files.o:	files.c files.h files_st.h mask.h str.h
str.o:		str.c str.h
misc.o:		misc.c misc.h
mask.o:		mask.c mask.h
neuron.o:	neuron.c nfunc.h nfuncset.h virables.h mainmenu.h qworks.h works.h neuron.h init.h errors.h
qworks.o:	qworks.c virables.h mainmenu.h qworks.h works.h neuron.h init.h errors.h
work.o:		work.c virables.h mainmenu.h qworks.h works.h neuron.h init.h errors.h
init.o:		init.c virables.h mainmenu.h qworks.h works.h neuron.h init.h errors.h
mainmenu.o: 	mainmenu.c virables.h mainmenu.h qworks.h works.h neuron.h init.h errors.h
gfunc.o:	gfunc.c gfunc.h graphics.h 
graphics.o:	graphics.c graphics.h gfunc.h
saveload.o:	saveload.c virables.h mainmenu.h qworks.h works.h neuron.h init.h errors.h
moc_qw.o: 	moc_qw.c
moc_sl.o:	moc_sl.c
moc_in.o:	moc_in.c
learn.o: 	learn.c virables.h mainmenu.h qworks.h works.h neuron.h init.h errors.h

moc_qw.c: qworks.h
	$(MOC) qworks.h -o moc_qw.cc
	echo "#include \"virables.h\"" > moc_qw.c
	sed -e s/"#include \"qworks.h\""// moc_qw.cc >> moc_qw.c
moc_sl.c: saveload.h
	$(MOC) saveload.h -o moc_sl.cc
	echo "#include \"virables.h\"" > moc_sl.c
	sed -e s/"#include \"saveload.h\""// moc_sl.cc >> moc_sl.c
moc_in.c: init.h
	$(MOC) init.h -o moc_in.cc
	echo "#include \"virables.h\"" > moc_in.c
	sed -e s/"#include \"init.h\""// moc_in.cc >> moc_in.c
