# Copyright (c) 2010 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 = 85268
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}
