aboutsummaryrefslogtreecommitdiff
path: root/unittests/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/Makefile')
-rw-r--r--unittests/Makefile55
1 files changed, 53 insertions, 2 deletions
diff --git a/unittests/Makefile b/unittests/Makefile
index dfd5ccb3f..e55411a75 100644
--- a/unittests/Makefile
+++ b/unittests/Makefile
@@ -3,7 +3,44 @@ CC=g++
CFLAGS=-I. -I../src/modules -I ../src/include -I../src/drivers \
-I../src -I../src/lib -D__EXPORT="" -Dnullptr="0" -lm
-all: mixer_test sbus2_test autodeclination_test st24_test sf0x_test
+# Points to the root of Google Test, relative to where this file is.
+# Remember to tweak this if you move this file.
+GTEST_DIR = gtest
+
+# Flags passed to the preprocessor.
+# Set Google Test's header directory as a system directory, such that
+# the compiler doesn't generate warnings in Google Test headers.
+CFLAGS += -isystem $(GTEST_DIR)/include
+
+# All Google Test headers. Usually you shouldn't change this
+# definition.
+GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
+ $(GTEST_DIR)/include/gtest/internal/*.h
+
+# Usually you shouldn't tweak such internal variables, indicated by a
+# trailing _.
+GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
+
+# For simplicity and to avoid depending on Google Test's
+# implementation details, the dependencies specified below are
+# conservative and not optimized. This is fine as Google Test
+# compiles fast and for ordinary users its source rarely changes.
+gtest-all.o: $(GTEST_SRCS_)
+ $(CC) $(CFLAGS) -I$(GTEST_DIR) -c \
+ $(GTEST_DIR)/src/gtest-all.cc
+
+gtest_main.o: $(GTEST_SRCS_)
+ $(CC) $(CFLAGS) -I$(GTEST_DIR) -c \
+ $(GTEST_DIR)/src/gtest_main.cc
+
+gtest.a: gtest-all.o
+ $(AR) $(ARFLAGS) $@ $^
+
+gtest_main.a: gtest-all.o gtest_main.o
+ $(AR) $(ARFLAGS) $@ $^
+
+
+all: sample_unittest mixer_test sbus2_test autodeclination_test st24_test sf0x_test
MIXER_FILES=../src/systemcmds/tests/test_mixer.cpp \
../src/systemcmds/tests/test_conv.cpp \
@@ -33,6 +70,20 @@ AUTODECLINATION_FILES= ../src/lib/geo_lookup/geo_mag_declination.c \
hrt.cpp \
autodeclination_test.cpp
+# Builds a sample test. A test should link with either gtest.a or
+# gtest_main.a, depending on whether it defines its own main()
+# function.
+sample.o: sample.cc sample.h $(GTEST_HEADERS)
+ $(CC) $(CFLAGS) -c sample.cc
+
+sample_unittest.o: sample_unittest.cc \
+ sample.h $(GTEST_HEADERS)
+ $(CC) $(CFLAGS) -c sample_unittest.cc
+
+sample_unittest: sample.o sample_unittest.o gtest_main.a
+ $(CC) $(CFLAGS) $^ -o $@
+
+
mixer_test: $(MIXER_FILES)
$(CC) -o mixer_test $(MIXER_FILES) $(CFLAGS)
@@ -57,4 +108,4 @@ unittests: clean mixer_test sbus2_test sf0x_test autodeclination_test st24_test
.PHONY: clean
clean:
- rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ mixer_test sbus2_test autodeclination_test st24_test sf0x_test
+ rm -f gtest.a gtest_main.a *.o $(ODIR)/*.o *~ core $(INCDIR)/*~ sample_unittest mixer_test sbus2_test autodeclination_test st24_test sf0x_test