PROG = collection
OBJS = main.o collection.o linkedlist.o variablearray.o
CC = g++
DBGFLAGS = -g -O0
ifdef DEBUG
    CFLAGS = $(DBGFLAGS) -D DEBUG -std=c++98 -pedantic-errors -Wall
else
    CFLAGS = -O2 -std=c++98 -Wall
endif
LDFLAGS = -lm

$(PROG): $(OBJS)
	$(CC) $(LDFLAGS) $(OBJS) -o $@

main.o: %.o: %.cpp collection.h linkedlist.h
	$(CC) -c $(CFLAGS) $<

collection.o: %.o: %.cpp %.h
	$(CC) -c $(CFLAGS) $<

linkedlist.o: %.o: %.cpp %.h collection.h
	$(CC) -c $(CFLAGS) $<

variablearray.o: %.o: %.cpp %.h collection.h
	$(CC) -c $(CFLAGS) $<

.PHONY: clean

clean:
	@rm -f ./$(OBJS) ./$(PROG)