#############################################
# Gnu gcc

ifndef CC
CC            	= gcc
endif
ifndef CXX
CXX           	= g++
endif
CCC           	= g++
CCLIB         	= g++
CINCLUDES     	= -I/usr/include/g++-3 -I/usr/include/boost #home/alex/boost_1_21_1 -I/home/alex/include #
WARNINGS      	= #-Wall 
CODEOPT       	= -ftemplate-depth-30 -fpermissive -O3
RAN 		= ranlib
DEBUG         	= #-g -DDEBUG
PROFILE       	= #-pg
# end of edit

LIBS       	= -L/home/alex/lib/

CXXFLAGS      	= $(DEFINES) $(WARNINGS) 
CFLAGS        	= $(DEFINES) $(WARNINGS) 
LDFLAGS       	= $(CODEOPT) $(DEBUG)
LD            	= $(CXX) #$(LDFLAGS)

.cpp.o:
	$(CXX) $(CINCLUDES) $(CODEOPT) $(DEBUG) $(CFLAGS) $(PROFILE) -c $< -o $@

SOURCES.cpp= \
	protein_util.cpp \
	Node.cpp \
	StructureSearch.cpp \
	DataSet.cpp \
	DPAG.cpp \
	Options.cpp

SOURCES.h= \
	protein_util.h \
	require.h \
	ActivationFunctions.h \
	DataSet.h \
	DPAG.h \
	ErrorMinimizationProcedure.h \
	Node.h \
	Options.h \
	RecursiveNN.h \
	RecursiveNN1.h \
	StructureSearch.h

OBJECTS = $(SOURCES.cpp:%.cpp=%.o)

TARGETS = proteins2DataSet proteins2SSDataSet proteinNoisySearch protein2graphDataSet trainRNN trainRNNsoq online-trainRNN cysconn-trainRNN proteinSearch ssStats getContactMaps

all: ${TARGETS}

proteins2DataSet: $(OBJECTS) proteins2DataSet.o 
	$(LD) $(OBJECTS) proteins2DataSet.o $(LIBS) -o $@ $(PROFILE) $(LDFLAGS)

proteins2DataSet.o: $(SOURCES.cpp) proteins2DataSet.cpp $(SOURCES.h)
	$(CXX) $(CINCLUDES) $(WARNINGS) $(CODEOPT) $(DEBUG) $(PROFILE) -c proteins2DataSet.cpp

proteins2SSDataSet: $(OBJECTS) proteins2SSDataSet.o 
	$(LD) $(OBJECTS) proteins2SSDataSet.o $(LIBS) -o $@ $(PROFILE) $(LDFLAGS)

proteins2SSDataSet.o: $(SOURCES.cpp) proteins2SSDataSet.cpp $(SOURCES.h)
	$(CXX) $(CINCLUDES) $(WARNINGS) $(CODEOPT) $(DEBUG) $(PROFILE) -c proteins2SSDataSet.cpp

protein2graphDataSet: $(OBJECTS) protein2graphDataSet.o 
	$(LD) $(OBJECTS) protein2graphDataSet.o $(LIBS) -o $@ $(PROFILE) $(LDFLAGS)

protein2graphDataSet.o: $(SOURCES.cpp) protein2graphDataSet.cpp $(SOURCES.h)
	$(CXX) $(CINCLUDES) $(WARNINGS) $(CODEOPT) $(DEBUG) $(PROFILE) -c protein2graphDataSet.cpp

trainRNN:  $(OBJECTS) trainRNN.o 
	$(LD) $(OBJECTS) trainRNN.o $(LIBS) -o $@ $(PROFILE) $(LDFLAGS)

trainRNN.o:  $(SOURCES.cpp)  trainRNN.cpp $(SOURCES.h)
	$(CXX) $(CINCLUDES) $(WARNINGS) $(CODEOPT) $(DEBUG) $(PROFILE) -c trainRNN.cpp

trainRNNsoq:  $(OBJECTS) trainRNNsoq.o 
	$(LD) $(OBJECTS) trainRNNsoq.o $(LIBS) -o $@ $(PROFILE) $(LDFLAGS)

trainRNNsoq.o:  $(SOURCES.cpp)  trainRNNsoq.cpp $(SOURCES.h)
	$(CXX) $(CINCLUDES) $(WARNINGS) $(CODEOPT) $(DEBUG) $(PROFILE) -c trainRNNsoq.cpp

online-trainRNN:  $(OBJECTS) online-trainRNN.o 
	$(LD) $(OBJECTS) online-trainRNN.o $(LIBS) -o $@ $(PROFILE) $(LDFLAGS)

online-trainRNN.o:  $(SOURCES.cpp)  online-trainRNN.cpp $(SOURCES.h)
	$(CXX) $(CINCLUDES) $(WARNINGS) $(CODEOPT) $(DEBUG) $(PROFILE) -c online-trainRNN.cpp

cysconn-trainRNN:  $(OBJECTS) cysconn-trainRNN.o 
	$(LD) $(OBJECTS) cysconn-trainRNN.o $(LIBS) -o $@ $(PROFILE) $(LDFLAGS)

cysconn-trainRNN.o:  $(SOURCES.cpp)  cysconn-trainRNN.cpp $(SOURCES.h)
	$(CXX) $(CINCLUDES) $(WARNINGS) $(CODEOPT) $(DEBUG) $(PROFILE) -c cysconn-trainRNN.cpp

proteinSearch: $(OBJECTS) proteinSearch.o 
	$(LD) $(OBJECTS) proteinSearch.o $(LIBS) -o $@ $(PROFILE) $(LDFLAGS)

proteinSearch.o: $(SOURCES.cpp) proteinSearch.cpp $(SOURCES.h)
	$(CXX) $(CINCLUDES) $(WARNINGS) $(CODEOPT) $(DEBUG) $(PROFILE) -c proteinSearch.cpp

ssStats: $(OBJECTS) ssStats.o 
	$(LD) $(OBJECTS) ssStats.o $(LIBS) -o $@ $(PROFILE) $(LDFLAGS)

ssStats.o: $(SOURCES.cpp) ssStats.cpp $(SOURCES.h)
	$(CXX) $(CINCLUDES) $(WARNINGS) $(CODEOPT) $(DEBUG) $(PROFILE) -c ssStats.cpp

getContactMaps: $(OBJECTS) getContactMaps.o 
	$(LD) $(OBJECTS) getContactMaps.o $(LIBS) -o $@ $(PROFILE) $(LDFLAGS)

getContactMaps.o: $(SOURCES.cpp) getContactMaps.cpp $(SOURCES.h)
	$(CXX) $(CINCLUDES) $(WARNINGS) $(CODEOPT) $(DEBUG) $(PROFILE) -c getContactMaps.cpp

clean:
	rm -f *.o core

depend:
	makedepend -- $(CINCLUDES) $(CFLAGS) $(SOURCES.cpp) proteins2DataSet.cpp protein2graphDataSet.cpp trainRNN.cpp proteinSearch.cpp ssStats.cpp $(SOURCES.h) --







# DO NOT DELETE

Node.o: require.h Node.h Options.h
