summaryrefslogtreecommitdiff
path: root/resources/coreboot/default/patches/0011-tests-Enable-config-override-for-tests.patch
diff options
context:
space:
mode:
Diffstat (limited to 'resources/coreboot/default/patches/0011-tests-Enable-config-override-for-tests.patch')
-rw-r--r--resources/coreboot/default/patches/0011-tests-Enable-config-override-for-tests.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/resources/coreboot/default/patches/0011-tests-Enable-config-override-for-tests.patch b/resources/coreboot/default/patches/0011-tests-Enable-config-override-for-tests.patch
new file mode 100644
index 00000000..2aca94d5
--- /dev/null
+++ b/resources/coreboot/default/patches/0011-tests-Enable-config-override-for-tests.patch
@@ -0,0 +1,76 @@
+From 89236c7c44797cd8306d9509552bf0115ffe928a Mon Sep 17 00:00:00 2001
+From: Jakub Czapiga <jacz@semihalf.com>
+Date: Wed, 28 Apr 2021 16:50:51 +0200
+Subject: [PATCH 11/17] 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>
+---
+ tests/Makefile.inc | 22 ++++++++++++++++++----
+ 1 file changed, 18 insertions(+), 4 deletions(-)
+
+diff --git a/tests/Makefile.inc b/tests/Makefile.inc
+index 44e3c69618..cd25e0f809 100644
+--- a/tests/Makefile.inc
++++ b/tests/Makefile.inc
+@@ -11,7 +11,7 @@ CMAKE:= cmake
+
+ TEST_DEFAULT_CONFIG = $(top)/configs/config.emulation_qemu_x86_i440fx
+ 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_DEPENDENCIES := $(testobj)/auto.conf.cmd
+ TEST_KCONFIG_SPLITCONFIG := $(testobj)/config
+@@ -52,7 +52,7 @@ TEST_CFLAGS += -fno-pie -fno-pic
+ TEST_LDFLAGS += -no-pie
+
+ # 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+= ramstage rmodule postcar libagesa
+@@ -83,9 +83,23 @@ $(call evaluate_subdirs)
+ # Create actual targets for unit test binaries
+ # $1 - test name
+ 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:]')__
+-$($(1)-objs): $(obj)/$(1)/%.o: $$$$*.c $(TEST_KCONFIG_AUTOHEADER)
++$($(1)-objs): $(obj)/$(1)/%.o: $$$$*.c $$($(1)-config-file)
+ mkdir -p $$(dir $$@)
+ $(HOSTCC) $(HOSTCFLAGS) $$(TEST_CFLAGS) $($(1)-cflags) -MMD \
+ -MT $$@ -c $$< -o $$@
+--
+2.25.1
+