CC ?= gcc
EXECS = hostmngr
LIBDM = libhostmngr.so
LIBDMEXT = libhostext.so
HOSTMNGR_VERSION:=0.1
CFLAGS += -I. -D_GNU_SOURCE
CFLAGS += -I/usr/include/libnl3
CFLAGS += -Wall

ifeq ($(CC),clang)
	CFLAGS += -Wno-gnu-variable-sized-type-not-at-end
endif

CFLAGS += -DUSE_IEEE1905_TOPOLOGY_PLUGIN

OBJS =  lookup3_hash.o \
	util.o \
	debug.o \
	timer.o \
	config.o \
	neigh.o \
	history.o \
	node.o \
	netlink.o \
	stats.o \
	ubus.o \
	hostmngr.o \
	arping.o \
	main.o

ifneq (,$(findstring HAS_WIFI,$(CFLAGS)))
OBJS += wifi_api.o
endif

LIBS = -leasy -lubus -lubox -ljson-c -lblobmsg_json -luci
LIBS += -lnl-3 -lnl-genl-3 -lnl-route-3
LIBS += -lnetfilter_conntrack -lnfnetlink -lmnl -lwifiutils

ifneq (,$(findstring HAS_WIFI,$(CFLAGS)))
LIBS += -lwifi-7
endif


.PHONY: all clean version.h

all: version $(EXECS) $(LIBDM) $(LIBDMEXT)

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

hostmngr: $(OBJS)
	$(CC) $(LDFLAGS) -L. -o $@ $^ $(LIBS)

$(LIBDM):
	make -C bbf_plugin libhostmngr.so

$(LIBDMEXT):
	make -C bbf_plugin libhostext.so

version.h:
	@(\
	[ command -v git > /dev/null 2>&1 ] || { \
		h=$(shell git rev-parse --short=8 HEAD); \
	}; \
	echo "const char *verstring = \"$(HOSTMNGR_VERSION)\";" > $@; \
	echo "const char *githash = \"$$h\";" >> $@; \
	)

version: version.h

clean:
	rm -f *.o $(EXECS)
