.PHONY: clean
CC=gcc
DEBUG?=0

DPI_SDK?=../../../../../..
IXE_PLUGIN_VER?=1.0.0-20
DPI_PLUGIN_VER?=$(IXE_PLUGIN_VER)

VPP_DIR_INCLUDE?=/usr/include
VPP_DIR_INSTALL?=/lib/x86_64-linux-gnu/vpp_plugins

VPP_PLUGIN_DIR_OBJ = obj
VPP_PLUGIN_DIR_LIB = lib

VPP_PLUGIN_LIB = dpi_plugin.so

IXE_SDK_DIR_INCLUDE=$(DPI_SDK)/include
IXE_SDK_DIR_LIB=$(DPI_SDK)/lib

CFLAGS = -fPIC -O3 -I$(IXE_SDK_DIR_INCLUDE) -I. -I.. -I$(VPP_DIR_INCLUDE) -DDPI_PLUGIN_VER=\"$(DPI_PLUGIN_VER)\"
ifneq ($(DEBUG), 0)
CFLAGS += -DDEBUG=$(DEBUG)
endif
LDFLAGS = -shared -fPIC -L$(IXE_SDK_DIR_LIB)

LIBS = -lqmengine

DEPS = dpi.h

SRCS = dpi.c \
       dpi_node.c

_OBJ := $(SRCS:.c=.o)
OBJ = $(patsubst %,$(VPP_PLUGIN_DIR_OBJ)/%,$(_OBJ))

TARGET=$(VPP_PLUGIN_DIR_LIB)/$(VPP_PLUGIN_LIB)

all: $(TARGET)

$(VPP_PLUGIN_DIR_OBJ)/%.o: %.c $(DEPS)
	$(CC) -c $(CFLAGS) $< -o $@

$(VPP_PLUGIN_DIR_OBJ):
	mkdir -p $(VPP_PLUGIN_DIR_OBJ)

$(VPP_PLUGIN_DIR_LIB):
	mkdir -p $(VPP_PLUGIN_DIR_LIB)

$(TARGET): $(VPP_PLUGIN_DIR_OBJ) $(OBJ) $(VPP_PLUGIN_DIR_LIB)
	$(CC) $(LDFLAGS) $(OBJ) $(LIBS) -o $@

clean:
	rm -f $(VPP_PLUGIN_DIR_OBJ)/*.o  $(VPP_PLUGIN_DIR_LIB)/* *~ core
	rm -fd $(VPP_PLUGIN_DIR_OBJ)
	rm -fd $(VPP_PLUGIN_DIR_LIB)

install: $(TARGET)
	cp $(TARGET) $(VPP_DIR_INSTALL)

uninstall:
	rm -f $(VPP_DIR_INSTALL)/$(VPP_PLUGIN_LIB)
