SRCS=src/mqtt.c src/packet.c src/protocol.c src/state_queue.c src/subscriptions.c platform/linux.c OBJS=$(SRCS:%.c=%.o) DEBUG_OBJS=$(SRCS:%.c=%.do) COVERAGE_FILES=$(SRCS:%.c=%.gcno) $(SRCS:%.c=%.gcda) TARGET=libmqtt.a DEBUG_TARGET=libmqtt-debug.a MAJOR_VERSION=0 MINOR_VERSION=1 PLATFORM_FLAGS= AR=ar CC=gcc EXTRA_CFLAGS= CFLAGS=-g -Os -Wall -pthread -I./platform -I./src $(EXTRA_CFLAGS) $(PLATFORM_FLAGS) COVERAGE_FLAGS=-fprofile-arcs -ftest-coverage DEBUG_FLAGS=-DDEBUG=1 $(COVERAGE_FLAGS) all: $(TARGET) $(DEBUG_TARGET) test: $(MAKE) EXTRA_CFLAGS="-DMQTT_SERVER=1 -DMQTT_CLIENT=1" clean all $(MAKE) -C tests $(MAKE) clean coverage: $(MAKE) EXTRA_CFLAGS="-DMQTT_SERVER=1 -DMQTT_CLIENT=1" clean all $(MAKE) DEBUG_FLAGS= -C tests clean all lcov --capture --directory . --output-file lcov.info rm -rf coverage mkdir -p coverage genhtml -o coverage lcov.info dist: $(TARGET) mkdir -p dist/include mkdir -p dist/lib cp libmqtt.a dist/lib cp src/mqtt.h dist/include (cd dist && tar czvf ../libmqtt-$(MAJOR_VERSION).$(MINOR_VERSION).tar.gz .) src/mqtt.h: src/mqtt.h.in sed \ -e 's/@LIBMQTT_VERSION_MAJOR@/'$(MAJOR_VERSION)'/' \ -e 's/@LIBMQTT_VERSION_MINOR@/'$(MINOR_VERSION)'/' \ -e 's/@LIBMQTT_BUILD_DATE@/"'`date +%Y-%m-%d_%H-%M-%S`'"/' \ src/mqtt.h.in >src/mqtt.h $(TARGET): $(OBJS) $(AR) -cr $(TARGET) $(OBJS) $(DEBUG_TARGET): $(DEBUG_OBJS) $(AR) -cr $(DEBUG_TARGET) $(DEBUG_OBJS) %.do: %.c src/mqtt.h $(CC) $(CFLAGS) $(DEBUG_FLAGS) -o $@ -c $< %.o: %.c src/mqtt.h $(CC) $(CFLAGS) -o $@ -c $< mqtt.o: mqtt.h clean: $(MAKE) -C tests clean rm -f $(TARGET) $(DEBUG_TARGET) rm -f $(OBJS) $(DEBUG_OBJS) rm -f $(COVERAGE_FILES) rm -f *.gcov rm -rf docs/ rm -rf coverage/ rm -rf dist/ rm -f libmqtt-$(MAJOR_VERSION).$(MINOR_VERSION).tar.gz .PHONY: coverage test src/mqtt.h