# Programe su tarea en el archivo disco.c
# Para revisar las opciones de compilacion y ejecucion,
# ingrese en el terminal el comando: make
# Este directorio ya incluye psystem64-alfa4

NSYSTEM=psystem64-alfa4
LIBNSYS= $(NSYSTEM)/lib/libnSys.a

# Con opciones de debugging
DEF=
OPT=-g
INCLUDE=-I$(NSYSTEM)/include -I$(NSYSTEM)/src
CFLAGS=$(OPT) $(DEF) -Wall -pedantic -std=c99 $(INCLUDE)
LDFLAGS=-g
LDLIBS=-pthread $(LIBNSYS)

VGFLAGS= --leak-check=full --show-leak-kinds=all --track-origins=yes

MOPT=--no-print-directory

all:
	@less README.txt

test-disco: test-disco.o disco.o $(LIBNSYS)

$(LIBNSYS):
	cd $(NSYSTEM)/src ; make OPT=$(OPT)

test-disco.o disco.o: disco.h $(NSYSTEM)/include/nSystem.h $(NSYSTEM)/include/fifoqueues.h

run-O:
	@./check.sh O
	@make $(MOPT) OPT=-O "LDFLAGS=" test-disco
	./test-disco

run-g:
	@./check.sh g
	@make $(MOPT) test-disco
	./test-disco

ddd:
	@./check.sh g
	@make $(MOPT) test-disco
	@( sleep 1; cat .ddd.txt ) &
	ddd test-disco

run-vg:
	@./check.sh vg
	@make $(MOPT) DEF="-DVALGRIND=1" test-disco
	@( sleep 1; cat .run-vg.txt ) &
	bash -c "valgrind $(VGFLAGS) ./test-disco |& tee run.log"

ddd-vg:
	@./check.sh vg
	@make $(MOPT) DEF="-DVALGRIND=1" test-disco
	ddd test-disco &
	@( sleep 1; cat .ddd-vg.txt ) &
	valgrind $(VGFLAGS) --vgdb=yes --vgdb-error=0 ./test-disco

rerun-vg:
	@./check.sh vg
	@make $(MOPT) DEF="-DVALGRIND=1" test-disco
	@( sleep 1; cat .ddd-vg.txt ) &
	valgrind $(VGFLAGS) --vgdb=yes --vgdb-error=0 ./test-disco

run-drd:
	@./check.sh vg
	@make $(MOPT) DEF="-DDRD=1" test-disco
	@( sleep 1; cat .run-vg.txt ) &
	bash -c "valgrind --tool=drd ./test-disco |& tee run.log"

ddd-drd:
	@./check.sh vg
	@make $(MOPT) DEF="-DDRD=1" test-disco
	ddd test-disco &
	@( sleep 1; cat .ddd-vg.txt ) &
	valgrind --tool=drd --vgdb=yes --vgdb-error=0 ./test-disco

rerun-drd:
	@./check.sh vg
	@make $(MOPT) DEF="-DDRD=1" test-disco
	@( sleep 1; cat .ddd-vg.txt ) &
	valgrind --tool=drd --vgdb=yes --vgdb-error=0 ./test-disco

vg:
	@ps a | grep valgrind | grep -v grep

clean:
	rm -f *.o test-disco .last.txt
	@( cd $(NSYSTEM)/src ; make $(MOPT) clean )
