# Variables
JC = javac
JFLAGS = -g

# Cible par défaut
all: TestMain.class

# Dépendance circulaire délibérée
FunctionA.class: FunctionA.java FunctionB.class
	$(JC) $(JFLAGS) FunctionA.java

FunctionB.class: FunctionB.java FunctionC.class
	$(JC) $(JFLAGS) FunctionB.java

FunctionC.class: FunctionC.java FunctionA.class
	$(JC) $(JFLAGS) FunctionC.java

# Cible principale
TestMain.class: TestMain.java FunctionA.class FunctionB.class FunctionC.class
	$(JC) $(JFLAGS) TestMain.java

# Nettoyage
clean:
	rm -f *.class

# Cibles spéciales
.PHONY: all clean