# Makefile for qosmngr include common.mk -include Makefile.diag.inc QOSMNGR_LIB=libqosmngr.so GCOV=gcov SRC_DIR = src CODECOVERAGE_SRC = $(addprefix $(SRC_DIR)/, qosmngr.c ) PROG = $(PROJECT_TOPLEVEL)/qosmngr SHARED_LIB = $(PROJECT_TOPLEVEL)/libqosmngr.so OBJS = $(addprefix $(SRC_DIR)/, main.o qosmngr.o ) PROG_CFLAGS = $(CFLAGS) -I$(INCLUDE_DIR) $(DIAG_CFLAGS) -Werror -fstrict-aliasing PROG_LDFLAGS = $(LDFLAGS) PROG_LIBS = $(COMMON_LDFLAGS) -lgcov # MUSL has the following issue in snprintf, so it is ignored: PROG_CFLAGS += -Wno-format-nonliteral .PHONY: all clean all: version $(PROG) $(PROG): $(INCLUDE_DIR)/version.h $(OBJS) $(CC) $(PROG_LDFLAGS) -o $@ $^ $(PROG_LIBS) ${QOSMNGR_LIB}: $(CC) $(PROG_LDFLAGS) -shared -o $@ $^ $(PROG_LIBS) $(SHARED_LIB): $(INCLUDE_DIR)/version.h $(OBJS) version: $(INCLUDE_DIR)/version.h $(INCLUDE_DIR)/version.h: $(PROJECT_TOPLEVEL)/VERSION @(dirty=$(shell (git status --porcelain | grep -q .) && echo -dirty); \ [ -f $(PROJECT_TOPLEVEL)/VERSION ] && basever=$(shell cat $(PROJECT_TOPLEVEL)/VERSION) || \ basever=Unknown; \ xver=$(shell date +'%y%V%u-%H%M'); \ echo "const char *qosmngr_base_version = \"$$basever\";" > $@; \ echo "const char *qosmngr_xtra_version = \"$$xver$$dirty\";" >> $@; \ ) test: ${QOSMNGR_LIB} coverage: CFLAGS += -g -O0 -fprofile-arcs -ftest-coverage -fPIC coverage: LDFLAGS += --coverage coverage: test $(PROG) $(foreach testprog, $(CODECOVERAGE_SRC), $(GCOV) $(testprog);) functional-test: test $(MAKE) -C test/cmocka functional-test %.o: %.c $(CC) $(PROG_CFLAGS) $(FPIC) -c -o $@ $< clean: rm -f *.o $(SHARED_LIB) $(PROG) $(INCLUDE_DIR)/version.h rm -f *.xml *.html find -name '*.gcda' -exec rm {} -fv \; find -name '*.gcno' -exec rm {} -fv \; find -name '*.gcov' -exec rm {} -fv \; make -C test/cmocka clean