CXX = g++
CC  = gcc

# use -W instead of -Wextra, so that it works with old versions of g++
CXXFLAGS = -Wall -W -Wcast-qual -Wwrite-strings -Wsign-promo	\
-Wcast-align -Wno-long-long -ansi -pedantic -O3 -g

CCFLAGS = -Wall -g

DBSRC = Alphabet.cc MultiSequence.cc CyclicSubsetSeed.cc		\
SubsetSuffixArray.cc LastdbArguments.cc io.cc SubsetSuffixArraySort.cc	\
lastdb.cc

DBINC = Alphabet.hh MultiSequence.hh CyclicSubsetSeed.hh		\
SubsetSuffixArray.hh LastdbArguments.hh io.hh stringify.hh version.hh

ALSRC = Alphabet.cc MultiSequence.cc CyclicSubsetSeed.cc		\
SubsetSuffixArray.cc LastalArguments.cc io.cc ScoreMatrix.cc		\
DiagonalTable.cc SegmentPair.cc Alignment.cc XdropAligner.cc		\
SegmentPairPot.cc AlignmentPot.cc GeneralizedAffineGapCosts.cc		\
Centroid.cc LambdaCalculator.cc QualityScoreCalculator.cc		\
GeneticCode.cc Xdrop3FrameAligner.cc AlignmentWrite.cc			\
MultiSequenceQual.cc SegmentPairPssm.cc XdropAlignerPssm.cc lastal.cc

ALINC = Alphabet.hh MultiSequence.hh CyclicSubsetSeed.hh	\
SubsetSuffixArray.hh LastalArguments.hh io.hh ScoreMatrix.hh	\
DiagonalTable.hh SegmentPair.hh Alignment.hh XdropAligner.hh	\
SegmentPairPot.hh AlignmentPot.hh GeneralizedAffineGapCosts.hh	\
Centroid.hh LambdaCalculator.hh QualityScoreCalculator.hh	\
GeneticCode.hh Xdrop3FrameAligner.hh stringify.hh version.hh

OBJ = lambda_calculator.o

all: lastdb lastal

lastdb: $(DBSRC) $(DBINC) makefile
	$(CXX) $(CXXFLAGS) -o $@ $(DBSRC)

lastal: $(ALSRC) $(ALINC) makefile $(OBJ)
	$(CXX) $(CXXFLAGS) -o $@ $(ALSRC) $(OBJ)

$(OBJ): CA_code/*.c CA_code/*.h makefile
	$(CC) $(CCFLAGS) -c CA_code/lambda_calculator.c
