CPP = g++
ASM = nasm
ASMFLAGS = -f elf64 -g -F dwarf
DBG = gdb
CFLAGS = -g -std=c++11 -ggdb -Wall -pedantic
OPENCV_LIB = `pkg-config --cflags --libs opencv`
OBJS=codigo/funciones/funciones.o
ASM_OBJS=codigo/asm/convolucion_suavizado.o codigo/asm/convolucion_gradiente.o
MAIN_OBJ=codigo/main/main.o
SOURCES=codigo/main/main.cpp

BIN = codigo/main/main

.PHONY: all clean

$(BIN): $(MAIN_OBJ) $(OBJS) $(ASM_OBJS)
	$(CPP) $(CFLAGS) $(MAIN_OBJ) $(OBJS) $(ASM_OBJS) -o main $(OPENCV_LIB) -lpthread

codigo/main/main.o: codigo/main/main.cpp
	$(CPP) $(CFLAGS) -c -o $@ $<

codigo/funciones/funciones.o: codigo/funciones/funciones.cpp
	$(CPP) $(CFLAGS) -c -o $@ $<
	
codigo/asm/convolucion_suavizado.o: codigo/asm/convolucion_suavizado.asm
	$(ASM) $(ASMFLAGS) -o $@ $<
	
codigo/asm/convolucion_gradiente.o: codigo/asm/convolucion_gradiente.asm
	$(ASM) $(ASMFLAGS) -o $@ $<

codigo/asm/copiar_imagen.o: codigo/asm/copiar_imagen.asm
	$(ASM) $(ASMFLAGS) -o $@ $<

all: $(BIN)

clean:
	rm -f main
	rm -f $(MAIN_OBJ)
	rm -f $(OBJS)
	rm -f $(ASM_OBJS)
	rm -f ./$(BIN)
