Skip to content
Snippets Groups Projects
Makefile 2.12 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jakob Olsson's avatar
    Jakob Olsson committed
    CC=gcc # gcc || clang
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    PROG = wifimngr
    
    OBJS = debug.o uci.o ubus.o wifimngr.o wifimngr_event.o main.o wps.o
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    
    
    BINDIR ?= /usr/sbin
    
    
    PROG_CFLAGS = $(CFLAGS) -DHAS_UBUS -Wall -Werror -fstrict-aliasing -ggdb
    
    Janusz Dziedzic's avatar
    Janusz Dziedzic committed
    #PROG_CFLAGS += -DDONOT_CREATE_AFFILIATED_IFACE_OBJECT
    
    #PROG_CFLAGS += -DWIFI_CACHE_SCANRESULTS
    
    CFLAGS += -Wno-address-of-packed-member
    
    PROG_LDFLAGS = $(LDFLAGS)
    
    PROG_LIBS += -lssl -lcrypto -leasy -lwifiutils -lwifi-7 -lm -ldl
    
    PROG_LIBS += -luci -lubus -lubox -ljson-c -lblobmsg_json -lnl-genl-3 -lnl-3 -lgcov
    
    GCOV = gcov
    
    CODECOVERAGE_SRC = main.c wifimngr.c uci.c
    ifneq (,$(findstring HAS_UBUS,$(CFLAGS)))
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    CODECOVERAGE_SRC += ubus.c
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    
    
    BUILDCOLOR=@printf "\e[1;32mBuilding $< \e[0m\n"
    
    
    .PHONY: version clean install help help.h
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    all: wifimngr
    
    $(OBJS): help.h version.h
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    
    
    %.o: %.c
    	$(BUILDCOLOR)
    	$(CC) $(PROG_CFLAGS) -fPIC -c -o $@ $<
    
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    version: version.h files.md5
    
    
    	@echo "const char *helpstr = \" \\" > $@;
    
    	@base64 -w0 ./help.json >> $@;
    
    	@echo "\";" >> $@
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    version.h:
    	@(dirty=$(shell ./verifysum.sh); \
    	[ -f version.h ] || { \
    		[ -f VERSION ] && basever=$(shell cat VERSION) || \
    			basever=Unknown; \
    		xver=$(shell date +'%y%V%u-%H%M'); \
    		echo "const char *wifimngr_base_version = \"$$basever\";" > $@; \
    	}; \
    	echo "const char *wifimngr_xtra_version = \"$$xver$$dirty\";" >> $@; \
    	)
    
    files.md5:
    	@md5sum *.c > $@
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    
    wifimngr: $(OBJS)
    
    	$(CC) $(PROG_LDFLAGS) -o $@ $^ $(PROG_LIBS)
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    test: CFLAGS += -fPIC
    test: ${OBJS}
    	${CC} ${LDFLAGS} -shared -o libwifimngr.so ${OBJS} ${LIBS}
    
    unit-test: coverage
    	make -C test/cmocka unit-test WIFIMNGR_LIB_DIR=$(PWD)
    
    functional-test: coverage
    	make -C test/cmocka functional-test WIFIMNGR_LIB_DIR=$(PWD)
    
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    coverage: CFLAGS  += -g -O0 --coverage -fPIC
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    coverage: LDFLAGS += --coverage
    coverage: test wifimngr
    	$(foreach testprog, $(CODECOVERAGE_SRC), $(GCOV) $(testprog);)
    
    
    $(DESTDIR)/$(BINDIR)/%: %
    	install -D $< $@
    
    install: $(addprefix $(DESTDIR)/$(BINDIR)/,wifimngr)
    
    
    Anjan Chanda's avatar
    Anjan Chanda committed
    clean:
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	rm -f *.o libwifimngr.so $(PROG)
    	rm -f *.xml *.html
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	find -name '*.gcda' -exec rm {} -fv \;
    	find -name '*.gcno' -exec rm {} -fv \;
    	find -name '*.gcov' -exec rm {} -fv \;
    	make -C test/cmocka clean