diff options
author | Jakub Czapiga <jacz@semihalf.com> | 2021-04-28 16:50:51 +0200 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2021-05-13 00:15:54 +0000 |
commit | 5c3b05ecf4dbb89da3dd7bc514875b53e3a8ce1c (patch) | |
tree | 630569e38291d099dfd0402ef67511a38692942f /tests | |
parent | 62682e79a72bbc25c5c3ef937b347c8ae32a136c (diff) |
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>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.inc | 22 |
1 files 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 $$@ |