libmqtt/Makefile.linux
Johannes Schriewer 7a2f11d76b Hide server-only functionality for client builds and vice versa.
Coverage and Test targets forcefully enable both sides to do their things.

Re #17
2018-07-30 23:25:55 +02:00

56 lines
1.2 KiB
Text

SRCS=src/mqtt.c src/packet.c src/protocol.c src/state_queue.c src/subscriptions.c src/debug.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
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
$(TARGET): $(OBJS)
$(AR) -cr $(TARGET) $(OBJS)
$(DEBUG_TARGET): $(DEBUG_OBJS)
$(AR) -cr $(DEBUG_TARGET) $(DEBUG_OBJS)
%.do: %.c
$(CC) $(CFLAGS) $(DEBUG_FLAGS) -o $@ -c $<
%.o: %.c
$(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/
.PHONY: coverage test