]> begriffs open source - cmsis-freertos/blob - Test/CMock/Makefile
Merge branch 'develop'
[cmsis-freertos] / Test / CMock / Makefile
1 # indent with spaces
2 .RECIPEPREFIX := $(.RECIPEPREFIX) $(.RECIPEPREFIX)
3 include makefile.in
4
5 # Change to match installed location
6 export CC ?= /usr/local/bin/gcc
7 export LD ?= /usr/local/bin/ld
8
9 # Add units here when adding a new unit test directory with the same name
10 UNITS       +=  list
11 UNITS       +=  queue
12 #UNITS       +=  timers
13 UNITS       +=  stream_buffer
14 UNITS       +=  message_buffer
15 UNITS       +=  event_groups
16
17 COVINFO     :=  $(BUILD_DIR)/cmock_test.info
18 LCOV_LIST   :=  $(foreach unit,$(UNITS),$(GENERATED_DIR)/$(unit).info )
19
20 .PHONY: all doc clean $(UNITS) directories coverage zero_coverage \
21         run run_formatted run_col_formatted run_col libs execs lcov \
22         help
23
24 all: doc coverage
25 execs: $(UNITS)
26
27 $(UNITS) : libs | directories
28     $(MAKE) -C $@
29
30 SHARED_LIBS := $(addprefix $(LIB_DIR)/,$(addsuffix .so,$(LIBS)))
31
32 libs : $(SHARED_LIBS)
33
34 doc:
35     $(MAKE) -C doc all
36
37 clean:
38     rm -rf build
39
40 help:
41     @echo -e 'Usage: $$ make <unit>\n '
42     @echo -e ' where <unit> is one of: $(UNITS) doc all run run_formatted run_col run_col_formatted coverage'
43
44 $(LIB_DIR)/libcmock.so : ${CMOCK_SRC_DIR}/cmock.c   \
45                          ${CMOCK_SRC_DIR}/cmock.h   \
46                          ${LIB_DIR}/libunity.so     \
47                          Makefile
48     mkdir -p $(LIB_DIR)
49     ${CC} -o $@ -shared -fPIC $< ${INCLUDE_DIR}
50
51 $(LIB_DIR)/libunity.so : ${UNITY_SRC_DIR}/unity.c   \
52                          ${UNITY_SRC_DIR}/unity.h   \
53                          Makefile
54     mkdir -p $(LIB_DIR)
55     ${CC} -o $@ -shared -fPIC $<
56
57 $(LIB_DIR)/libunitymemory.so: ${UNITY_MEM_DIR}/unity_memory.c   \
58                               ${UNITY_MEM_DIR}/unity_memory.h   \
59                               ${LIB_DIR}/libunity.so            \
60                               Makefile
61     mkdir -p $(LIB_DIR)
62     ${CC} -o $@ -shared -fPIC $< ${INCLUDE_DIR}
63
64 $(LIB_DIR)/libcexception.so: ${C_EXCEPTION_SRC_DIR}/CException.c    \
65                              ${C_EXCEPTION_SRC_DIR}/CException.h
66     mkdir -p $(LIB_DIR)
67     ${CC} -o $@ -shared -fPIC $< ${INCLUDE_DIR}
68
69 run : $(UNITS)
70     mkdir -p $(BUILD_DIR)
71     rm -f $(BUILD_DIR)/unit_test_report.txt
72     for f in $(BIN_DIR)/*; do                               \
73         $${f} | tee -a $(BUILD_DIR)/unit_test_report.txt;   \
74     done
75     cd $(BUILD_DIR) &&                              \
76         ruby $(UNITY_BIN_DIR)/parse_output.rb -xml  \
77         $(BUILD_DIR)/unit_test_report.txt
78
79 run_col : $(UNITS) zero_coverage
80     for f in $(BIN_DIR)/*; do \
81         ruby -r $(UNITY_BIN_DIR)/colour_reporter.rb -e "report('`$${f}`')"; done
82
83 run_formatted : $(UNITS) zero_coverage
84     for f in $(BIN_DIR)/*; do                                       \
85         $${f} > $(BUILD_DIR)/output;                                \
86         ruby $(UNITY_BIN_DIR)/parse_output.rb $(BUILD_DIR)/output ; \
87     done
88
89 run_col_formatted : $(UNITS) zero_coverage
90     for f in $(BIN_DIR)/*; do                                       \
91         $${f} > $(BUILD_DIR)/output;                                \
92         ruby -r $(UNITY_BIN_DIR)/colour_reporter.rb                 \
93             -e "report('$$(ruby $(UNITY_BIN_DIR)/parse_output.rb    \
94         $(BUILD_DIR)/output)')";                                    \
95     done
96
97 zero_coverage :
98     lcov --zerocounters --directory $(BUILD_DIR) --config-file $(UT_ROOT_DIR)/lcovrc
99
100 coverage : run_col
101     lcov --base-directory $(KERNEL_DIR) --directory $(BUILD_DIR) --capture  \
102         --config-file $(UT_ROOT_DIR)/lcovrc -o $(BUILD_DIR)/cmock_test.info
103     genhtml $(BUILD_DIR)/cmock_test.info --branch-coverage                      \
104         --config-file $(UT_ROOT_DIR)/lcovrc --output-directory $(COVERAGE_DIR)
105
106 lcov : $(COVINFO)
107
108 # Combine lcov from each test bin into one lcov info file for the suite
109 $(COVINFO) : $(LCOV_LIST)
110     lcov $(LCOV_OPTS) -o $@ $(foreach cov,$(LCOV_LIST),--add-tracefile $(cov) )
111
112 # Generate lcov for each suite
113 $(LCOV_LIST) : zero_coverage
114     make -C $(subst .info,,$(@F)) lcov
115
116 lcovhtml : $(COVINFO)
117     mkdir -p $(COVERAGE_DIR)
118     genhtml $(COVINFO) $(LCOV_OPTS) --output-directory $(COVERAGE_DIR) --quiet