export LC_ALL=C
CXXFLAGS= -Wall -pedantic -g -ggdb
LDFLAGS= -lpthread

OBJS=main.o simu.o basesched.o basetask.o tasks.o sched_rr.o sched_fcfs.o sched_sjf.o sched_rsjf.o sched_mfq.o
MAIN=simusched

.PHONY: all clean new informe
all: $(MAIN)

$(MAIN): $(OBJS)
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

%.o: %.cpp %.h basesched.h
basesched.o: basesched.cpp basesched.h
basetask.o: basetask.cpp basetask.h
main.o: main.cpp simu.h basetask.h basesched.h tasks.h sched_fcfs.h \
	sched_mfq.h sched_rr.h sched_rsjf.h sched_sjf.h
simu.o: simu.cpp simu.h basetask.h basesched.h
simusched.o: simusched.cpp basetask.h basesched.h tasks.h
tasks.o: tasks.cpp tasks.h basetask.h

clean:
	rm -f $(OBJS) $(MAIN)
	rm -rf informe/imagenes
	rm -rf informe/*.pdf

informe/informe.pdf: informe/informe.md
	pandoc informe/informe.md -o informe/informe.pdf

informe: informe/informe.pdf
preinforme: ejercicio1 ejercicio2 ejercicio3 ejercicio5

new: clean all

makedir:
	mkdir -p informe/imagenes

ejercicio1: all makedir
	./simusched consola.tsk 1 1 2 SchedFCFS | ./graphsched.py > informe/imagenes/ejercicio1.png

ejercicio2: all makedir
	./simusched ejer2.tsk 1 2 99 SchedFCFS | ./graphsched.py > informe/imagenes/ejercicio2_1core.png
	./simusched ejer2.tsk 2 2 99 SchedFCFS | ./graphsched.py > informe/imagenes/ejercicio2_2core.png
	./simusched ejer2.tsk 4 2 99 SchedFCFS | ./graphsched.py > informe/imagenes/ejercicio2_4core.png

ejercicio3: all makedir
	./simusched ejer3.tsk 1 2 99 SchedFCFS | ./graphsched.py > informe/imagenes/ejercicio3_1core.png

ejercicio5: all makedir
	./simusched ejer2.tsk 1 2 99 SchedRR 1 02 | ./graphsched.py > informe/imagenes/ejercicio5_1core_02q.png
	./simusched ejer2.tsk 1 2 99 SchedRR 1 05 | ./graphsched.py > informe/imagenes/ejercicio5_1core_05q.png
	./simusched ejer2.tsk 1 2 99 SchedRR 1 10 | ./graphsched.py > informe/imagenes/ejercicio5_1core_10q.png
