Add the first unit test for the mixer.
[betaflight.git] / src / test / Makefile
blobf60ee6cc82b0e4f3deb3397592926a61ef543012
1 # A sample Makefile for building Google Test and using it in user
2 # tests. Please tweak it to suit your environment and project. You
3 # may want to move it to your project's root directory.
5 # SYNOPSIS:
7 # make [all] - makes everything.
8 # make TARGET - makes the given target.
9 # make clean - removes all files generated by make.
11 # Please tweak the following variable definitions as needed by your
12 # project, except GTEST_HEADERS, which you can use in your own targets
13 # but shouldn't modify.
15 # Points to the root of Google Test, relative to where this file is.
16 # Remember to tweak this if you move this file.
17 GTEST_DIR = ../../lib/test/gtest
19 # Where to find user code.
20 USER_DIR = ../main
21 TEST_DIR = unit
22 USER_INCLUDE_DIR = $(USER_DIR)
24 OBJECT_DIR = ../../obj/test
26 COMMON_FLAGS = \
27 -g \
28 -Wall \
29 -Wextra \
30 -pthread \
31 -ggdb3 \
32 -O0 \
33 -DUNIT_TEST \
34 -isystem $(GTEST_DIR)/inc
36 # Flags passed to the C compiler.
37 C_FLAGS = $(COMMON_FLAGS) \
38 -std=gnu99
40 # Flags passed to the C++ compiler.
41 CXX_FLAGS = $(COMMON_FLAGS) \
42 -std=gnu++98
44 # All tests produced by this Makefile. Remember to add new tests you
45 # created to the list.
46 TESTS = \
47 battery_unittest \
48 flight_imu_unittest \
49 flight_mixer_unittest \
50 altitude_hold_unittest \
51 maths_unittest \
52 gps_conversion_unittest \
53 telemetry_hott_unittest \
54 rc_controls_unittest \
55 ledstrip_unittest \
56 ws2811_unittest \
57 encoding_unittest \
58 lowpass_unittest
60 # All Google Test headers. Usually you shouldn't change this
61 # definition.
62 GTEST_HEADERS = $(GTEST_DIR)/inc/gtest/*.h
64 # House-keeping build targets.
66 all : $(TESTS)
68 clean :
69 rm -rf $(TESTS) $(OBJECT_DIR)
71 # Builds gtest.a and gtest_main.a.
73 # Usually you shouldn't tweak such internal variables, indicated by a
74 # trailing _.
75 GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/inc/gtest/*.h $(GTEST_HEADERS)
77 # For simplicity and to avoid depending on Google Test's
78 # implementation details, the dependencies specified below are
79 # conservative and not optimized. This is fine as Google Test
80 # compiles fast and for ordinary users its source rarely changes.
81 $(OBJECT_DIR)/gtest-all.o : $(GTEST_SRCS_)
82 @mkdir -p $(dir $@)
83 $(CXX) $(CXX_FLAGS) -I$(GTEST_DIR) -c \
84 $(GTEST_DIR)/src/gtest-all.cc -o $@
86 $(OBJECT_DIR)/gtest_main.o : $(GTEST_SRCS_)
87 @mkdir -p $(dir $@)
88 $(CXX) $(CXX_FLAGS) -I$(GTEST_DIR) -c \
89 $(GTEST_DIR)/src/gtest_main.cc -o $@
91 $(OBJECT_DIR)/gtest.a : $(OBJECT_DIR)/gtest-all.o
92 $(AR) $(ARFLAGS) $@ $^
94 $(OBJECT_DIR)/gtest_main.a : $(OBJECT_DIR)/gtest-all.o $(OBJECT_DIR)/gtest_main.o
95 $(AR) $(ARFLAGS) $@ $^
97 # Builds a sample test. A test should link with either gtest.a or
98 # gtest_main.a, depending on whether it defines its own main()
99 # function.
101 # includes in test dir must override includes in user dir
102 TEST_INCLUDE_DIRS := $(TEST_DIR) \
103 $(USER_INCLUDE_DIR)
105 TEST_CFLAGS = $(addprefix -I,$(TEST_INCLUDE_DIRS))
107 $(OBJECT_DIR)/common/maths.o : \
108 $(USER_DIR)/common/maths.c \
109 $(USER_DIR)/common/maths.h \
110 $(GTEST_HEADERS)
112 @mkdir -p $(dir $@)
113 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/common/maths.c -o $@
116 $(OBJECT_DIR)/sensors/battery.o : $(USER_DIR)/sensors/battery.c $(USER_DIR)/sensors/battery.h $(GTEST_HEADERS)
117 @mkdir -p $(dir $@)
118 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/sensors/battery.c -o $@
120 $(OBJECT_DIR)/battery_unittest.o : \
121 $(TEST_DIR)/battery_unittest.cc \
122 $(USER_DIR)/sensors/battery.h \
123 $(GTEST_HEADERS)
125 @mkdir -p $(dir $@)
126 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/battery_unittest.cc -o $@
128 battery_unittest : \
129 $(OBJECT_DIR)/sensors/battery.o \
130 $(OBJECT_DIR)/common/maths.o \
131 $(OBJECT_DIR)/battery_unittest.o \
132 $(OBJECT_DIR)/gtest_main.a
134 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
136 $(OBJECT_DIR)/common/encoding.o : $(USER_DIR)/common/encoding.c $(USER_DIR)/common/encoding.h $(GTEST_HEADERS)
137 @mkdir -p $(dir $@)
138 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/common/encoding.c -o $@
140 $(OBJECT_DIR)/encoding_unittest.o : \
141 $(TEST_DIR)/encoding_unittest.cc \
142 $(USER_DIR)/common/encoding.h \
143 $(GTEST_HEADERS)
145 @mkdir -p $(dir $@)
146 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/encoding_unittest.cc -o $@
148 encoding_unittest : \
149 $(OBJECT_DIR)/common/encoding.o \
150 $(OBJECT_DIR)/encoding_unittest.o \
151 $(OBJECT_DIR)/gtest_main.a
153 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
155 $(OBJECT_DIR)/flight/imu.o : \
156 $(USER_DIR)/flight/imu.c \
157 $(USER_DIR)/flight/imu.h \
158 $(GTEST_HEADERS)
160 @mkdir -p $(dir $@)
161 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/imu.c -o $@
163 $(OBJECT_DIR)/flight_imu_unittest.o : \
164 $(TEST_DIR)/flight_imu_unittest.cc \
165 $(USER_DIR)/flight/imu.h \
166 $(GTEST_HEADERS)
168 @mkdir -p $(dir $@)
169 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/flight_imu_unittest.cc -o $@
171 flight_imu_unittest : \
172 $(OBJECT_DIR)/flight/imu.o \
173 $(OBJECT_DIR)/flight/altitudehold.o \
174 $(OBJECT_DIR)/flight_imu_unittest.o \
175 $(OBJECT_DIR)/common/maths.o \
176 $(OBJECT_DIR)/gtest_main.a
178 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
180 $(OBJECT_DIR)/maths_unittest.o : \
181 $(TEST_DIR)/maths_unittest.cc \
182 $(GTEST_HEADERS)
184 @mkdir -p $(dir $@)
185 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/maths_unittest.cc -o $@
187 maths_unittest : \
188 $(OBJECT_DIR)/maths_unittest.o \
189 $(OBJECT_DIR)/common/maths.o \
190 $(OBJECT_DIR)/gtest_main.a
192 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
196 $(OBJECT_DIR)/flight/altitudehold.o : \
197 $(USER_DIR)/flight/altitudehold.c \
198 $(USER_DIR)/flight/altitudehold.h \
199 $(GTEST_HEADERS)
201 @mkdir -p $(dir $@)
202 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/altitudehold.c -o $@
204 $(OBJECT_DIR)/altitude_hold_unittest.o : \
205 $(TEST_DIR)/altitude_hold_unittest.cc \
206 $(USER_DIR)/flight/altitudehold.h \
207 $(GTEST_HEADERS)
209 @mkdir -p $(dir $@)
210 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/altitude_hold_unittest.cc -o $@
212 altitude_hold_unittest : \
213 $(OBJECT_DIR)/flight/altitudehold.o \
214 $(OBJECT_DIR)/altitude_hold_unittest.o \
215 $(OBJECT_DIR)/gtest_main.a
217 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
220 $(OBJECT_DIR)/flight/gps_conversion.o : \
221 $(USER_DIR)/flight/gps_conversion.c \
222 $(USER_DIR)/flight/gps_conversion.h \
223 $(GTEST_HEADERS)
225 @mkdir -p $(dir $@)
226 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/gps_conversion.c -o $@
228 $(OBJECT_DIR)/gps_conversion_unittest.o : \
229 $(TEST_DIR)/gps_conversion_unittest.cc \
230 $(USER_DIR)/flight/gps_conversion.h \
231 $(GTEST_HEADERS)
233 @mkdir -p $(dir $@)
234 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/gps_conversion_unittest.cc -o $@
236 gps_conversion_unittest : \
237 $(OBJECT_DIR)/flight/gps_conversion.o \
238 $(OBJECT_DIR)/gps_conversion_unittest.o \
239 $(OBJECT_DIR)/gtest_main.a
241 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
245 $(OBJECT_DIR)/telemetry/hott.o : \
246 $(USER_DIR)/telemetry/hott.c \
247 $(USER_DIR)/telemetry/hott.h \
248 $(GTEST_HEADERS)
250 @mkdir -p $(dir $@)
251 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/telemetry/hott.c -o $@
253 $(OBJECT_DIR)/telemetry_hott_unittest.o : \
254 $(TEST_DIR)/telemetry_hott_unittest.cc \
255 $(USER_DIR)/telemetry/hott.h \
256 $(GTEST_HEADERS)
258 @mkdir -p $(dir $@)
259 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/telemetry_hott_unittest.cc -o $@
261 telemetry_hott_unittest : \
262 $(OBJECT_DIR)/telemetry/hott.o \
263 $(OBJECT_DIR)/telemetry_hott_unittest.o \
264 $(OBJECT_DIR)/flight/gps_conversion.o \
265 $(OBJECT_DIR)/gtest_main.a
267 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
271 $(OBJECT_DIR)/io/rc_controls.o : \
272 $(USER_DIR)/io/rc_controls.c \
273 $(USER_DIR)/io/rc_controls.h \
274 $(GTEST_HEADERS)
276 @mkdir -p $(dir $@)
277 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/io/rc_controls.c -o $@
279 $(OBJECT_DIR)/rc_controls_unittest.o : \
280 $(TEST_DIR)/rc_controls_unittest.cc \
281 $(USER_DIR)/io/rc_controls.h \
282 $(GTEST_HEADERS)
284 @mkdir -p $(dir $@)
285 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/rc_controls_unittest.cc -o $@
287 rc_controls_unittest : \
288 $(OBJECT_DIR)/common/maths.o \
289 $(OBJECT_DIR)/io/rc_controls.o \
290 $(OBJECT_DIR)/rc_controls_unittest.o \
291 $(OBJECT_DIR)/gtest_main.a
293 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
296 $(OBJECT_DIR)/io/ledstrip.o : \
297 $(USER_DIR)/io/ledstrip.c \
298 $(USER_DIR)/io/ledstrip.h \
299 $(GTEST_HEADERS)
301 @mkdir -p $(dir $@)
302 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/io/ledstrip.c -o $@
304 $(OBJECT_DIR)/ledstrip_unittest.o : \
305 $(TEST_DIR)/ledstrip_unittest.cc \
306 $(USER_DIR)/io/ledstrip.h \
307 $(GTEST_HEADERS)
309 @mkdir -p $(dir $@)
310 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/ledstrip_unittest.cc -o $@
312 ledstrip_unittest : \
313 $(OBJECT_DIR)/io/ledstrip.o \
314 $(OBJECT_DIR)/ledstrip_unittest.o \
315 $(OBJECT_DIR)/gtest_main.a
317 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
321 $(OBJECT_DIR)/drivers/light_ws2811strip.o : \
322 $(USER_DIR)/drivers/light_ws2811strip.c \
323 $(USER_DIR)/drivers/light_ws2811strip.h \
324 $(GTEST_HEADERS)
326 @mkdir -p $(dir $@)
327 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/drivers/light_ws2811strip.c -o $@
329 $(OBJECT_DIR)/ws2811_unittest.o : \
330 $(TEST_DIR)/ws2811_unittest.cc \
331 $(USER_DIR)/drivers/light_ws2811strip.h \
332 $(GTEST_HEADERS)
334 @mkdir -p $(dir $@)
335 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/ws2811_unittest.cc -o $@
337 ws2811_unittest : \
338 $(OBJECT_DIR)/drivers/light_ws2811strip.o \
339 $(OBJECT_DIR)/ws2811_unittest.o \
340 $(OBJECT_DIR)/gtest_main.a
342 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
345 $(OBJECT_DIR)/flight/lowpass.o : \
346 $(USER_DIR)/flight/lowpass.c \
347 $(USER_DIR)/flight/lowpass.h \
348 $(GTEST_HEADERS)
350 @mkdir -p $(dir $@)
351 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/lowpass.c -o $@
353 $(OBJECT_DIR)/lowpass_unittest.o : \
354 $(TEST_DIR)/lowpass_unittest.cc \
355 $(USER_DIR)/flight/lowpass.h \
356 $(GTEST_HEADERS)
358 @mkdir -p $(dir $@)
359 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/lowpass_unittest.cc -o $@
361 lowpass_unittest : \
362 $(OBJECT_DIR)/flight/lowpass.o \
363 $(OBJECT_DIR)/lowpass_unittest.o \
364 $(OBJECT_DIR)/gtest_main.a
366 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
368 $(OBJECT_DIR)/flight/mixer.o : \
369 $(USER_DIR)/flight/mixer.c \
370 $(USER_DIR)/flight/mixer.h \
371 $(GTEST_HEADERS)
373 @mkdir -p $(dir $@)
374 $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/mixer.c -o $@
376 $(OBJECT_DIR)/flight_mixer_unittest.o : \
377 $(TEST_DIR)/flight_mixer_unittest.cc \
378 $(USER_DIR)/flight/mixer.h \
379 $(GTEST_HEADERS)
381 @mkdir -p $(dir $@)
382 $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/flight_mixer_unittest.cc -o $@
384 flight_mixer_unittest : \
385 $(OBJECT_DIR)/flight/mixer.o \
386 $(OBJECT_DIR)/flight_mixer_unittest.o \
387 $(OBJECT_DIR)/common/maths.o \
388 $(OBJECT_DIR)/gtest_main.a
390 $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
393 test: $(TESTS)
394 set -e && for test in $(TESTS) ; do \
395 $(OBJECT_DIR)/$$test; \
396 done