# 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}
