CC ?= gcc

ifdef DEBUG
CFLAGS += -O0 -ggdb3
endif

ifeq (,$(findstring EASYMESH_VERSION,$(CFLAGS)))
$(info EASYMESH_VERSION is not set. Build for 6)
EASYMESH_VERSION=6
CFLAGS+=-DEASYMESH_VERSION=6
else
EASYMESH_VERSION=$(patsubst -DEASYMESH_VERSION=%,%,$(filter -DEASYMESH_VERSION=%,$(CFLAGS)))
$(info EASYMESH_VERSION passed is $(EASYMESH_VERSION))
endif

CFLAGS += -I. -I./.. -Wall -Werror -ggdb3

EXECS ?= decollector

OBJS =  utils.o \
	debug.o \
	timer.o \
	decollector.o \
	config.o \
	ubus.o \
	collector.o \
	cmdu.o \
	tlv.o \
	main.o \
	dm.o \
	backhaul_topology.o \
	backhaul_topology_dbg.o \
	dump.o \
	dump2.o \
	sta_ratings.o

LIBS += -luci -lubus -lubox -ljson-c -lblobmsg_json \
	-leasy \
	-lieee1905 \
	-lmaputil \
	-lwifiutils \
	-lm

.PHONY: all clean test TODO version.h

all: version.h $(EXECS)

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

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

decollector: $(OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)


test: TODO

TODO:
	@echo "TODO .........."

#CFLAGS += -fPIC
#test: $(OBJS)
#	$(CC) $(CFLAGS) -shared  -Wl,-soname,wfa_delm_test.so \
#		-o wfa_delm_test.so $(OBJS1) $(LDFLAGS) $(LIBS)
#	$(CP) wfa_delm_test.so ../wfa_delm_test.so

unit-test: coverage
	make -C ../test/cmocka unit-test WFADATAD_LIB_DIR=$(PWD)

coverage: CFLAGS  += -g -O0 -fprofile-arcs -ftest-coverage
coverage: LDFLAGS += --coverage
coverage: clean_objs ${EXEC}
	$(foreach testprog, $(CODECOVERAGE_SRC), $(GCOV) $(testprog);)

clean_objs:
	rm -f *.o

clean:
	rm -f *.o decollector
	rm -f ../*.so*
	rm -f *.xml *.html
	find -name '*.gcda' -exec rm {} -fv \;
	find -name '*.gcno' -exec rm {} -fv \;
	find -name '*.gcov' -exec rm {} -fv \;
