Hello Patrick Georgi,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/coreboot/+/41045
to review the following change.
Change subject: tests: Add test.h default header and fix --gc-sections ......................................................................
tests: Add test.h default header and fix --gc-sections
<cmocka.h> requires a few standard headers to be explicitly included before itself or it will throw compilation errors. Having to always include these headers in the right order in every test is cumbersome. Instead, this patch encapsulates the problem in a new <test.h> header that is force-included from the Makefile command line into every test, so that tests only need to worry about non-framework-related headers they may want to include.
Also fix --gc-sections in the test framework which needs to be passed for linking, not for compiling.
Signed-off-by: Julius Werner jwerner@chromium.org Change-Id: I4284d74c8673708e21a5266eb42f7b9ae19a1b12 --- M tests/Makefile.inc M tests/device/i2c-test.c A tests/include/test.h M tests/lib/string-test.c 4 files changed, 25 insertions(+), 16 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/45/41045/1
diff --git a/tests/Makefile.inc b/tests/Makefile.inc index 82f724e..d5c6575 100644 --- a/tests/Makefile.inc +++ b/tests/Makefile.inc @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only # This file is part of the coreboot project.
+testsrc = $(top)/tests testobj = $(obj)/tests
TEST_DEFAULT_CONFIG = $(top)/configs/config.emulation_qemu_x86_i440fx @@ -11,12 +12,12 @@ TEST_KCONFIG_SPLITCONFIG := $(testobj)/config TEST_KCONFIG_TRISTATE := $(testobj)/tristate.conf
-TEST_CFLAGS = -include$(src)/include/kconfig.h \ - -include$(src)/commonlib/bsd/include/commonlib/bsd/compiler.h \ - -include $(src)/include/rules.h \ +TEST_CFLAGS = -include $(src)/include/kconfig.h \ + -include $(src)/commonlib/bsd/include/commonlib/bsd/compiler.h \ + -include $(src)/include/rules.h -include $(testsrc)/include/test.h
# Include generic test mock headers, before original ones -TEST_CFLAGS += -Itests/include/mocks +TEST_CFLAGS += -I$(testsrc)/include/mocks
TEST_CFLAGS += -I$(src)/include -I$(src)/commonlib/include \ -I$(src)/commonlib/bsd/include -I$(src)/arch/x86/include \ @@ -25,10 +26,10 @@ TEST_CFLAGS += -I$(dir $(TEST_KCONFIG_AUTOHEADER))
TEST_CFLAGS += -std=gnu11 -Os -ffunction-sections -fdata-sections \ - -Wl,--gc-sections -fno-builtin + -fno-builtin
# Link against Cmocka -TEST_LDFLAGS = -lcmocka +TEST_LDFLAGS = -lcmocka -Wl,--gc-sections
# Extra attributes for unit tests, declared per test attributes:= srcs cflags mocks stage diff --git a/tests/device/i2c-test.c b/tests/device/i2c-test.c index 16e4d0d..5c4237b 100644 --- a/tests/device/i2c-test.c +++ b/tests/device/i2c-test.c @@ -11,13 +11,8 @@ * GNU General Public License for more details. */
-#include <stdarg.h> -#include <stddef.h> -#include <setjmp.h> -#include <limits.h> -#include <cmocka.h> - #include <device/i2c_simple.h> +#include <limits.h>
/* Simulate two i2c devices, both on bus 0, each with three uint8_t regs implemented. */ diff --git a/tests/include/test.h b/tests/include/test.h new file mode 100644 index 0000000..a628f80 --- /dev/null +++ b/tests/include/test.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* This file is part of the coreboot project. */ + +#ifndef _TESTS_TEST_H +#define _TESTS_TEST_H + +/* + * Standard test header that is automatically included for all tests. For now it just + * encapsulates the include dependencies for Cmocka. + */ + +#include <stdarg.h> +#include <stddef.h> +#include <setjmp.h> +#include <cmocka.h> + +#endif /* _TESTS_TEST_H */ diff --git a/tests/lib/string-test.c b/tests/lib/string-test.c index 210aaba..fd53980 100644 --- a/tests/lib/string-test.c +++ b/tests/lib/string-test.c @@ -1,7 +1,3 @@ -#include <stdarg.h> -#include <stddef.h> -#include <setjmp.h> -#include <cmocka.h>
#include <string.h>