# Compilateur C++
CXX = clang++

# Options de compilation
# Optimisation facultative pour une version finale :
# ajouter -O2 a CXXFLAGS

CXXFLAGS = \
	-std=c++17 \
	-Wall \
	-Wextra \
	-MMD \
	-MP

# Nom executable
TARGET = programme

# Fichiers sources a compiler
SOURCES = main.cpp Matrice.cpp Complexe.cpp

# Fichiers objets et dependances generes automatiquement
OBJECTS = $(SOURCES:.cpp=.o)
DEPS = $(OBJECTS:.o=.d)

# Cibles artificielles
.PHONY: build run clean

# Construction
build: $(TARGET)

# Edition de liens
$(TARGET): $(OBJECTS)
	$(CXX) $^ -o $@

# Compilation separee
%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

# Compilation si necessaire, puis execution
run: build
	./$(TARGET)

# Suppression des fichiers generes
clean:
	rm -f $(TARGET) $(OBJECTS) $(DEPS)

# Inclusion des dependances generees automatiquement
-include $(DEPS)