CXX := g++
CXXFLAGS := -std=c++17 -Wall -Wextra -I./e1
VALGRIND := valgrind --leak-check=full --track-origins=yes

# Ejecutables en sus respectivas carpetas
E1_EXEC := e1/main_e1

# Objetos directamente en los subdirectorios
E1_OBJS := e1/robot.o e1/linearrobot.o e1/diagonalrobot.o e1/robotmanager.o e1/main_e1.o

# Compilar todo
all: e1

# --- Compilar ejercicio 1 ---
e1: $(E1_EXEC)

$(E1_EXEC): $(E1_OBJS)
	$(CXX) $(CXXFLAGS) -o $@ $^

# Reglas para compilar objetos en e1
e1/%.o: e1/%.cc
	$(CXX) $(CXXFLAGS) -c -o $@ $<

# --- Ejecutar ---
run: $(E1_EXEC)
	./$(E1_EXEC)

# --- Ejecutar con Valgrind ---

runv: $(E1_EXEC)
	$(VALGRIND) ./$(E1_EXEC)

# --- Comprimir para entrega ---
tgz:
	tar czf ../irp2-ej.tgz -C .. $(addprefix irp2-ej/, \
		e1/diagonalrobot.cc \
		e1/diagonalrobot.h \
		e1/linearrobot.cc \
		e1/linearrobot.h \
		e1/robot.cc \
		e1/robot.h \
		e1/robotmanager.cc \
		e1/robotmanager.h)


# --- Limpiar ---
clean:
	find . -name "*.o" -delete
	rm -f e1/main_e1

.PHONY: all e1 run runv tgz clean

