forked from FirebaseExtended/firebase-arduino
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
221 lines (161 loc) · 8.51 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
# A sample Makefile for building both Google Mock and Google Test and
# using them in user tests. This file is self-contained, so you don't
# need to use the Makefile in Google Test's source tree. Please tweak
# it to suit your environment and project. You may want to move it to
# your project's root directory.
#
# SYNOPSIS:
#
# make [all] - makes everything.
# make TARGET - makes the given target.
# make clean - removes all files generated by make.
# Please tweak the following variable definitions as needed by your
# project, except GMOCK_HEADERS and GTEST_HEADERS, which you can use
# in your own targets but shouldn't modify.
# Points to the root of Google Test, relative to where this file is.
# Remember to tweak this if you move this file, or if you want to use
# a copy of Google Test at a different location.
GTEST_DIR = ../googletest/googletest/
# Points to the root of Google Mock, relative to where this file is.
# Remember to tweak this if you move this file.
GMOCK_DIR = ../googletest/googlemock/
# Points to the root of Arduino mock, relative to where this file is.
# Remember to tweak this if you move this file.
ARDUINO_MOCK_DIR = ../arduino-mock/
# Where to find user code.
TEST_DIR = .
FIREBASE_ROOT = ../../..
PROJECT_ROOT = ../..
SRC_ROOT = $(PROJECT_ROOT)/src
FIREBASE_SRC_ROOT = $(FIREBASE_ROOT)/src
ARDUINOJSON_DIR=$(ARDUINO_HOME)/libraries/ArduinoJson
# Flags passed to the preprocessor.
# Set Google Test and Google Mock's header directories as system
# directories, such that the compiler doesn't generate warnings in
# these headers.
CPPFLAGS += -isystem $(GTEST_DIR)/include -isystem $(GMOCK_DIR)/include \
-I$(ARDUINO_MOCK_DIR)/include/arduino-mock/ \
-I$(ARDUINO_MOCK_DIR)/include/ \
-I$(PROJECT_ROOT)/test/dummies \
-I$(PROJECT_ROOT)/src \
-I$(FIREBASE_ROOT)/src \
-I$(ARDUINOJSON_DIR)/src \
-I$(PROJECT_ROOT)
# Flags passed to the C++ compiler.
CXXFLAGS += -g -Wall -Wextra -pthread -std=c++11
# All tests produced by this Makefile. Remember to add new tests you
# created to the list.
TESTS = get-command_test set-command_test remove-command_test \
push-command_test begin-command_test \
serial-transceiver_test stream-command_test
# All Google Test headers. Usually you shouldn't change this
# definition.
GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
$(GTEST_DIR)/include/gtest/internal/*.h
# All Google Mock headers. Note that all Google Test headers are
# included here too, as they are #included by Google Mock headers.
# Usually you shouldn't change this definition.
GMOCK_HEADERS = $(GMOCK_DIR)/include/gmock/*.h \
$(GMOCK_DIR)/include/gmock/internal/*.h \
$(GTEST_HEADERS)
# Arduino Mock headers.
# Usually you shouldn't change this definition.
ARDUINO_MOCK_HEADERS = $(ARDUINO_MOCK_DIR)/include/arduino-mock/*.h
# House-keeping build targets.
all : $(TESTS)
test : $(TESTS)
for t in $(TESTS); do ./$$t; done;
clean :
rm -f $(TESTS) gmock.a gmock_main.a arduino_mock_all.a *.o
# Builds gmock.a and gmock_main.a. These libraries contain both
# Google Mock and Google Test. A test should link with either gmock.a
# or gmock_main.a, depending on whether it defines its own main()
# function. It's fine if your test only uses features from Google
# Test (and not Google Mock).
# Usually you shouldn't tweak such internal variables, indicated by a
# trailing _.
GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
GMOCK_SRCS_ = $(GMOCK_DIR)/src/*.cc $(GMOCK_HEADERS)
ARDUINO_MOCK_SRCS_ = $(ARDUINO_MOCK_DIR)/src/*.cc $(ARDUINO_MOCK_HEADERS)
# For simplicity and to avoid depending on implementation details of
# Google Mock and Google Test, the dependencies specified below are
# conservative and not optimized. This is fine as Google Mock and
# Google Test compile fast and for ordinary users their source rarely
# changes.
gtest-all.o : $(GTEST_SRCS_)
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \
-c $(GTEST_DIR)/src/gtest-all.cc
gmock-all.o : $(GMOCK_SRCS_)
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \
-c $(GMOCK_DIR)/src/gmock-all.cc
gmock_main.o : $(GMOCK_SRCS_)
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \
-c $(GMOCK_DIR)/src/gmock_main.cc
gmock.a : gmock-all.o gtest-all.o
$(AR) $(ARFLAGS) $@ $^
gmock_main.a : gmock-all.o gtest-all.o gmock_main.o
$(AR) $(ARFLAGS) $@ $^
# Builds Arduino mocks.
ArduinoMockAll.o : $(ARDUINO_MOCK_SRCS_)
$(CXX) $(CPPFLAGS) -I$(ARDUINO_MOCK_DIR) $(CXXFLAGS) -c \
$(ARDUINO_MOCK_DIR)/src/ArduinoMockAll.cc
arduino_mock_all.a : ArduinoMockAll.o
$(AR) $(ARFLAGS) $@ $^
# Builds shared objects.
FirebaseArduino.o : $(FIREBASE_SRC_ROOT)/FirebaseArduino.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(FIREBASE_SRC_ROOT)/FirebaseArduino.cpp
FirebaseObject.o : $(FIREBASE_SRC_ROOT)/FirebaseObject.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(FIREBASE_SRC_ROOT)/FirebaseObject.cpp
Firebase.o : $(FIREBASE_SRC_ROOT)/Firebase.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(FIREBASE_SRC_ROOT)/Firebase.cpp
FirebaseHttpClient_dummy.o : $(PROJECT_ROOT)/test/dummies/FirebaseHttpClient_dummy.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(PROJECT_ROOT)/test/dummies/FirebaseHttpClient_dummy.cpp
# Builds tests.
get-command.o : $(SRC_ROOT)/modem/db/get-command.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SRC_ROOT)/modem/db/get-command.cpp
get-command_test.o : $(TEST_DIR)/get-command_test.cpp $(GMOCK_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TEST_DIR)/get-command_test.cpp
get-command_test : get-command_test.o FirebaseArduino.o Firebase.o FirebaseObject.o FirebaseHttpClient_dummy.o get-command.o gmock_main.a \
arduino_mock_all.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
set-command.o : $(SRC_ROOT)/modem/db/set-command.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SRC_ROOT)/modem/db/set-command.cpp
set-command_test.o : $(TEST_DIR)/set-command_test.cpp $(GMOCK_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TEST_DIR)/set-command_test.cpp
set-command_test : set-command.o set-command_test.o FirebaseArduino.o Firebase.o FirebaseObject.o FirebaseHttpClient_dummy.o gmock_main.a \
arduino_mock_all.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
remove-command.o : $(SRC_ROOT)/modem/db/remove-command.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SRC_ROOT)/modem/db/remove-command.cpp
remove-command_test.o : $(TEST_DIR)/remove-command_test.cpp $(GMOCK_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TEST_DIR)/remove-command_test.cpp
remove-command_test : remove-command.o remove-command_test.o FirebaseArduino.o Firebase.o FirebaseObject.o FirebaseHttpClient_dummy.o gmock_main.a \
arduino_mock_all.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
push-command.o : $(SRC_ROOT)/modem/db/push-command.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SRC_ROOT)/modem/db/push-command.cpp
push-command_test.o : $(TEST_DIR)/push-command_test.cpp $(GMOCK_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TEST_DIR)/push-command_test.cpp
push-command_test : push-command.o push-command_test.o FirebaseArduino.o Firebase.o FirebaseObject.o FirebaseHttpClient_dummy.o gmock_main.a \
arduino_mock_all.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
begin-command.o : $(SRC_ROOT)/modem/db/begin-command.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SRC_ROOT)/modem/db/begin-command.cpp
begin-command_test.o : $(TEST_DIR)/begin-command_test.cpp $(GMOCK_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TEST_DIR)/begin-command_test.cpp
begin-command_test : begin-command.o begin-command_test.o FirebaseArduino.o Firebase.o FirebaseObject.o FirebaseHttpClient_dummy.o gmock_main.a \
arduino_mock_all.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
stream-command.o : $(SRC_ROOT)/modem/db/stream-command.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SRC_ROOT)/modem/db/stream-command.cpp
stream-command_test.o : $(TEST_DIR)/stream-command_test.cpp $(GMOCK_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TEST_DIR)/stream-command_test.cpp
stream-command_test : stream-command.o stream-command_test.o FirebaseArduino.o Firebase.o FirebaseObject.o FirebaseHttpClient_dummy.o gmock_main.a \
arduino_mock_all.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
SerialTransceiver.o : $(SRC_ROOT)/modem/SerialTransceiver.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SRC_ROOT)/modem/SerialTransceiver.cpp
serial-transceiver_test.o : $(TEST_DIR)/serial-transceiver_test.cpp $(GMOCK_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TEST_DIR)/serial-transceiver_test.cpp
serial-transceiver_test : SerialTransceiver.o serial-transceiver_test.o gmock_main.a arduino_mock_all.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@