GRAPHIC_PROGS=$(wildcard exemple-graphisme*.cpp segment*.cpp cercle*.cpp premier-dessin*.cpp disque*.cpp souris*.cpp)
OTHER_PROGS=$(wildcard factorielle-*.cpp) fibonacci-exemple fibonacci-test
PROGS=$(GRAPHIC_PROGS) $(OTHER_PROGS)
TARGET=$(PROGS:%.cpp=%)

# -NDEBUG pour tester comme dans l'environnement conda où elle est définie
CXX=clang++
CXXFLAGS+=-std=c++17 -g -Wall -Wno-narrowing -pedantic -DNDEBUG

all: $(TARGET)

# filter-out factorielle factorielle-test factorielle-exemple fibonacci-correction fibonacci-exemple-correction fibonacci-test-correction affiche-ppm mlv-test/11_turtle, $(TARGET))

factorielle-exemple: factorielle.o factorielle-exemple.o
	$(CXX) $^ -o $@

factorielle-test: factorielle.o factorielle-test.o
	$(CXX) $^ -o $@

fibonacci-exemple: fibonacci-correction.o fibonacci-exemple.o
	$(CXX) $^ -o $@

fibonacci-test: fibonacci-correction.o fibonacci-test.o
	$(CXX) $^ -o $@

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $^ -o $@

$(GRAPHIC_PROGS:%.cpp=%): %: %.o primitives.o
	$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ -lsfml-window -lsfml-graphics -lsfml-system

clean:
	-rm -rf $(TARGET) *.o