CXX = g++
CXXFLAGSmain = -Wall -ansi -g -pedantic 
CXXFLAGS = -Wall -ansi -g -pedantic -O3
LDFLAGS = -Wl,-rpath,/usr/local/lib: -lbpp-phyl -lbpp-utils
OBJECTS = StockholmReader.o Log.o opt.o
MODELOBJECTS = SubstitutionModel.o \
			   HKY85SubstitutionModel.o \
			   HKY85GapSubstitutionModel.o \
			   PairedHKY85SubstitutionModel.o \
			   PairedHKY85GapSubstitutionModel.o \
			   EukSSUrRNASubstitutionModel.o \
			   PairedEukSSUrRNASubstitutionModel.o \
			   PairedEukSSUrRNAGapSubstitutionModel.o \
			   ProSSUrRNASubstitutionModel.o \
			   PairedProSSUrRNASubstitutionModel.o \
			   DNAGapAlphabet.o \
			   BasePairAlphabet.o \
			   BasePairGapAlphabet.o \
			   BasePairModel.o \
			   EukBasePairGapModel.o \
			   ProBasePairModel.o \
			   HKY85GapModel.o			   
3rdPartyObj = opt/libopt.a
  
all: maxAlike makefile


maxAlike: makefile $(OBJECTS) $(MODELOBJECTS) main.o
	$(CXX) -g -o maxAlike $(LDFLAGS) main.o $(OBJECTS) $(MODELOBJECTS)

main.o: main.cpp
	$(CXX) $(CXXFLAGSmain) -c main.cpp 

opt.o: opt.c opt.h 
	$(CXX) -Wno-deprecated -g -O2 -c opt.c 

DNAGapAlphabet.o: DNAGapAlphabet.cpp DNAGapAlphabet.h 
	$(CXX) $(CXXFLAGS) -c DNAGapAlphabet.cpp 

BasePairGapAlphabet.o: BasePairGapAlphabet.cpp BasePairGapAlphabet.h 
	$(CXX) $(CXXFLAGS) -c BasePairGapAlphabet.cpp 

BasePairAlphabet.o: BasePairAlphabet.cpp BasePairAlphabet.h 
	$(CXX) $(CXXFLAGS) -c BasePairAlphabet.cpp 

BasePairModel.o: BasePairModel.cpp BasePairModel.h BasePairAlphabet.o
	$(CXX) $(CXXFLAGS) -c BasePairModel.cpp 


EukBasePairGapModel.o: EukBasePairGapModel.cpp EukBasePairGapModel.h BasePairGapAlphabet.o
	$(CXX) $(CXXFLAGS) -c EukBasePairGapModel.cpp 

ProBasePairModel.o: ProBasePairModel.cpp ProBasePairModel.h BasePairAlphabet.o
	$(CXX) $(CXXFLAGS) -c ProBasePairModel.cpp 

HKY85GapModel.o: HKY85GapModel.cpp HKY85GapModel.h 
	$(CXX) $(CXXFLAGS) -c HKY85GapModel.cpp 
	
StockholmReader.o: StockholmReader.cpp StockholmReader.h 
	$(CXX) $(CXXFLAGS) -c StockholmReader.cpp 

SubstitutionModel.o: SubstitutionModel.cpp SubstitutionModel.h 
	$(CXX) $(CXXFLAGS) -c SubstitutionModel.cpp 

TestSubstitutionModel.o: TestSubstitutionModel.cpp TestSubstitutionModel.h SubstitutionModel.cpp SubstitutionModel.h
	$(CXX) $(CXXFLAGS) -c TestSubstitutionModel.cpp 

HKY85GapSubstitutionModel.o: HKY85GapSubstitutionModel.cpp HKY85GapSubstitutionModel.h SubstitutionModel.o HKY85GapModel.o
	$(CXX) $(CXXFLAGS) -c HKY85GapSubstitutionModel.cpp 

HKY85SubstitutionModel.o: HKY85SubstitutionModel.cpp HKY85SubstitutionModel.h SubstitutionModel.o
	$(CXX) $(CXXFLAGS) -c HKY85SubstitutionModel.cpp 

PairedHKY85GapSubstitutionModel.o: PairedHKY85GapSubstitutionModel.cpp PairedHKY85GapSubstitutionModel.h HKY85GapSubstitutionModel.o
	$(CXX) $(CXXFLAGS) -c PairedHKY85GapSubstitutionModel.cpp 

PairedHKY85SubstitutionModel.o: PairedHKY85SubstitutionModel.cpp PairedHKY85SubstitutionModel.h HKY85SubstitutionModel.o
	$(CXX) $(CXXFLAGS) -c PairedHKY85SubstitutionModel.cpp 

EukSSUrRNASubstitutionModel.o: EukSSUrRNASubstitutionModel.cpp EukSSUrRNASubstitutionModel.h SubstitutionModel.o BasePairModel.o
	$(CXX) $(CXXFLAGS) -c EukSSUrRNASubstitutionModel.cpp 
	
ProSSUrRNASubstitutionModel.o: ProSSUrRNASubstitutionModel.cpp ProSSUrRNASubstitutionModel.h SubstitutionModel.o ProBasePairModel.o
	$(CXX) $(CXXFLAGS) -c ProSSUrRNASubstitutionModel.cpp 
	
PairedEukSSUrRNASubstitutionModel.o: PairedEukSSUrRNASubstitutionModel.cpp PairedEukSSUrRNASubstitutionModel.h SubstitutionModel.o
	$(CXX) $(CXXFLAGS) -c PairedEukSSUrRNASubstitutionModel.cpp 

PairedEukSSUrRNAGapSubstitutionModel.o: PairedEukSSUrRNAGapSubstitutionModel.cpp PairedEukSSUrRNAGapSubstitutionModel.h SubstitutionModel.o
	$(CXX) $(CXXFLAGS) -c PairedEukSSUrRNAGapSubstitutionModel.cpp 

PairedProSSUrRNASubstitutionModel.o: PairedProSSUrRNASubstitutionModel.cpp PairedProSSUrRNASubstitutionModel.h SubstitutionModel.o
	$(CXX) $(CXXFLAGS) -c PairedProSSUrRNASubstitutionModel.cpp 

Log.o: Log.cpp Log.h 
	$(CXX) $(CXXFLAGS) -c Log.cpp 

clean: 
	rm -f -v *.o maxAlike

.PHONY: clean
