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.
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.
22 USER_INCLUDE_DIR
= $(USER_DIR
)
24 OBJECT_DIR
= ..
/..
/obj
/test
34 -isystem
$(GTEST_DIR
)/inc
36 # Flags passed to the C compiler.
37 C_FLAGS
= $(COMMON_FLAGS
) \
40 # Flags passed to the C++ compiler.
41 CXX_FLAGS
= $(COMMON_FLAGS
) \
44 # All tests produced by this Makefile. Remember to add new tests you
45 # created to the list.
49 flight_mixer_unittest \
50 altitude_hold_unittest \
52 gps_conversion_unittest \
53 telemetry_hott_unittest \
54 rc_controls_unittest \
60 # All Google Test headers. Usually you shouldn't change this
62 GTEST_HEADERS
= $(GTEST_DIR
)/inc
/gtest
/*.h
64 # House-keeping build targets.
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
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_
)
83 $(CXX
) $(CXX_FLAGS
) -I
$(GTEST_DIR
) -c \
84 $(GTEST_DIR
)/src
/gtest-all.
cc -o
$@
86 $(OBJECT_DIR
)/gtest_main.o
: $(GTEST_SRCS_
)
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()
101 # includes in test dir must override includes in user dir
102 TEST_INCLUDE_DIRS
:= $(TEST_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 \
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
)
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 \
126 $(CXX
) $(CXX_FLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/battery_unittest.
cc -o
$@
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
)
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 \
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 \
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 \
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 \
185 $(CXX
) $(CXX_FLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/maths_unittest.
cc -o
$@
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
335 $(CXX
) $(CXX_FLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/ws2811_unittest.
cc -o
$@
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 \
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 \
359 $(CXX
) $(CXX_FLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/lowpass_unittest.
cc -o
$@
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 \
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 \
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
)/$@
394 set
-e
&& for
test in
$(TESTS
) ; do \
395 $(OBJECT_DIR
)/$$test; \