diff --git a/BUILD.bazel b/BUILD.bazel index e3df3b751a5f..6ba3cba34cc8 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -553,6 +553,100 @@ kernel_build( visibility = ["//visibility:private"], ) +# KUnit test targets + +# Modules defined by tools/testing/kunit/configs/android/kunit_defconfig +_KUNIT_COMMON_MODULES = [ + # keep sorted + "drivers/base/regmap/regmap-kunit.ko", + "drivers/base/regmap/regmap-ram.ko", + "drivers/base/regmap/regmap-raw-ram.ko", + "drivers/hid/hid-uclogic-test.ko", + "drivers/iio/test/iio-test-format.ko", + "drivers/input/tests/input_test.ko", + "drivers/rtc/lib_test.ko", + "fs/ext4/ext4-inode-test.ko", + "fs/fat/fat_test.ko", + "kernel/time/time_test.ko", + "lib/kunit/kunit-example-test.ko", + "lib/kunit/kunit-test.ko", + "mm/kfence/kfence_test.ko", + "net/core/dev_addr_lists_test.ko", + "sound/soc/soc-topology-test.ko", + "sound/soc/soc-utils-test.ko", +] + +_KUNIT_CLK_MODULES = [ + "drivers/clk/clk-gate_test.ko", + "drivers/clk/clk_test.ko", +] + +kernel_build( + name = "kunit_aarch64", + outs = [], + arch = "arm64", + base_kernel = ":kernel_aarch64", + build_config = "build.config.kunit.aarch64", + defconfig_fragments = [ + "tools/testing/kunit/configs/android/kunit_defconfig", + "tools/testing/kunit/configs/android/kunit_clk_defconfig", + ], + make_goals = ["modules"], + module_outs = _KUNIT_COMMON_MODULES + _KUNIT_CLK_MODULES, +) + +copy_to_dist_dir( + name = "kunit_aarch64_dist", + data = [":kunit_aarch64"], + dist_dir = "out/kunit_aarch64/dist", + flat = True, + log = "info", +) + +kernel_build( + name = "kunit_x86_64", + outs = [], + arch = "x86_64", + base_kernel = ":kernel_x86_64", + build_config = "build.config.kunit.x86_64", + defconfig_fragments = [ + "tools/testing/kunit/configs/android/kunit_defconfig", + # x86_64 does not set CONFIG_COMMON_CLK + ], + make_goals = ["modules"], + module_outs = _KUNIT_COMMON_MODULES, +) + +copy_to_dist_dir( + name = "kunit_x86_64_dist", + data = [":kunit_x86_64"], + dist_dir = "out/kunit_x86_64/dist", + flat = True, + log = "info", +) + +kernel_build( + name = "kunit_riscv64", + outs = [], + arch = "riscv64", + base_kernel = ":kernel_riscv64", + build_config = "build.config.kunit.riscv64", + defconfig_fragments = [ + "tools/testing/kunit/configs/android/kunit_defconfig", + "tools/testing/kunit/configs/android/kunit_clk_defconfig", + ], + make_goals = ["modules"], + module_outs = _KUNIT_COMMON_MODULES + _KUNIT_CLK_MODULES, +) + +copy_to_dist_dir( + name = "kunit_riscv64_dist", + data = [":kunit_riscv64"], + dist_dir = "out/kunit_riscv64/dist", + flat = True, + log = "info", +) + # DDK Headers # All headers. These are the public targets for DDK modules to use. alias( diff --git a/build.config.kunit.aarch64 b/build.config.kunit.aarch64 new file mode 100644 index 000000000000..128c611891d7 --- /dev/null +++ b/build.config.kunit.aarch64 @@ -0,0 +1,4 @@ +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64 + +DEFCONFIG=gki_defconfig diff --git a/build.config.kunit.riscv64 b/build.config.kunit.riscv64 new file mode 100644 index 000000000000..994b70ead51d --- /dev/null +++ b/build.config.kunit.riscv64 @@ -0,0 +1,4 @@ +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.riscv64 + +DEFCONFIG=gki_defconfig diff --git a/build.config.kunit.x86_64 b/build.config.kunit.x86_64 new file mode 100644 index 000000000000..30988fb16f48 --- /dev/null +++ b/build.config.kunit.x86_64 @@ -0,0 +1,4 @@ +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.x86_64 + +DEFCONFIG=gki_defconfig diff --git a/tools/testing/kunit/configs/android/kunit_clk_defconfig b/tools/testing/kunit/configs/android/kunit_clk_defconfig new file mode 100644 index 000000000000..83c4aa764b7d --- /dev/null +++ b/tools/testing/kunit/configs/android/kunit_clk_defconfig @@ -0,0 +1,3 @@ +# Only for architectures that set CONFIG_COMMON_CLK +CONFIG_CLK_KUNIT_TEST=m +CONFIG_CLK_GATE_KUNIT_TEST=m diff --git a/tools/testing/kunit/configs/android/kunit_defconfig b/tools/testing/kunit/configs/android/kunit_defconfig new file mode 100644 index 000000000000..a3c43e3912e7 --- /dev/null +++ b/tools/testing/kunit/configs/android/kunit_defconfig @@ -0,0 +1,37 @@ +# Defconfig fragment for Android Kunit targets +# +# Instead of setting CONFIG_KUNIT_ALL_TESTS=m, we enable individual tests +# because: +# - The defconfig fragment is applied after make defconfig +# - If additional tests are added to CONFIG_KUNIT_ALL_TESTS in the future, +# //common:kunit_* module_outs needs to be updated. + +# CONFIG_MODULE_SIG_ALL is not set + +# Corresponds to BUILD.bazel, _KUNIT_COMMON_MODULES +CONFIG_TIME_KUNIT_TEST=m +CONFIG_NETDEV_ADDR_LIST_TEST=m +CONFIG_REGMAP_KUNIT=m +CONFIG_INPUT_KUNIT_TEST=m +CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m +CONFIG_SND_SOC_UTILS_KUNIT_TEST=m +CONFIG_HID_KUNIT_TEST=m +CONFIG_RTC_LIB_KUNIT_TEST=m +CONFIG_IIO_FORMAT_KUNIT_TEST=m +CONFIG_EXT4_KUNIT_TESTS=m +CONFIG_FAT_KUNIT_TEST=m +CONFIG_KFENCE_KUNIT_TEST=m +CONFIG_KUNIT_TEST=m +CONFIG_KUNIT_EXAMPLE_TEST=m + +# CONFIG_NET_HANDSHAKE is not enabled in gki_defconfig. +# CONFIG_NET_HANDSHAKE_KUNIT_TEST=m + +# TODO(b/296116800): Enable these tests +# CONFIG_DRM_KUNIT_TEST=m +# CONFIG_KASAN_KUNIT_TEST=m + +# TODO(b/296116800): These are booleans, not tristates. +# CONFIG_BINFMT_ELF_KUNIT_TEST=y +# CONFIG_PM_QOS_KUNIT_TEST=y +# CONFIG_DRIVER_PE_KUNIT_TEST=y