COMPILE_OPTIONS=-Wall -O2
COMPILE_OPTIONS_DEBUG=-Wall

all: debug utilleria modulos red prueba prueba2 summary

all_debug: d_debug utilleria_debug modulos_debug red_debug prueba_debug prueba2_debug summary_debug

debug: debug.h debug.c
	$(CC) $(COMPILE_OPTIONS) -c debug.c

d_debug: debug.h debug.c
	$(CC) $(COMPILE_OPTIONS_DEBUG) -c debug.c

utilleria: debug ./utilleria/utilleria.c
	cd utilleria;  $(CC) $(COMPILE_OPTIONS) -c utilleria.c

utilleria_debug: d_debug ./utilleria/utilleria.c
	cd utilleria;  $(CC) $(COMPILE_OPTIONS_DEBUG) -c utilleria.c

modulos: debug ./mensaje/mensaje.c ./nivel_transporte/transporte.c
	cd ./mensaje;make
	cd ./nivel_transporte;make

modulos_debug: d_debug ./mensaje/mensaje.c ./nivel_transporte/transporte.c
	cd ./mensaje;make all_debug
	cd ./nivel_transporte;make all_debug

red: debug red.h red.c global.h
	$(CC) $(COMPILE_OPTIONS) -c red.c

red_debug: d_debug red.h red.c global.h
	$(CC) $(COMPILE_OPTIONS_DEBUG) -c red.c

prueba: debug prueba.c
	$(CC) $(COMPILE_OPTIONS) -o prueba prueba.c red.o ./utilleria/utilleria.o ./mensaje/mensaje.o ./nivel_transporte/transporte.o \
                ./nivel_transporte/utilleria.o debug.o ../structures/types.o

prueba_debug: d_debug prueba.c
	$(CC) $(COMPILE_OPTIONS_DEBUG) -o prueba prueba.c red.o ./utilleria/utilleria.o ./mensaje/mensaje.o ./nivel_transporte/transporte.o \
                ./nivel_transporte/utilleria.o debug.o ../structures/types.o

prueba2: debug prueba2.c
	$(CC) $(COMPILE_OPTIONS) -o prueba2 prueba2.c red.o ./utilleria/utilleria.o ./mensaje/mensaje.o ./nivel_transporte/transporte.o \
                ./nivel_transporte/utilleria.o debug.o ../structures/types.o

prueba2_debug: d_debug prueba2.c
	$(CC) $(COMPILE_OPTIONS_DEBUG) -o prueba2 prueba2.c red.o ./utilleria/utilleria.o ./mensaje/mensaje.o ./nivel_transporte/transporte.o \
                ./nivel_transporte/utilleria.o debug.o ../structures/types.o

summary: debug summary.c
	$(CC) $(COMPILE_OPTIONS) -o summary summary.c red.o ./utilleria/utilleria.o ./mensaje/mensaje.o ./nivel_transporte/transporte.o \
                ./nivel_transporte/utilleria.o debug.o ../structures/types.o

summary_debug: d_debug summary.c
	$(CC) $(COMPILE_OPTIONS_DEBUG) -o summary summary.c red.o ./utilleria/utilleria.o ./mensaje/mensaje.o ./nivel_transporte/transporte.o \
                ./nivel_transporte/utilleria.o debug.o ../structures/types.o

backup:
	cp *.c Makefile ./backup

doc: ./doc/
	doxygen Doxyfile

clean:
	#rm -R *.o core *.c~ *.bak prueba prueba2
	cd utilleria; make clean
	cd mensaje;make clean
	cd nivel_transporte; make clean
	rm -rf *.o prueba prueba2 summary

