CXX      = g++

.DEFAULT_GOAL := all

SOURCES = 
SOURCES += pheap.cpp
SOURCES += noeud.cpp

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

CXXFLAGS  += -g -Wall -std=c++11 -pedantic
LDFLAGS +=

$(OBJECTS) : %.o : %.cpp
	$(CXX) -MMD $(CXXFLAGS) -c $< -o $@

CLEAN_OBJECTS = $(OBJECTS)
TARGETS = 

########## test ##########

TEST_SOURCES = test.cpp
TEST_OBJECTS = $(TEST_SOURCES:.cpp=.o)

test : $(TEST_OBJECTS) $(OBJECTS) $(HEADERS)
	$(CXX) $(TEST_OBJECTS) $(OBJECTS) -o $@ $(LDFLAGS)
	
$(TEST_OBJECTS): %.o : %.cpp
	$(CXX) -MMD $(CXXFLAGS) -c $< -o $@

all : test
TARGETS += test
CLEAN_OBJECTS += $(TEST_OBJECTS)

########## cleanup ##########
DEPS = $(CLEAN_OBJECTS:.o=.d)

clean:
	@rm -f $(DEPS) $(TARGETS) $(CLEAN_OBJECTS)

########## archive ##########
archive :
	tar czvf rendu_$(USER).tar.gz \
		--transform "s-^-Rendu_$(USER)/-" \
		--exclude "*.tar.gz" \
		$(foreach dep, $(DEPS),--exclude "$(dep)" ) \
		$(foreach obj, $(CLEAN_OBJECTS),--exclude "$(obj)" ) \
		$(foreach target, $(TARGETS),--exclude "$(target)" ) \
		*

-include $(DEPS)
