# Semana 1: retardo, multiplexación estadística, colas y encapsulamiento.
# Se usa dentro del contenedor del curso.
#
#   make              compila los programas en C
#   make test         compila y corre las pruebas; levanta la topología, mide
#                     sobre ella y la destruye siempre, aunque algo falle
#   make up           levanta la topología topo/path.clab.yml para el laboratorio
#   make down         destruye la topología y su red de Docker
#   make clean        hace lo mismo que down y borra lo generado
#
# Con la topología arriba, las mediciones se repiten con
#   python3 experiments.py [cable|size|bottleneck|queue|web]

CC = gcc
CFLAGS = -Wall -Wextra -std=c17 -O2
LDLIBS = -lm
PROGRAMS = delay bottleneck multiplex queue_sim layers
TOPOLOGY = topo/path.clab.yml
NETWORK = redes-w01

.PHONY: all test up down clean

all: $(PROGRAMS)

test: all
	python3 -m unittest -v; status=$$?; $(MAKE) --no-print-directory down; exit $$status

up:
	containerlab deploy --reconfigure -t $(TOPOLOGY)

down:
	@containerlab destroy -t $(TOPOLOGY) --cleanup >/dev/null 2>&1 || true
	@docker network rm $(NETWORK) >/dev/null 2>&1 || true

clean: down
	rm -f $(PROGRAMS)
	rm -rf captures __pycache__
