tests: Enable config override for tests
Some tests require to change kconfig symbols values to cover the code. This patch enables one to set these vaues using <test-name>-config variable. Example for integer values. timestamp-test-config += CONFIG_HAVE_MONOTONIC_TIMER=1 Example for string values. Notice escaped quotes. spd_cache-test-config += CONFIG_SPD_CACHE_FMAP_NAME=\"SPD_CACHE_FMAP_NAME\" Signed-off-by: Jakub Czapiga <jacz@semihalf.com> Change-Id: I1aeb78362c2609fbefbfd91c0f58ec19ed258ee1 Reviewed-on: https://review.coreboot.org/c/coreboot/+/52937 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
62682e79a7
commit
5c3b05ecf4
|
@ -11,7 +11,7 @@ CMAKE:= cmake
|
||||||
|
|
||||||
TEST_DEFAULT_CONFIG = $(top)/configs/config.emulation_qemu_x86_i440fx
|
TEST_DEFAULT_CONFIG = $(top)/configs/config.emulation_qemu_x86_i440fx
|
||||||
TEST_DOTCONFIG = $(testobj)/.config
|
TEST_DOTCONFIG = $(testobj)/.config
|
||||||
TEST_KCONFIG_AUTOHEADER := $(testobj)/config.h
|
TEST_KCONFIG_AUTOHEADER := $(testobj)/config.src.h
|
||||||
TEST_KCONFIG_AUTOCONFIG := $(testobj)/auto.conf
|
TEST_KCONFIG_AUTOCONFIG := $(testobj)/auto.conf
|
||||||
TEST_KCONFIG_DEPENDENCIES := $(testobj)/auto.conf.cmd
|
TEST_KCONFIG_DEPENDENCIES := $(testobj)/auto.conf.cmd
|
||||||
TEST_KCONFIG_SPLITCONFIG := $(testobj)/config
|
TEST_KCONFIG_SPLITCONFIG := $(testobj)/config
|
||||||
|
@ -52,7 +52,7 @@ TEST_CFLAGS += -fno-pie -fno-pic
|
||||||
TEST_LDFLAGS += -no-pie
|
TEST_LDFLAGS += -no-pie
|
||||||
|
|
||||||
# Extra attributes for unit tests, declared per test
|
# Extra attributes for unit tests, declared per test
|
||||||
attributes:= srcs cflags mocks stage
|
attributes:= srcs cflags config mocks stage
|
||||||
|
|
||||||
stages:= decompressor bootblock romstage smm verstage
|
stages:= decompressor bootblock romstage smm verstage
|
||||||
stages+= ramstage rmodule postcar libagesa
|
stages+= ramstage rmodule postcar libagesa
|
||||||
|
@ -83,9 +83,23 @@ $(call evaluate_subdirs)
|
||||||
# Create actual targets for unit test binaries
|
# Create actual targets for unit test binaries
|
||||||
# $1 - test name
|
# $1 - test name
|
||||||
define TEST_CC_template
|
define TEST_CC_template
|
||||||
$($(1)-objs): TEST_CFLAGS+= \
|
|
||||||
|
# Generate custom config.h redefining given symbols
|
||||||
|
$(1)-config-file := $(obj)/$(1)/config.h
|
||||||
|
$$($(1)-config-file): $(TEST_KCONFIG_AUTOHEADER)
|
||||||
|
mkdir -p $$(dir $$@)
|
||||||
|
printf '// File generated by tests/Makefile.inc\n// Do not change\n' > $$@
|
||||||
|
printf '#include <%s>\n\n' "$(notdir $(TEST_KCONFIG_AUTOHEADER))" >> $$@
|
||||||
|
for kv in $$($(1)-config); do \
|
||||||
|
key="`echo $$$$kv | cut -d '=' -f -1`"; \
|
||||||
|
value="`echo $$$$kv | cut -d '=' -f 2-`"; \
|
||||||
|
printf '#undef %s\n' "$$$$key" >> $$@; \
|
||||||
|
printf '#define %s %s\n\n' "$$$$key" "$$$$value" >> $$@; \
|
||||||
|
done
|
||||||
|
|
||||||
|
$($(1)-objs): TEST_CFLAGS += -I$$(dir $$($(1)-config-file)) \
|
||||||
-D__$$(shell echo $$($(1)-stage) | tr '[:lower:]' '[:upper:]')__
|
-D__$$(shell echo $$($(1)-stage) | tr '[:lower:]' '[:upper:]')__
|
||||||
$($(1)-objs): $(obj)/$(1)/%.o: $$$$*.c $(TEST_KCONFIG_AUTOHEADER)
|
$($(1)-objs): $(obj)/$(1)/%.o: $$$$*.c $$($(1)-config-file)
|
||||||
mkdir -p $$(dir $$@)
|
mkdir -p $$(dir $$@)
|
||||||
$(HOSTCC) $(HOSTCFLAGS) $$(TEST_CFLAGS) $($(1)-cflags) -MMD \
|
$(HOSTCC) $(HOSTCFLAGS) $$(TEST_CFLAGS) $($(1)-cflags) -MMD \
|
||||||
-MT $$@ -c $$< -o $$@
|
-MT $$@ -c $$< -o $$@
|
||||||
|
|
Loading…
Reference in New Issue