BASE=../.. SUBS=system/core \ hardware/libhardware \ external/gtest GTEST=$(BASE)/external/gtest INCLUDES=$(foreach dir,$(SUBS),-I $(BASE)/$(dir)/include) \ -I $(BASE)/libnativehelper/include/nativehelper \ -I $(GTEST) -Iinclude ifdef USE_CLANG CC=/usr/bin/clang CXX=/usr/bin/clang CLANG_TEST_DEFINE=-DKEYMASTER_CLANG_TEST_BUILD COMPILER_SPECIFIC_ARGS=-std=c++11 $(CLANG_TEST_DEFINE) else COMPILER_SPECIFIC_ARGS=-std=c++0x -fprofile-arcs endif CPPFLAGS=$(INCLUDES) -g -O0 -MD CXXFLAGS=-Wall -Werror -Wno-unused -Winit-self -Wpointer-arith -Wunused-parameter \ -Wmissing-declarations -ftest-coverage \ -Wno-deprecated-declarations -fno-exceptions -DKEYMASTER_NAME_TAGS \ $(COMPILER_SPECIFIC_ARGS) LDLIBS=-lcrypto -lpthread -lstdc++ CPPSRCS=\ asymmetric_key.cpp \ authorization_set.cpp \ authorization_set_test.cpp \ dsa_operation.cpp \ ecdsa_operation.cpp \ google_keymaster.cpp \ google_keymaster_messages.cpp \ google_keymaster_messages_test.cpp \ google_keymaster_test.cpp \ google_keymaster_test_utils.cpp \ google_keymaster_utils.cpp \ key.cpp \ key_blob.cpp \ key_blob_test.cpp \ rsa_operation.cpp \ serializable.cpp CCSRCS=$(GTEST)/src/gtest-all.cc CSRCS=ocb.c OBJS=$(CPPSRCS:.cpp=.o) $(CCSRCS:.cc=.o) $(CSRCS:.c=.o) DEPS=$(CPPSRCS:.cpp=.d) $(CCSRCS:.cc=.d) $(CSRCS:.c=.d) LINK.o=$(LINK.cc) BINARIES=authorization_set_test \ google_keymaster_test \ google_keymaster_messages_test \ key_blob_test .PHONY: coverage memcheck massif clean run %.run: % ./$< touch $@ run: $(BINARIES:=.run) coverage: coverage.info genhtml coverage.info --output-directory coverage coverage.info: run lcov --capture --directory=. --output-file coverage.info %.coverage : % $(MAKE) clean && $(MAKE) $< ./$< lcov --capture --directory=. --output-file coverage.info genhtml coverage.info --output-directory coverage #UNINIT_OPTS=--track-origins=yes UNINIT_OPTS=--undef-value-errors=no MEMCHECK_OPTS=--leak-check=full \ --show-reachable=yes \ --vgdb=full \ $(UNINIT_OPTS) \ --error-exitcode=1 MASSIF_OPTS=--tool=massif \ --stacks=yes %.memcheck : % valgrind $(MEMCHECK_OPTS) ./$< && \ touch $@ %.massif : % valgrind $(MASSIF_OPTS) --massif-out-file=$@ ./$< memcheck: $(BINARIES:=.memcheck) massif: $(BINARIES:=.massif) authorization_set_test: authorization_set_test.o \ authorization_set.o \ google_keymaster_test_utils.o \ serializable.o \ $(GTEST)/src/gtest-all.o key_blob_test: key_blob_test.o \ authorization_set.o \ google_keymaster_test_utils.o \ key_blob.o \ ocb.o \ serializable.o \ $(GTEST)/src/gtest-all.o google_keymaster_messages_test: google_keymaster_messages_test.o \ authorization_set.o \ google_keymaster_messages.o \ google_keymaster_test_utils.o \ google_keymaster_utils.o \ serializable.o \ $(GTEST)/src/gtest-all.o google_keymaster_test: google_keymaster_test.o \ asymmetric_key.o \ authorization_set.o \ dsa_operation.o \ ecdsa_operation.o \ google_keymaster.o \ google_keymaster_messages.o \ google_keymaster_test_utils.o \ google_keymaster_utils.o \ key.o \ key_blob.o \ ocb.o \ rsa_operation.o \ serializable.o \ $(GTEST)/src/gtest-all.o $(GTEST)/src/gtest-all.o: CXXFLAGS:=$(subst -Wmissing-declarations,,$(CXXFLAGS)) ocb.o: CFLAGS=$(CLANG_TEST_DEFINE) clean: rm -f $(OBJS) $(DEPS) $(BINARIES) \ $(BINARIES:=.run) $(BINARIES:=.memcheck) $(BINARIES:=.massif) \ *gcno *gcda coverage.info rm -rf coverage -include $(CPPSRCS:.cpp=.d) -include $(CCSRCS:.cc=.d)