| # Copyright (c) 2012 The Chromium OS Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| PKG_CONFIG ?= pkg-config | |
| BASE_VER ?= 125070 | |
| PC_DEPS = libchrome-$(BASE_VER) | |
| PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS)) | |
| PC_LIBS := $(shell $(PKG_CONFIG) --libs $(PC_DEPS)) | |
| ifeq ($(FIRMWARE_ARCH),) | |
| CFLAGS += -DCHROMEOS_ENVIRONMENT | |
| CXXFLAGS += -DCHROMEOS_ENVIRONMENT | |
| endif | |
| INCLUDES += -I./include \ | |
| -I$(FWDIR)/lib/include \ | |
| -I$(FWDIR)/lib/cgptlib/include \ | |
| -I$(FWDIR)/lib/cryptolib/include \ | |
| -I$(FWDIR)/lib/tpm_lite/include \ | |
| -I$(HOSTDIR)/include \ | |
| $(PC_CFLAGS) | |
| BUILD_ROOT = ${BUILD}/tests | |
| TEST_NAMES = cgptlib_test \ | |
| rollback_index2_tests \ | |
| rsa_padding_test \ | |
| rsa_utility_tests \ | |
| rsa_verify_benchmark \ | |
| sha_benchmark \ | |
| sha_tests \ | |
| stateful_util_tests \ | |
| utility_string_tests \ | |
| utility_tests \ | |
| tpm_bootmode_tests \ | |
| vboot_api_init_tests \ | |
| vboot_api_firmware_tests \ | |
| vboot_common_tests \ | |
| vboot_common2_tests \ | |
| vboot_common3_tests \ | |
| vboot_ec_tests \ | |
| vboot_firmware_tests \ | |
| vboot_nvstorage_test \ | |
| vboot_api_devmode_tests \ | |
| vboot_audio_tests \ | |
| vboot_api_kernel_tests | |
| TEST_BINS = $(addprefix ${BUILD_ROOT}/,$(TEST_NAMES)) | |
| TEST_LIB = ${BUILD_ROOT}/test.a | |
| TEST_LIB_SRCS = test_common.c timer_utils.c crc32_test.c | |
| TEST_LIB_OBJS = $(TEST_LIB_SRCS:%.c=${BUILD_ROOT}/%.o) | |
| ALL_DEPS = $(addsuffix .d,${TEST_BINS} ${TEST_LIB_OBJS}) | |
| # Allow multiple definitions, so tests can mock functions from other libraries | |
| CFLAGS += -MMD -MF $@.d -Xlinker --allow-multiple-definition | |
| CXXFLAGS += -MMD -MF $@.d -Xlinker --allow-multiple-definition | |
| LDLIBS += $(PC_LIBS) -luuid | |
| LIBS := ${TEST_LIB} $(HOSTLIB) | |
| ifneq (${RUNTESTS},) | |
| EXTRA_TARGET = runtests | |
| endif | |
| all: $(TEST_BINS) ${EXTRA_TARGET} | |
| rbtest: $(BUILD_ROOT)/rollback_index_test | |
| cgptmanager_tests: $(BUILD_ROOT)/CgptManagerTests | |
| ${TEST_LIB}: ${TEST_LIB_OBJS} | |
| rm -f $@ | |
| $(AR) rc $@ $^ | |
| ${BUILD_ROOT}/CgptManagerTests.o: CgptManagerTests.cc | |
| $(CXX) -DWITH_UTIL_MAIN $(CXXFLAGS) $(INCLUDES) -c $< -o $@ | |
| ${BUILD_ROOT}/CgptManagerTests: ${BUILD_ROOT}/CgptManagerTests.o | |
| $(CXX) $(CXXFLAGS) $(INCLUDES) $(LDFLAGS) $^ \ | |
| ${BUILD}/cgpt/libcgpt-cc.a -lgtest -lgflags $(LDLIBS) -o $@ | |
| ${BUILD_ROOT}/vboot_audio_for_test.o : $(FWDIR)/lib/vboot_audio.c | |
| $(CC) $(CFLAGS) -DCUSTOM_MUSIC $(INCLUDES) \ | |
| -MMD -MF $@.d -c -o $@ $< | |
| ${BUILD_ROOT}/vboot_audio_tests: vboot_audio_tests.c \ | |
| ${BUILD_ROOT}/vboot_audio_for_test.o ${LIBS} | |
| $(CC) $(CFLAGS) $(INCLUDES) $< ${BUILD_ROOT}/vboot_audio_for_test.o \ | |
| ${LIBS} -o $@ -lcrypto -lrt | |
| ${BUILD_ROOT}/rollback_index_test.o : rollback_index_test.c | |
| $(CC) $(CFLAGS) -I/usr/include $(INCLUDES) -MMD -MF $@.d -c -o $@ $< | |
| ${BUILD_ROOT}/rollback_index_test: rollback_index_test.c ${HOSTLIB} | |
| $(CC) $(CFLAGS) -I/usr/include $(INCLUDES) $< -o $@ \ | |
| -ltlcl ${HOSTLIB} -lcrypto -lrt | |
| # Compile rollback_index.c for unit test, so it uses the same implementation | |
| # as it does in the firmware. | |
| ${BUILD_ROOT}/rollback_index_for_test.o : $(FWDIR)/lib/rollback_index.c | |
| $(CC) $(CFLAGS) -DROLLBACK_UNITTEST $(INCLUDES) \ | |
| -MMD -MF $@.d -c -o $@ $< | |
| ${BUILD_ROOT}/rollback_index2_tests: rollback_index2_tests.c \ | |
| ${BUILD_ROOT}/rollback_index_for_test.o ${LIBS} | |
| $(CC) $(CFLAGS) $(INCLUDES) $< ${BUILD_ROOT}/rollback_index_for_test.o \ | |
| ${LIBS} -o $@ -lcrypto -lrt | |
| ${BUILD_ROOT}/%.o : %.c | |
| $(CC) $(CFLAGS) $(INCLUDES) -MMD -MF $@.d -c -o $@ $< | |
| ${BUILD_ROOT}/%: %.c ${LIBS} | |
| $(CC) $(CFLAGS) $(INCLUDES) $< ${LIBS} -o $@ -lcrypto -lrt | |
| # TODO: port these tests to new API, if not already eqivalent | |
| # functionality in other tests | |
| # | |
| # big_firmware_tests | |
| # firmware_image_tests | |
| # firmware_rollback_tests | |
| # firmware_splicing_tests | |
| # firmware_verify_benchmark | |
| # verify_firmware_fuzz_driver | |
| # | |
| # big_kernel_tests | |
| # kernel_image_tests | |
| # kernel_rollback_tests | |
| # kernel_splicing_tests | |
| # kernel_verify_benchmark | |
| # verify_kernel_fuzz_driver | |
| # Generate test keys | |
| genkeys: | |
| ./gen_test_keys.sh | |
| # Run cgpt tests | |
| runcgpttests: | |
| ${BUILD_ROOT}/cgptlib_test | |
| ./run_cgpt_tests.sh ${BUILD}/cgpt/cgpt | |
| # Run CgptManager tests | |
| runcgptmanagertests: | |
| ${BUILD_ROOT}/CgptManagerTests --v=1 | |
| # Run crypto tests | |
| runcryptotests: | |
| ./run_rsa_tests.sh | |
| ${BUILD_ROOT}/rsa_utility_tests | |
| ${BUILD_ROOT}/sha_tests | |
| ./run_vboot_common_tests.sh | |
| ./run_vboot_ec_tests.sh | |
| # Run other misc tests | |
| runmisctests: | |
| ./run_vbutil_tests.sh | |
| ${BUILD_ROOT}/rollback_index2_tests | |
| ${BUILD_ROOT}/stateful_util_tests | |
| ${BUILD_ROOT}/tpm_bootmode_tests | |
| ${BUILD_ROOT}/utility_string_tests | |
| ${BUILD_ROOT}/utility_tests | |
| ${BUILD_ROOT}/vboot_api_init_tests | |
| ${BUILD_ROOT}/vboot_api_firmware_tests | |
| ${BUILD_ROOT}/vboot_firmware_tests | |
| #This will exercise vbutil_kernel and vbutil_firmware | |
| runfuzztests: | |
| ./gen_fuzz_test_cases.sh | |
| ./run_preamble_tests.sh | |
| ./run_vbutil_kernel_arg_tests.sh | |
| # Run bmpblk_utility tests | |
| runbmptests: | |
| $(MAKE) BUILD=$(shell readlink -f ${BUILD}) -C bitmaps runtests | |
| runsoundtests: | |
| ${BUILD_ROOT}/vboot_api_devmode_tests | |
| ${BUILD_ROOT}/vboot_audio_tests | |
| ALLTESTS=runcgpttests runcryptotests runmisctests runfuzztests \ | |
| runbmptests runsoundtests | |
| runtests: genkeys ${ALLTESTS} | |
| # TODO: tests to run when ported to new API | |
| # ./run_image_verification_tests.sh | |
| # # Splicing tests | |
| # ${BUILD_ROOT}/firmware_splicing_tests | |
| # ${BUILD_ROOT}/kernel_splicing_tests | |
| # # Rollback Tests | |
| # ${BUILD_ROOT}/firmware_rollback_tests | |
| # ${BUILD_ROOT}/kernel_rollback_tests | |
| install-rbtest: $(BUILD_ROOT)/rollback_index_test | |
| mkdir -p $(DESTDIR) | |
| cp -f $(BUILD_ROOT)/rollback_index_test $(DESTDIR) | |
| -include ${ALL_DEPS} |