Update doc revision and pdf cover.
[apps/low-level-can-service.git] / CAN-binder / libs / isotp-c / Makefile
1 CC = gcc
2 INCLUDES = -Isrc -Ideps/bitfield-c/src
3 CFLAGS = $(INCLUDES) -c -Wall -Werror -g -ggdb -std=gnu99 -coverage
4 LDFLAGS = -coverage
5 LDLIBS = -lcheck -lm -lrt -lpthread
6
7 TEST_DIR = tests
8 TEST_OBJDIR = build
9
10 # Guard against \r\n line endings only in Cygwin
11 OSTYPE := $(shell uname)
12 ifneq ($(OSTYPE),Darwin)
13         OSTYPE := $(shell uname -o)
14         ifeq ($(OSTYPE),Cygwin)
15                 TEST_SET_OPTS = igncr
16         endif
17 endif
18
19 LIBS_PATH = deps
20 SRC = $(wildcard src/**/*.c)
21 SRC += $(wildcard deps/bitfield-c/src/**/*.c)
22 OBJS = $(patsubst %,$(TEST_OBJDIR)/%,$(SRC:.c=.o))
23 TEST_SRC = $(wildcard $(TEST_DIR)/test_*.c)
24 TESTS=$(patsubst %.c,$(TEST_OBJDIR)/%.bin,$(TEST_SRC))
25 TEST_SUPPORT_SRC = $(TEST_DIR)/common.c
26 TEST_SUPPORT_OBJS = $(patsubst %,$(TEST_OBJDIR)/%,$(TEST_SUPPORT_SRC:.c=.o))
27
28 all: $(OBJS)
29
30 test: $(TESTS)
31         @set -o $(TEST_SET_OPTS) >/dev/null 2>&1
32         @export SHELLOPTS
33         @sh runtests.sh $(TEST_OBJDIR)/$(TEST_DIR)
34
35 COVERAGE_INFO_FILENAME = coverage.info
36 COVERAGE_INFO_PATH = $(TEST_OBJDIR)/$(COVERAGE_INFO_FILENAME)
37 coverage:
38         @lcov --base-directory . --directory src --zerocounters -q
39         @make clean
40         @make test
41         @lcov --base-directory . --directory $(TEST_OBJDIR) -c -o $(TEST_OBJDIR)/coverage.info
42         @lcov --remove $(COVERAGE_INFO_PATH) "$(LIBS_PATH)/bitfield-c/*" -o $(COVERAGE_INFO_PATH)
43         @genhtml -o $(TEST_OBJDIR)/coverage -t "isotp-c test coverage" --num-spaces 4 $(COVERAGE_INFO_PATH)
44         @$(BROWSER) $(TEST_OBJDIR)/coverage/index.html
45         @echo "$(GREEN)Coverage information generated in $(TEST_OBJDIR)/coverage/index.html.$(COLOR_RESET)"
46
47 $(TEST_OBJDIR)/%.o: %.c
48         @mkdir -p $(dir $@)
49         $(CC) $(CFLAGS) $(CC_SYMBOLS) $(INCLUDES) -o $@ $<
50
51 $(TEST_OBJDIR)/%.bin: $(TEST_OBJDIR)/%.o $(OBJS) $(TEST_SUPPORT_OBJS)
52         @mkdir -p $(dir $@)
53         $(CC) $(LDFLAGS) $(CC_SYMBOLS) $(INCLUDES) -o $@ $^ $(LDLIBS)
54
55 clean:
56         rm -rf $(TEST_OBJDIR)