1
- # Copyright 2018 Google LLC
1
+ # Copyright 2018-2019 Google LLC
2
2
#
3
- # This is part of the Google Cloud IoT Edge Embedded C Client ,
3
+ # This is part of the Google Cloud IoT Device SDK for Embedded C,
4
4
# it is licensed under the BSD 3-Clause license; you may not use this file
5
5
# except in compliance with the License.
6
6
#
@@ -32,6 +32,9 @@ MD ?= @
32
32
# TLS related configuration
33
33
IOTC_BSP_TLS ?= mbedtls
34
34
35
+ # Cryptographic BSP implementation
36
+ IOTC_BSP_CRYPTO ?= mbedtls
37
+
35
38
# detect if the build happen on Travis
36
39
ifdef TRAVIS_OS_NAME
37
40
IOTC_TRAVIS_BUILD =1
@@ -43,6 +46,7 @@ include make/mt-config/mt-config.mk
43
46
include make/mt-os/mt-os.mk
44
47
include make/mt-os/mt-$(IOTC_CONST_PLATFORM_CURRENT ) .mk
45
48
include make/mt-config/mt-examples.mk
49
+ include make/mt-config/tests/mt-gtest.mk
46
50
include make/mt-config/tests/mt-tests-tools.mk
47
51
include make/mt-config/tests/mt-tests-unit.mk
48
52
include make/mt-config/tests/mt-tests-integration.mk
@@ -87,20 +91,10 @@ build_output: header preset_output
87
91
$(info . COMPILER: [$(CC ) ] )
88
92
$(info )
89
93
90
- .PHONY : roots_pem
91
- roots_pem : res/trusted_RootCA_certs/roots.pem
92
-
93
- all : build_output roots_pem $(XI ) $(IOTC_POST_BUILD_ACTION )
94
-
95
- res/trusted_RootCA_certs/roots.pem :
96
- $(info Attempting to download IoT Core Server Authentication)
97
- $(info Ceritificate List. If this fails, then please download the list)
98
- $(info from https://pki.google.com/roots.pem , and place it in the directory)
99
- $(info res/trusted_RootCA_certs/)
100
- wget https://pki.google.com/roots.pem -P res/trusted_RootCA_certs
94
+ all : build_output $(XI )
101
95
102
96
.PHONY : tests
103
- tests : build_output roots_pem utests itests
97
+ tests : build_output utests gtests itests
104
98
105
99
.PHONY : utests
106
100
utests : $(IOTC_UTESTS ) $(IOTC_TEST_TOOLS_OBJS ) $(IOTC_TEST_TOOLS )
@@ -110,6 +104,10 @@ utests: $(IOTC_UTESTS) $(IOTC_TEST_TOOLS_OBJS) $(IOTC_TEST_TOOLS)
110
104
itests : $(IOTC_ITESTS ) $(IOTC_TEST_TOOLS_OBJS ) $(IOTC_TEST_TOOLS )
111
105
$(IOTC_RUN_ITESTS )
112
106
107
+ .PHONY : gtests
108
+ gtests : $(IOTC_GTESTS )
109
+ $(IOTC_RUN_GTESTS )
110
+
113
111
.PHONY : test_coverage
114
112
test_coverage :
115
113
./tools/test_coverage.sh
@@ -138,7 +136,7 @@ clean_all: clean
138
136
139
137
libiotc : $(XI )
140
138
141
- $(XI ) : $(IOTC_TLS_LIB_DEP ) $(IOTC_PROTOFILES_C ) $(IOTC_OBJS ) | $(IOTC_BIN_DIRS )
139
+ $(XI ) : $(IOTC_TLS_LIB_DEP ) $(IOTC_CRYPTO_LIB_DEP ) $( IOTC_PROTOFILES_C ) $(IOTC_OBJS ) $( IOTC_BUILD_PRECONDITIONS ) | $(IOTC_BIN_DIRS )
142
140
$(info [$(AR ) ] $@ )
143
141
$(MD ) $(AR ) $(IOTC_ARFLAGS ) $(IOTC_OBJS ) $(IOTC_EXTRA_ARFLAGS )
144
142
@@ -158,29 +156,66 @@ $(IOTC_UTEST_OBJDIR)/%.o : $(IOTC_UTEST_SOURCE_DIR)/%.c $(IOTC_BUILD_PRECONDITIO
158
156
$(MD ) $(CC ) $(IOTC_UTEST_CONFIG_FLAGS ) $(IOTC_UTEST_INCLUDE_FLAGS ) -c $< $(IOTC_COMPILER_OUTPUT )
159
157
$(MD ) $(CC ) $(IOTC_UTEST_CONFIG_FLAGS ) $(IOTC_UTEST_INCLUDE_FLAGS ) -MM $< -MT $@ -MF $(@:.o=.d )
160
158
159
+ # specific compiler flags for gtest objects
160
+ $(IOTC_GTEST_OBJDIR ) /% .o : $(LIBIOTC_SRC ) /% .cc $(IOTC_BUILD_PRECONDITIONS )
161
+ @-mkdir -p $(dir $@ )
162
+ $(info [$(CXX ) ] $@ )
163
+ $(MD ) $(CXX ) $(IOTC_GTEST_CONFIG_FLAGS ) $(IOTC_GTEST_CXX_FLAGS ) -c $< $(IOTC_COMPILER_OUTPUT )
164
+ $(MD ) $(CXX ) $(IOTC_GTEST_CONFIG_FLAGS ) $(IOTC_GTEST_CXX_FLAGS ) -MM $< -MT $@ -MF $(@:.o=.d )
165
+
161
166
# specific compiler flags for libiotc_driver
162
167
$(IOTC_OBJDIR ) /tests/tools/iotc_libiotc_driver/% .o : $(LIBIOTC ) /src/tests/tools/iotc_libiotc_driver/% .c $(IOTC_BUILD_PRECONDITIONS )
163
168
@-mkdir -p $(dir $@ )
164
169
$(info [$(CC ) ] $@ )
165
- $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMPILER_FLAGS ) $(IOTC_INCLUDE_FLAGS ) $(IOTC_TEST_TOOLS_INCLUDE_FLAGS ) -c $< $(IOTC_COMPILER_OUTPUT )
166
- $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMPILER_FLAGS ) $(IOTC_INCLUDE_FLAGS ) $(IOTC_TEST_TOOLS_INCLUDE_FLAGS ) -MM $< -MT $@ -MF $(@:.o=.d )
170
+ $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMMON_COMPILER_FLAGS ) $( IOTC_C_FLAGS ) $(IOTC_INCLUDE_FLAGS ) $(IOTC_TEST_TOOLS_INCLUDE_FLAGS ) -c $< $(IOTC_COMPILER_OUTPUT )
171
+ $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMMON_COMPILER_FLAGS ) $( IOTC_C_FLAGS ) $(IOTC_INCLUDE_FLAGS ) $(IOTC_TEST_TOOLS_INCLUDE_FLAGS ) -MM $< -MT $@ -MF $(@:.o=.d )
167
172
168
173
-include $(IOTC_OBJS :.o=.d)
169
174
175
+ # C source files
170
176
$(IOTC_OBJDIR ) /% .o : $(LIBIOTC ) /src/% .c $(IOTC_BUILD_PRECONDITIONS )
171
177
@-mkdir -p $(dir $@ )
172
178
$(info [$(CC ) ] $@ )
173
- $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMPILER_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -c $< $(IOTC_COMPILER_OUTPUT )
174
- $(IOTC_POST_COMPILE_ACTION )
179
+ $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMMON_COMPILER_FLAGS ) $( IOTC_C_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -c $< $(IOTC_COMPILER_OUTPUT )
180
+ $(IOTC_POST_COMPILE_ACTION_CC )
175
181
176
- $(IOTC_OBJDIR ) /third_party/mqtt-protocol-c/ % .o : $(LIBIOTC ) /third_party/mqtt-protocol-c /% .c $(IOTC_BUILD_PRECONDITIONS )
182
+ $(IOTC_OBJDIR ) /third_party/% .o : $(LIBIOTC ) /third_party/% .c $(IOTC_BUILD_PRECONDITIONS )
177
183
@-mkdir -p $(dir $@ )
178
184
$(info [$(CC ) ] $@ )
179
- $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMPILER_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -c $< $(IOTC_COMPILER_OUTPUT )
180
- $(IOTC_POST_COMPILE_ACTION )
185
+ $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMMON_COMPILER_FLAGS ) $(IOTC_C_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -c $< $(IOTC_COMPILER_OUTPUT )
186
+ $(IOTC_POST_COMPILE_ACTION_CC )
187
+
188
+ # C++ source files
189
+ $(IOTC_OBJDIR ) /% .o : $(LIBIOTC ) /src/% .cc $(IOTC_BUILD_PRECONDITIONS )
190
+ @-mkdir -p $(dir $@ )
191
+ $(info [$(CXX ) ] $@ )
192
+ $(MD ) $(CXX ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMMON_COMPILER_FLAGS ) $(IOTC_CXX_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -c $< $(IOTC_COMPILER_OUTPUT )
193
+ $(IOTC_POST_COMPILE_ACTION_CXX )
194
+
195
+ # ##
196
+ # ### Builtin root CA certificates
197
+ # ##
198
+ IOTC_BUILTIN_ROOTCA_CERTS := $(LIBIOTC ) /res/trusted_RootCA_certs/roots.pem
199
+
200
+ $(IOTC_BUILTIN_ROOTCA_CERTS ) :
201
+ curl -s " https://pki.goog/gtsltsr/gtsltsr.crt" \
202
+ | openssl x509 -inform der -outform pem \
203
+ > $@
204
+
205
+ curl -s "https://pki.goog/gsr4/GSR4.crt" \
206
+ | openssl x509 -inform der -outform pem \
207
+ >> $@
208
+
209
+ .PHONY : update_builtin_cert_buffer
210
+ update_builtin_cert_buffer : $(IOTC_BUILTIN_ROOTCA_CERTS )
211
+ ./tools/create_buffer.py \
212
+ --file_name $< \
213
+ --array_name iotc_RootCA_list \
214
+ --out_path ./src/libiotc/tls/certs \
215
+ --no-pretend
181
216
182
217
# gather all of the binary directories
183
- IOTC_RESOURCE_FILES := $(LIBIOTC ) /res/trusted_RootCA_certs/roots.pem
218
+ IOTC_RESOURCE_FILES := $(IOTC_BUILTIN_ROOTCA_CERTS )
184
219
185
220
ifneq (,$(findstring posix_fs,$(CONFIG ) ) )
186
221
IOTC_PROVIDE_RESOURCE_FILES = ON
@@ -194,8 +229,8 @@ endif
194
229
$(IOTC_EXAMPLE_BINDIR ) /internal/% : $(XI )
195
230
$(info [$(CC ) ] $@ )
196
231
@-mkdir -p $(IOTC_EXAMPLE_OBJDIR ) /$(subst $(IOTC_EXAMPLE_BINDIR ) /,,$(dir $@ ) )
197
- $(MD ) $(CC ) $(IOTC_COMPILER_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -L$(IOTC_BINDIR ) $(XI ) $(LIBIOTC ) /examples/common/src/commandline.c $(IOTC_EXAMPLE_DIR ) /$(subst $(IOTC_EXAMPLE_BINDIR ) ,,$@ ) .c $(IOTC_LIB_FLAGS ) $(IOTC_COMPILER_OUTPUT )
198
- $(MD ) $(CC ) $(IOTC_COMPILER_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -MM $(IOTC_EXAMPLE_DIR ) /$(subst $(IOTC_EXAMPLE_BINDIR ) ,,$@ ) .c -MT $@ -MF $(IOTC_EXAMPLE_OBJDIR ) /$(subst $(IOTC_EXAMPLE_BINDIR ) /,,$@ ) .d
232
+ $(MD ) $(CC ) $(IOTC_COMMON_COMPILER_FLAGS ) $( IOTC_C_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -L$(IOTC_BINDIR ) $(XI ) $(LIBIOTC ) /examples/common/src/commandline.c $(IOTC_EXAMPLE_DIR ) /$(subst $(IOTC_EXAMPLE_BINDIR ) ,,$@ ) .c $(IOTC_LIB_FLAGS ) $(IOTC_COMPILER_OUTPUT )
233
+ $(MD ) $(CC ) $(IOTC_COMMON_COMPILER_FLAGS ) $( IOTC_C_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -MM $(IOTC_EXAMPLE_DIR ) /$(subst $(IOTC_EXAMPLE_BINDIR ) ,,$@ ) .c -MT $@ -MF $(IOTC_EXAMPLE_OBJDIR ) /$(subst $(IOTC_EXAMPLE_BINDIR ) /,,$@ ) .d
199
234
200
235
# ##
201
236
# ### TEST TOOLS
@@ -204,9 +239,9 @@ $(IOTC_EXAMPLE_BINDIR)/internal/%: $(XI)
204
239
205
240
$(IOTC_TEST_TOOLS_BINDIR ) /% : $(XI ) $(IOTC_TEST_TOOLS_OBJS )
206
241
$(info [$(CC ) ] $@ )
207
- $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMPILER_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -L$(IOTC_BINDIR ) $(IOTC_TEST_TOOLS_OBJS ) $(IOTC_TEST_TOOLS_SRCDIR ) /$(notdir $@ ) /$(notdir $@ ) .c $(IOTC_LIB_FLAGS ) $(IOTC_COMPILER_OUTPUT )
242
+ $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMMON_COMPILER_FLAGS ) $( IOTC_C_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -L$(IOTC_BINDIR ) $(IOTC_TEST_TOOLS_OBJS ) $(IOTC_TEST_TOOLS_SRCDIR ) /$(notdir $@ ) /$(notdir $@ ) .c $(IOTC_LIB_FLAGS ) $(IOTC_COMPILER_OUTPUT )
208
243
@-mkdir -p $(IOTC_TEST_TOOLS_OBJDIR )
209
- $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMPILER_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -MM $(IOTC_TEST_TOOLS_SRCDIR ) /$(notdir $@ ) /$(notdir $@ ) .c -MT $@ -MF $(IOTC_TEST_TOOLS_OBJDIR ) /$(notdir $@ ) .d
244
+ $(MD ) $(CC ) $(IOTC_CONFIG_FLAGS ) $(IOTC_COMMON_COMPILER_FLAGS ) $( IOTC_C_FLAGS ) $(IOTC_INCLUDE_FLAGS ) -MM $(IOTC_TEST_TOOLS_SRCDIR ) /$(notdir $@ ) /$(notdir $@ ) .c -MT $@ -MF $(IOTC_TEST_TOOLS_OBJDIR ) /$(notdir $@ ) .d
210
245
@# $@
211
246
212
247
# ##
@@ -216,12 +251,20 @@ $(IOTC_TEST_TOOLS_BINDIR)/%: $(XI) $(IOTC_TEST_TOOLS_OBJS)
216
251
IOTC_UTESTS_DEPENDENCIES_FILE = $(IOTC_UTEST_OBJDIR ) /$(notdir $(IOTC_UTESTS ) ) .d
217
252
-include $(IOTC_UTESTS_DEPENDENCIES_FILE )
218
253
254
+ IOTC_GTESTS_DEPENDENCIES_FILE = $(IOTC_GTEST_OBJDIR ) /$(notdir $(IOTC_GTESTS ) ) .d
255
+ -include $(IOTC_GTESTS_DEPENDENCIES_FILE )
256
+
219
257
$(IOTC_UTESTS ) : $(XI ) $(IOTC_UTEST_OBJS ) $(TINY_TEST_OBJ )
220
258
$(info [$(CC ) ] $@ )
221
259
@-mkdir -p $(IOTC_UTEST_OBJDIR )
222
- $(MD ) $(CC ) $(IOTC_UTEST_CONFIG_FLAGS ) $(IOTC_UTEST_INCLUDE_FLAGS ) -L$(IOTC_BINDIR ) $(IOTC_UTEST_SUITE_SOURCE ) $(IOTC_UTEST_OBJS ) $(TINY_TEST_OBJ ) $(IOTC_LIB_FLAGS ) $(IOTC_COMPILER_OUTPUT )
260
+ $(MD ) $(CC ) $(IOTC_UTEST_CONFIG_FLAGS ) $(IOTC_UTEST_INCLUDE_FLAGS ) -L$(IOTC_BINDIR ) $(IOTC_UTEST_SUITE_SOURCE ) $(IOTC_UTEST_OBJS ) $(TINY_TEST_OBJ ) $(IOTC_LIB_FLAGS ) $(IOTC_COMPILER_OUTPUT )
223
261
$(MD ) $(CC ) $(IOTC_UTEST_CONFIG_FLAGS ) $(IOTC_UTEST_INCLUDE_FLAGS ) -MM $(IOTC_UTEST_SUITE_SOURCE ) -MT $@ -MF $(IOTC_UTESTS_DEPENDENCIES_FILE )
224
262
263
+ $(IOTC_GTESTS ) : $(XI ) $(IOTC_GTEST_OBJS ) $(IOTC_UTEST_UTIL_OBJS ) $(GTEST_OBJS ) $(GMOCK_OBJS )
264
+ $(info [$(CXX ) ] $@ )
265
+ @-mkdir -p $(IOTC_GTEST_OBJDIR )
266
+ $(MD ) $(CXX ) $(IOTC_GTEST_CONFIG_FLAGS ) $(IOTC_GTEST_CXX_FLAGS ) -L$(IOTC_BINDIR ) $(IOTC_GTEST_OBJS ) $(GTEST_OBJS ) $(GMOCK_OBJS ) $(IOTC_UTEST_UTIL_OBJS ) $(IOTC_LIB_FLAGS ) $(IOTC_COMPILER_OUTPUT )
267
+
225
268
# dependencies for integration test binary
226
269
ifneq ($(IOTC_CONST_PLATFORM_CURRENT ) ,$(IOTC_CONST_PLATFORM_ARM ) )
227
270
@@ -240,7 +283,7 @@ $(IOTC_FUZZ_TESTS_BINDIR)/%: $(IOTC_FUZZ_TESTS_SOURCE_DIR)/%.cpp
240
283
$(IOTC_FUZZ_TESTS ) : $(XI )
241
284
242
285
.PHONY : fuzz_tests
243
- fuzz_tests : build_output roots_pem $(IOTC_LIBFUZZER ) $(IOTC_FUZZ_TESTS ) $(IOTC_FUZZ_TESTS_CORPUS_DIRS )
286
+ fuzz_tests : build_output $(IOTC_LIBFUZZER ) $(IOTC_FUZZ_TESTS ) $(IOTC_FUZZ_TESTS_CORPUS_DIRS )
244
287
$(foreach fuzztest, $(IOTC_FUZZ_TESTS ) , $(call IOTC_RUN_FUZZ_TEST,$(fuzztest ) ) )
245
288
246
289
.PHONY : static_analysis
@@ -250,7 +293,7 @@ NOW:=$(shell date +"%F-%T")
250
293
251
294
$(LIBIOTC ) /src/% .sa :
252
295
$(info [clang-tidy] $(@:.sa=.c ) )
253
- @clang-tidy --checks=' clang-analyzer-*,-clang-analyzer-cplusplus*,-clang-analyzer-osx*' $(@:.sa=.c ) >> static_analysis_$(NOW ) .log -- $(IOTC_CONFIG_FLAGS ) $(IOTC_COMPILER_FLAGS ) $(IOTC_INCLUDE_FLAGS )
296
+ @clang-tidy --checks=' clang-analyzer-*,-clang-analyzer-cplusplus*,-clang-analyzer-osx*' $(@:.sa=.c ) >> static_analysis_$(NOW ) .log -- $(IOTC_CONFIG_FLAGS ) $(IOTC_COMMON_COMPILER_FLAGS ) $( IOTC_C_FLAGS ) $(IOTC_INCLUDE_FLAGS )
254
297
255
298
$(IOTC_BIN_DIRS ) :
256
299
@mkdir -p $@
@@ -268,19 +311,3 @@ update_docs_branch:
268
311
&& git add . \
269
312
&& git commit -m " [docs] Regenerated documentation for $( REV) " \
270
313
&& git push github master:gh-pages -f
271
-
272
- CRT_URL := https://secure.globalsign.net/cacert/Root-R1.crt
273
-
274
- ca.pem :
275
- curl -s $(CRT_URL ) \
276
- | openssl x509 \
277
- -out $@ \
278
- -outform pem
279
-
280
- update_builtin_cert : ca.pem
281
- ./tools/create_buffer.py \
282
- --file_name ./ca.pem \
283
- --array_name iotc_ca \
284
- --out_path ./src/libiotc/tls/ \
285
- --no-pretend
286
- -rm -rf ./ca.pem
0 commit comments