diff --git a/test/lib/Kconfig b/test/lib/Kconfig
new file mode 100644
index 0000000..dbb03e4
--- /dev/null
+++ b/test/lib/Kconfig
@@ -0,0 +1,23 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright 2022 Google LLC
+
+if SANDBOX
+
+config TEST_KCONFIG
+	bool "Enable detection of Kconfig macro errors"
+	help
+	  This is used to test that the IF_ENABLED_INT() macro causes a build error
+	  if the value is used when the CONFIG Is not enabled.
+
+config TEST_KCONFIG_ENABLE
+	bool "Option to enable"
+	help
+	  This is the option that controls whether the value is present.
+
+config TEST_KCONFIG_VALUE
+	int "Value associated with the option"
+	depends on TEST_KCONFIG_ENABLE
+	help
+	  This is the value whgch is present if TEST_KCONFIG_ENABLE is enabled.
+
+endif # SANDBOX
diff --git a/test/lib/Makefile b/test/lib/Makefile
index d244bb4..7e7922f 100644
--- a/test/lib/Makefile
+++ b/test/lib/Makefile
@@ -2,11 +2,13 @@
 #
 # (C) Copyright 2018
 # Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
+ifeq ($(CONFIG_SPL_BUILD),)
 obj-y += cmd_ut_lib.o
 obj-y += abuf.o
 obj-$(CONFIG_EFI_LOADER) += efi_device_path.o
 obj-$(CONFIG_EFI_SECURE_BOOT) += efi_image_region.o
 obj-y += hexdump.o
+obj-$(CONFIG_SANDBOX) += kconfig.o
 obj-y += lmb.o
 obj-y += longjmp.o
 obj-$(CONFIG_CONSOLE_RECORD) += test_print.o
@@ -19,3 +21,6 @@
 obj-$(CONFIG_AES) += test_aes.o
 obj-$(CONFIG_GETOPT) += getopt.o
 obj-$(CONFIG_UT_LIB_CRYPT) += test_crypt.o
+else
+obj-$(CONFIG_SANDBOX) += kconfig_spl.o
+endif
diff --git a/test/lib/kconfig.c b/test/lib/kconfig.c
new file mode 100644
index 0000000..472d2c5
--- /dev/null
+++ b/test/lib/kconfig.c
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Test of linux/kconfig.h macros
+ *
+ * Copyright 2022 Google LLC
+ * Written by Simon Glass <sjg@chromium.org>
+ */
+
+#include <common.h>
+#include <test/lib.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+static int lib_test_is_enabled(struct unit_test_state *uts)
+{
+	ulong val;
+
+	ut_asserteq(1, IS_ENABLED(CONFIG_CMDLINE))
+	ut_asserteq(0, IS_ENABLED(CONFIG__UNDEFINED))
+
+	ut_asserteq(1, CONFIG_IS_ENABLED(CMDLINE))
+	ut_asserteq(0, CONFIG_IS_ENABLED(OF_PLATDATA))
+	ut_asserteq(0, CONFIG_IS_ENABLED(_UNDEFINED))
+
+	ut_asserteq(0xc000,
+		    IF_ENABLED_INT(CONFIG_BLOBLIST_FIXED, CONFIG_BLOBLIST_ADDR));
+	ut_asserteq(0xc000,
+		    CONFIG_IF_ENABLED_INT(BLOBLIST_FIXED, BLOBLIST_ADDR));
+
+	/*
+	 * This fails if CONFIG_TEST_KCONFIG_ENABLE is not enabled, since the
+	 * value is used. Disable for SPL so that the errors in kconfig_spl.c
+	 * are detected, since otherwise a build error when building U-Boot may
+	 * cause SPL to not be built.
+	 */
+	if (!IS_ENABLED(CONFIG_SANDBOX_SPL) &&
+	    IS_ENABLED(CONFIG_TEST_KCONFIG)) {
+		val = IF_ENABLED_INT(CONFIG_TEST_KCONFIG_ENABLE,
+				     CONFIG_TEST_KCONFIG_VALUE);
+		printf("value %ld\n", val);
+	}
+
+	/*
+	 * This fails if CONFIG_TEST_KCONFIG_ENABLE is not enabled, since the
+	 * value is used. Disable for SPL so that the errors in kconfig_spl.c
+	 * are detected, since otherwise a build error when building U-Boot may
+	 * cause SPL to not be built.
+	 */
+	if (!IS_ENABLED(CONFIG_SANDBOX_SPL) &&
+	    CONFIG_IS_ENABLED(TEST_KCONFIG)) {
+		val = CONFIG_IF_ENABLED_INT(TEST_KCONFIG_ENABLE,
+					    TEST_KCONFIG_VALUE);
+		printf("value2 %ld\n", val);
+	}
+
+	return 0;
+}
+LIB_TEST(lib_test_is_enabled, 0);
diff --git a/test/lib/kconfig_spl.c b/test/lib/kconfig_spl.c
new file mode 100644
index 0000000..c89ceaec
--- /dev/null
+++ b/test/lib/kconfig_spl.c
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Test of linux/kconfig.h macros for SPL
+ *
+ * Copyright 2022 Google LLC
+ * Written by Simon Glass <sjg@chromium.org>
+ */
+
+#include <common.h>
+#include <test/lib.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+static int lib_test_spl_is_enabled(struct unit_test_state *uts)
+{
+	ulong val;
+
+	ut_asserteq(0, CONFIG_IS_ENABLED(CMDLINE))
+	ut_asserteq(1, CONFIG_IS_ENABLED(OF_PLATDATA))
+	ut_asserteq(0, CONFIG_IS_ENABLED(_UNDEFINED))
+
+	/*
+	 * This fails if CONFIG_TEST_KCONFIG_ENABLE is not enabled, since the
+	 * value is used.
+	 */
+	if (IS_ENABLED(CONFIG_TEST_KCONFIG)) {
+		val = IF_ENABLED_INT(CONFIG_TEST_KCONFIG_ENABLE,
+				     CONFIG_TEST_KCONFIG_VALUE);
+		printf("value %ld\n", val);
+	}
+
+	/*
+	 * This fails if CONFIG_TEST_KCONFIG_ENABLE is not enabled, since the
+	 * value is used.
+	 */
+	if (CONFIG_IS_ENABLED(TEST_KCONFIG)) {
+		val = CONFIG_IF_ENABLED_INT(TEST_KCONFIG_ENABLE,
+					    TEST_KCONFIG_VALUE);
+		printf("value2 %ld\n", val);
+	}
+
+	return 0;
+}
+LIB_TEST(lib_test_spl_is_enabled, 0);
