LDFLAGS = -lm
CFLAGS = -g -Wall -Wextra -std=c99
CC = gcc

# objects common to linear and affine algorithms
OBJCOMMON = aliCost.o aliGetSeq.o mem.o
# Smith-Waterman objects
OBJSW = aliCalcSW.o aliOutSW.o
# Altschul-Erickson objects
OBJAE = aliCalcAE.o aliOutAE.o

# first target is the default for "make", aliDnaLinear is the
# first one you should work on, you can add *Affine* targets
# from "all:" after implementing Altschul-Erickson
etu: aliDnaLinear

all: aliDnaLinear aliDnaAffine aliDnaAffineLongGaps aliProtAffine printStrings

aliDnaLinear: aliDnaLinear.o $(OBJCOMMON) $(OBJSW)
	$(CC) $(LDFLAGS) -o $@ $^

aliDnaAffine: aliDnaAffine.o $(OBJCOMMON) $(OBJAE)
	$(CC) $(LDFLAGS) -o $@ $^

aliDnaAffineLongGaps: aliDnaAffineLongGaps.o $(OBJCOMMON) $(OBJAE)
	$(CC) $(LDFLAGS) -o $@ $^

aliProtAffine: aliProtAffine.o $(OBJCOMMON) $(OBJAE)
	$(CC) $(LDFLAGS) -o $@ $^

printStrings: printStrings.o
	$(CC) $(LDFLAGS) -o $@ $^


%.o: %.c
	$(CC) $(CFLAGS) -MMD -c -o $@ $<

# deps made thanks to -MMD above, just include them
-include $(patsubst %.c,%.d,$(wildcard *.c))

clean:
	rm -f *.o *.d *~

