[Concept,2/3] codman: Set up categories for the U-Boot codebase

Message ID 20260113222054.1204055-3-sjg@u-boot.org
State New
Headers
Series codman: Add category system and CSV output |

Commit Message

Simon Glass Jan. 13, 2026, 10:20 p.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

Provide a basic category.cfg file for U-Boot, focussing solely on the
qemu-x86 build.

Signed-off-by: Simon Glass <simon.glass@canonical.com>
---

 tools/codman/category.cfg | 854 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 854 insertions(+)
 create mode 100644 tools/codman/category.cfg
  

Patch

diff --git a/tools/codman/category.cfg b/tools/codman/category.cfg
new file mode 100644
index 00000000000..478459d1bb0
--- /dev/null
+++ b/tools/codman/category.cfg
@@ -0,0 +1,854 @@ 
+# Codman category and feature configuration
+#
+# This file defines categories and features for code analysis.
+#
+# Ignore section lists external code to exclude from reports:
+#   [ignore]
+#   files = ["path/to/external/"]
+#
+# Categories group related features together:
+#   [categories.<label>]
+#   description = "Human-readable name"
+#
+# Features define functional areas with associated source files:
+#   [features.<label>]
+#   category = "<category-label>"   # must match a category above
+#   description = "Human-readable name"
+#   files = [                       # list of file patterns to match
+#       "path/to/file.c",           # exact file path
+#       "path/to/files*",           # glob pattern
+#       "path/to/dir/",             # directory prefix (matches all files under it)
+#   ]
+#
+# Features should be kept in alphabetical order by label.
+
+[ignore]
+#files = [
+#    "lib/lwip/lwip/",
+#]
+
+[categories.efi-loader]
+description = "EFI loader"
+
+[categories.load-boot]
+description = "Loading & Boot"
+
+[categories.storage]
+description = "Storage"
+
+[categories.tables]
+description = "Tables & Data Structures"
+
+[categories.drivers]
+description = "Drivers"
+
+[categories.network]
+description = "Network"
+
+[categories.user-interface]
+description = "User Interface"
+
+[categories.verification]
+description = "Verification"
+
+[categories.other]
+description = "Other"
+
+[features.board-init]
+category = "load-boot"
+description = "Board initialisation"
+files = [
+    "common/board_f.c",
+    "common/board_r.c",
+    "common/board_info.c",
+    "common/init/",
+]
+
+[features.block-devices]
+category = "storage"
+description = "Block devices"
+files = [
+    "cmd/blkmap.c",
+    "drivers/block/blk-uclass.c",
+    "drivers/block/blkcache.c",
+    "drivers/block/blkmap.c",
+    "drivers/block/blkmap_helper.c",
+    "drivers/block/ide.c",
+]
+
+[features.bochs]
+category = "user-interface"
+description = "Bochs display"
+files = []
+
+[features.boot-arm-bare]
+category = "load-boot"
+description = "Boot on bare-metal ARM targets"
+files = []
+
+[features.boot-arm-qemu]
+category = "load-boot"
+description = "Boot on ARM QEMU"
+files = []
+
+[features.boot-efi-x86-arm]
+category = "load-boot"
+description = "Boot on EFI on x86 & ARM"
+files = []
+
+[features.boot-linux-direct]
+category = "load-boot"
+description = "Boot Linux directly"
+files = [
+    "boot/bootm.c",
+    "boot/bootm_final.c",
+    "boot/bootm_os.c",
+    "boot/bootmeth-uclass.c",
+    "boot/bootmeth_cros.c",
+    "boot/bootmeth_efi.c",
+    "boot/bootmeth_efi_mgr.c",
+    "boot/bootmeth_extlinux.c",
+    "boot/bootmeth_pxe.c",
+    "boot/bootmeth_qfw.c",
+    "boot/bootmeth_script.c",
+    "common/bootstage.c",
+]
+
+[features.boot-linux-efi]
+category = "load-boot"
+description = "Boot Linux via EFI"
+files = [
+    "cmd/efi_common.c",
+    "cmd/eficonfig.c",
+    "cmd/efidebug.c",
+    "lib/efi/basename.c",
+    "lib/efi/device_path.c",
+    "lib/efi/helper.c",
+    "lib/efi/input.c",
+    "lib/efi/load_options.c",
+    "lib/efi/memory.c",
+    "lib/efi/run.c",
+    "lib/efi/string.c",
+]
+
+[features.efi-loader]
+category = "efi-loader"
+description = "Boot Linux via EFI"
+files = [
+    "lib/efi_loader/",
+]
+
+[features.boot-timing]
+category = "load-boot"
+description = "Boot timing & pass to userspace"
+files = []
+
+[features.boot-x86-bare]
+category = "load-boot"
+description = "Boot on x86 bare metal"
+files = [
+    "arch/x86/cpu/",
+    "arch/x86/cpu/cpu.c",
+    "arch/x86/cpu/cpu_x86.c",
+    "arch/x86/cpu/i386/call64.S",
+    "arch/x86/cpu/i386/cpu.c",
+    "arch/x86/cpu/i386/interrupt.c",
+    "arch/x86/cpu/i386/setjmp.S",
+    "arch/x86/cpu/intel_common/cpu.c",
+    "arch/x86/cpu/intel_common/cpu_from_spl.c",
+    "arch/x86/cpu/intel_common/fast_spi.c",
+    "arch/x86/cpu/intel_common/lpc.c",
+    "arch/x86/cpu/intel_common/lpss.c",
+    "arch/x86/cpu/intel_common/microcode.c",
+    "arch/x86/cpu/intel_common/pch.c",
+    "arch/x86/cpu/ioapic.c",
+    "arch/x86/cpu/irq.c",
+    "arch/x86/cpu/lapic.c",
+    "arch/x86/cpu/mtrr.c",
+    "arch/x86/cpu/pci.c",
+    "arch/x86/cpu/qemu/car.S",
+    "arch/x86/cpu/qemu/cpu.c",
+    "arch/x86/cpu/qemu/dram.c",
+    "arch/x86/cpu/qemu/e820.c",
+    "arch/x86/cpu/qemu/qemu.c",
+    "arch/x86/cpu/qfw_cpu.c",
+    "arch/x86/cpu/resetvec.S",
+    "arch/x86/cpu/sipi_vector.S",
+    "arch/x86/cpu/start.S",
+    "arch/x86/cpu/start16.S",
+    "arch/x86/cpu/start64.S",
+    "arch/x86/cpu/turbo.c",
+    "arch/x86/cpu/x86_64/cpu.c",
+    "arch/x86/cpu/x86_64/interrupts.c",
+    "arch/x86/cpu/x86_64/misc.c",
+    "arch/x86/cpu/x86_64/setjmp.S",
+    "arch/x86/lib/acpi.c",
+    "arch/x86/lib/bdinfo.c",
+    "arch/x86/lib/bios.c",
+    "arch/x86/lib/bios_asm.S",
+    "arch/x86/lib/bios_interrupts.c",
+    "arch/x86/lib/bootm.c",
+    "arch/x86/lib/cmd_boot.c",
+    "arch/x86/lib/crt0_ia32_efi.S",
+    "arch/x86/lib/crt0_x86_64_efi.S",
+    "arch/x86/lib/div64.c",
+    "arch/x86/lib/e820.c",
+    "arch/x86/lib/early_cmos.c",
+    "arch/x86/lib/i8254.c",
+    "arch/x86/lib/i8259.c",
+    "arch/x86/lib/init_helpers.c",
+    "arch/x86/lib/interrupts.c",
+    "arch/x86/lib/lpc-uclass.c",
+    "arch/x86/lib/mpspec.c",
+    "arch/x86/lib/northbridge-uclass.c",
+    "arch/x86/lib/physmem.c",
+    "arch/x86/lib/pirq_routing.c",
+    "arch/x86/lib/reloc_ia32_efi.c",
+    "arch/x86/lib/reloc_x86_64_efi.c",
+    "arch/x86/lib/relocate.c",
+    "arch/x86/lib/sections.c",
+    "arch/x86/lib/sfi.c",
+    "arch/x86/lib/spl.c",
+    "arch/x86/lib/string.c",
+    "arch/x86/lib/zimage.c",
+]
+
+[features.cli]
+category = "other"
+description = "CLI for command entry"
+files = [
+    "cmd/acpi.c",
+    "cmd/bdinfo.c",
+    "cmd/blk_common.c",
+    "cmd/blkcache.c",
+    "cmd/bloblist.c",
+    "cmd/boot.c",
+    "cmd/bootdev.c",
+    "cmd/bootefi.c",
+    "cmd/bootflow.c",
+    "cmd/bootm.c",
+    "cmd/bootmeth.c",
+    "cmd/bootstage.c",
+    "cmd/bootstd.c",
+    "cmd/cat.c",
+    "cmd/cls.c",
+    "cmd/console.c",
+    "cmd/cpu.c",
+    "cmd/cyclic.c",
+    "cmd/date.c",
+    "cmd/disk.c",
+    "cmd/dm.c",
+    "cmd/echo.c",
+    "cmd/elf.c",
+    "cmd/exit.c",
+    "cmd/ext2.c",
+    "cmd/ext4.c",
+    "cmd/fat.c",
+    "cmd/fdt.c",
+    "cmd/font.c",
+    "cmd/fs.c",
+    "cmd/gettime.c",
+    "cmd/help.c",
+    "cmd/ide.c",
+    "cmd/io.c",
+    "cmd/irq.c",
+    "cmd/itest.c",
+    "cmd/legacy-mtd-utils.c",
+    "cmd/load.c",
+    "cmd/malloc.c",
+    "cmd/mem.c",
+    "cmd/meminfo.c",
+    "cmd/mii.c",
+    "cmd/mouse.c",
+    "cmd/net-common.c",
+    "cmd/net.c",
+    "cmd/nvedit.c",
+    "cmd/nvedit_efi.c",
+    "cmd/nvme.c",
+    "cmd/panic.c",
+    "cmd/part.c",
+    "cmd/pci.c",
+    "cmd/qfw.c",
+    "cmd/rtc.c",
+    "cmd/scsi.c",
+    "cmd/sf.c",
+    "cmd/sleep.c",
+    "cmd/smbios.c",
+    "cmd/source.c",
+    "cmd/spi.c",
+    "cmd/test.c",
+    "cmd/time.c",
+    "cmd/usb.c",
+    "cmd/vbe.c",
+    "cmd/version.c",
+    "cmd/video.c",
+    "cmd/virtio.c",
+    "cmd/x86/cpuid.c",
+    "cmd/x86/msr.c",
+    "cmd/x86/mtrr.c",
+    "cmd/x86/qfw_x86.c",
+    "cmd/x86/zboot.c",
+    "cmd/ximg.c",
+    "common/cli.c",
+    "common/cli_getch.c",
+    "common/cli_hush.c",
+    "common/cli_readline.c",
+    "common/cli_simple.c",
+    "common/command.c",
+]
+
+[features.text-console]
+category = "user-interface"
+description = "Text console"
+files = [
+    "common/console.c",
+    "common/stdio.c",
+    "common/iomux.c",
+]
+
+[features.compression]
+category = "other"
+description = "Compression (lzma, gzip, lzo, zstd)"
+files = [
+    "lib/gunzip.c",
+    "lib/lz4.c",
+    "lib/lz4_wrapper.c",
+    "lib/lzo/",
+    "lib/xxhash.c",
+    "lib/zlib/",
+    "lib/zstd/",
+]
+
+[features.crc-hash]
+category = "verification"
+description = "CRC and hash"
+files = [
+    "common/hash.c",
+    "drivers/rng/rng-uclass.c",
+    "lib/crc16-ccitt.c",
+    "lib/crc16.c",
+    "lib/crc32.c",
+    "lib/crc8.c",
+    "lib/hash-checksum.c",
+    "lib/hashtable.c",
+    "lib/md5.c",
+    "lib/sha1.c",
+    "lib/sha256.c",
+    "lib/sha256_common.c",
+    "lib/sha512.c",
+]
+
+[features.disk-handling]
+category = "storage"
+description = "Disk handling"
+files = [
+    "disk/disk-uclass.c",
+    "disk/part.c",
+    "disk/part_dos.c",
+    "disk/part_efi.c",
+    "disk/part_iso.c",
+    "disk/part_mac.c",
+]
+
+[features.dos-partition]
+category = "storage"
+description = "DOS partition read"
+files = []
+
+[features.driver-model]
+category = "drivers"
+description = "Driver abstraction/model"
+files = [
+    "drivers/ata/ahci-pci.c",
+    "drivers/ata/ahci-uclass.c",
+    "drivers/ata/ahci.c",
+    "drivers/ata/libata.c",
+    "drivers/core/device-remove.c",
+    "drivers/core/device.c",
+    "drivers/core/dump.c",
+    "drivers/core/fdtaddr.c",
+    "drivers/core/lists.c",
+    "drivers/core/of_extra.c",
+    "drivers/core/ofnode.c",
+    "drivers/core/ofnode_graph.c",
+    "drivers/core/read_extra.c",
+    "drivers/core/regmap.c",
+    "drivers/core/root.c",
+    "drivers/core/simple-bus.c",
+    "drivers/core/syscon-uclass.c",
+    "drivers/core/tag.c",
+    "drivers/core/uclass.c",
+    "drivers/core/util.c",
+    "drivers/cpu/cpu-uclass.c",
+    "drivers/crypto/fsl/sec.c",
+    "drivers/gpio/gpio-uclass.c",
+    "drivers/misc/irq-uclass.c",
+    "drivers/mtd/mtd_uboot.c",
+    "drivers/mtd/mtdcore.c",
+    "drivers/mtd/spi/sf-uclass.c",
+    "drivers/mtd/spi/sf_probe.c",
+    "drivers/mtd/spi/spi-nor-core.c",
+    "drivers/mtd/spi/spi-nor-ids.c",
+    "drivers/mtd/spi/spi-nor-tiny.c",
+    "drivers/pch/pch-uclass.c",
+    "drivers/pch/pch7.c",
+    "drivers/pch/pch9.c",
+    "drivers/pinctrl/pinctrl-generic.c",
+    "drivers/pinctrl/pinctrl-uclass.c",
+    "drivers/scsi/scsi-uclass.c",
+    "drivers/scsi/scsi.c",
+    "drivers/scsi/scsi_bootdev.c",
+    "drivers/spi/spi-mem.c",
+    "drivers/spi/spi-uclass.c",
+    "drivers/sysinfo/sysinfo-uclass.c",
+    "drivers/sysreset/sysreset-uclass.c",
+    "drivers/sysreset/sysreset_x86.c",
+    "drivers/usb/common/common.c",
+    "drivers/usb/eth/asix.c",
+    "drivers/usb/eth/smsc95xx.c",
+    "drivers/usb/eth/usb_ether.c",
+    "common/event.c",
+]
+
+[features.efi-device-paths]
+category = "tables"
+description = "EFI device paths"
+files = []
+
+[features.efi-gop]
+category = "user-interface"
+description = "EFI GOP display"
+files = []
+
+[features.efi-ulib-lace]
+category = "drivers"
+description = "EFI / ulib / Lace driver model"
+files = [
+    "lib/efi_driver/",
+    "lib/ulib/",
+    "lib/uuid.c",
+]
+
+[features.net-lwip]
+category = "network"
+description = "lwIP network stack"
+files = [
+    "cmd/net-lwip.c",
+    "lib/lwip/",
+    "net/lwip/",
+]
+
+[features.ethernet]
+category = "network"
+description = "Ethernet"
+files = [
+    "common/miiphyutil.c",
+    "drivers/net/e1000.c",
+    "lib/net_utils.c",
+    "net/arp.c",
+    "net/bootp.c",
+    "net/eth-uclass.c",
+    "net/eth_bootdev.c",
+    "net/eth_common.c",
+    "net/net-common.c",
+    "net/net.c",
+    "net/ping.c",
+    "net/tftp.c",
+]
+
+[features.ext4-readonly]
+category = "storage"
+description = "EXT4 read-only support"
+files = [
+    "fs/ext4/dev.c",
+    "fs/ext4/ext4_common.c",
+    "fs/ext4/ext4_journal.c",
+    "fs/ext4/ext4_write.c",
+    "fs/ext4/ext4fs.c",
+]
+
+[features.ext4-readwrite]
+category = "storage"
+description = "EXT4 read-write support"
+files = [
+    "fs/ext4l/",
+]
+
+[features.extlinux-parse]
+category = "load-boot"
+description = "Extlinux configuration parsing"
+files = [
+    "boot/pxe_parse.c",
+    "boot/pxe_utils.c",
+    "cmd/pxe.c",
+]
+
+[features.fat-read]
+category = "storage"
+description = "FAT read"
+files = [
+    "fs/fat/fat.c",
+    "fs/fat/fat_write.c",
+]
+
+[features.fdt-read]
+category = "tables"
+description = "FDT reading"
+files = [
+    "lib/fdtdec.c",
+    "lib/fdtdec_common.c",
+]
+
+[features.fdt-update]
+category = "tables"
+description = "FDT updating"
+files = [
+    "boot/fdt_support.c",
+]
+
+[features.firmware-handoff]
+category = "tables"
+description = "Firmware handoff"
+files = [
+    "common/bloblist.c",
+]
+
+[features.fit-load]
+category = "load-boot"
+description = "FIT image loading"
+files = [
+    "boot/bootdev-uclass.c",
+    "boot/bootflow.c",
+    "boot/bootflow_menu.c",
+    "boot/bootstd-uclass.c",
+    "boot/common_fit.c",
+    "boot/ext_pxe_common.c",
+    "boot/fdt_region.c",
+    "boot/fit_print.c",
+    "boot/image-board.c",
+    "boot/image-cipher.c",
+    "boot/image-fdt.c",
+    "boot/image-fit-sig.c",
+    "boot/image-fit.c",
+    "boot/image-host.c",
+    "boot/image-pre-load.c",
+    "boot/image.c",
+    "boot/vbe.c",
+    "boot/vbe_common.c",
+    "boot/vbe_request.c",
+    "boot/vbe_simple.c",
+    "boot/vbe_simple_os.c",
+    "lib/fdt-libcrypto.c",
+    "lib/fdt_print.c",
+]
+
+[features.fit-verify-internal]
+category = "verification"
+description = "FIT verification (internal)"
+files = [
+    "lib/aes/",
+    "lib/ecdsa/ecdsa-libcrypto.c",
+    "lib/rc4.c",
+    "lib/rsa/rsa-mod-exp.c",
+    "lib/rsa/rsa-sign.c",
+    "lib/rsa/rsa-verify.c",
+]
+
+[features.fit-verify-shim]
+category = "verification"
+description = "FIT verification via Shim"
+files = []
+
+[features.fonts]
+category = "user-interface"
+description = "Font support"
+files = [
+    "drivers/video/console_truetype.c",
+]
+
+[features.fs-layer]
+category = "storage"
+description = "Filesystem layer"
+files = [
+    "fs/dir-uclass.c",
+    "fs/file-uclass.c",
+    "fs/fs-uclass.c",
+    "fs/fs_internal.c",
+    "fs/fs_legacy.c",
+]
+
+[features.graphical-display]
+category = "user-interface"
+description = "Graphical display support"
+files = [
+    "boot/bootflow_menu.c",
+    "boot/expo.c",
+    "common/splash.c",
+    "common/splash_source.c",
+    "boot/expo_build.c",
+    "boot/scene.c",
+    "boot/scene_menu.c",
+    "boot/scene_textedit.c",
+    "boot/scene_textline.c",
+    "drivers/video/backlight-uclass.c",
+    "drivers/video/bochs.c",
+    "drivers/video/console_core.c",
+    "drivers/video/console_normal.c",
+    "drivers/video/panel-uclass.c",
+    "drivers/video/simple_panel.c",
+    "drivers/video/vesa_helper.c",
+    "drivers/video/vidconsole-uclass.c",
+    "drivers/video/video-uclass.c",
+    "drivers/video/video_bmp.c",
+]
+
+[features.https-images]
+category = "storage"
+description = "HTTPS to read images"
+files = []
+
+[features.keyboard-decode]
+category = "user-interface"
+description = "Keyboard decode"
+files = []
+
+[features.keyboard-input]
+category = "user-interface"
+description = "Keyboard input support"
+files = [
+    "common/usb_kbd.c",
+    "drivers/input/i8042.c",
+    "drivers/input/input.c",
+    "drivers/input/key_matrix.c",
+    "drivers/input/keyboard-uclass.c",
+    "drivers/input/mouse-uclass.c",
+    "drivers/input/usb_mouse.c",
+]
+
+[features.logging]
+category = "other"
+description = "Logging"
+files = [
+    "common/log.c",
+    "common/log_console.c",
+]
+
+[features.alloc]
+category = "other"
+description = "Malloc & Memory"
+files = [
+    "common/dlmalloc.c",
+    "common/malloc_simple.c",
+    "common/memsize.c",
+    "common/memtop.c",
+    "lib/lmb.c",
+    "lib/physmem.c",
+]
+
+[features.memory-images]
+category = "tables"
+description = "Memory for loaded images"
+files = []
+
+[features.misc]
+category = "other"
+description = "Miscellaneous"
+files = [
+    "common/autoboot.c",
+    "common/cyclic.c",
+    "common/exports.c",
+    "common/main.c",
+    "common/s_record.c",
+    "common/version.c",
+    "common/xyzModem.c",
+    "lib/binman.c",
+    "lib/dhry/",
+    "lib/elf.c",
+]
+
+[features.mouse-input]
+category = "user-interface"
+description = "Mouse input support"
+files = [
+    "drivers/input/mouse-uclass*",
+    "efi_mouse*",
+    "usb_mouse*",
+]
+
+[features.nvme]
+category = "storage"
+description = "NVMe support"
+files = [
+    "drivers/nvme/nvme-uclass.c",
+    "drivers/nvme/nvme.c",
+    "drivers/nvme/nvme_pci.c",
+    "drivers/nvme/nvme_show.c",
+]
+
+[features.pci]
+category = "drivers"
+description = "PCI support"
+files = [
+    "drivers/pci/",
+]
+
+[features.qemu-qfw]
+category = "drivers"
+description = "QEMU / Qfw features"
+files = [
+    "drivers/qfw/qfw-uclass.c",
+    "drivers/qfw/qfw.c",
+    "drivers/qfw/qfw_acpi.c",
+    "drivers/qfw/qfw_pio.c",
+    "drivers/qfw/qfw_smbios.c",
+]
+
+[features.schema-access]
+category = "tables"
+description = "Schema read & access"
+files = [
+    "boot/bootctl/",
+]
+
+[features.serial-driver]
+category = "drivers"
+description = "Serial driver"
+files = [
+    "drivers/serial/ns16550.c",
+    "drivers/serial/serial-uclass.c",
+]
+
+[features.spl]
+category = "load-boot"
+description = "SPL (Secondary Program Loader)"
+files = [
+    "common/spl/",
+]
+
+[features.tests]
+category = "other"
+description = "Tests"
+files = [
+    "lib/efi_selftest/",
+    "test/",
+]
+
+[features.text-console-graphical]
+category = "user-interface"
+description = "Text console on graphical display"
+files = []
+
+[features.text-editor]
+category = "user-interface"
+description = "Text editor"
+files = []
+
+[features.text-menu]
+category = "user-interface"
+description = "Text-based menu"
+files = [
+    "common/menu.c",
+]
+
+[features.timer-rtc]
+category = "drivers"
+description = "Timer and RTC drivers"
+files = [
+    "drivers/rtc/mc146818.c",
+    "drivers/rtc/rtc-uclass.c",
+    "drivers/timer/timer-uclass.c",
+    "drivers/timer/tsc_timer.c",
+    "lib/date.c",
+    "lib/rtc-lib.c",
+    "lib/time.c",
+]
+
+[features.truetype-fonts]
+category = "user-interface"
+description = "Antialiased truetype fonts"
+files = []
+
+[features.environment]
+category = "other"
+description = "Environment"
+files = [
+    "env/",
+]
+
+[features.unmatched]
+category = "other"
+description = "Unmatched files"
+files = [
+]
+
+[features.usb-core]
+category = "drivers"
+description = "USB core"
+files = [
+    "common/usb.c",
+    "common/usb_hub.c",
+]
+
+[features.usb-storage]
+category = "storage"
+description = "USB devices (host) storage"
+files = [
+    "common/usb_storage.c",
+]
+
+[features.utility-lib]
+category = "other"
+description = "Utility library functions"
+files = [
+    "lib/abuf.c",
+    "lib/alist.c",
+    "lib/charset.c",
+    "lib/ctype.c",
+    "lib/display_options.c",
+    "lib/div64.c",
+    "lib/errno.c",
+    "lib/hang.c",
+    "lib/hexdump.c",
+    "lib/ldiv.c",
+    "lib/linux_compat.c",
+    "lib/linux_string.c",
+    "lib/list_sort.c",
+    "lib/membuf.c",
+    "lib/panic.c",
+    "lib/qsort.c",
+    "lib/rand.c",
+    "lib/slre.c",
+    "lib/string.c",
+    "lib/strto.c",
+    "lib/vsprintf.c",
+]
+
+[features.vesa]
+category = "user-interface"
+description = "VESA display"
+files = []
+
+[features.virtio]
+category = "drivers"
+description = "Virtio drivers"
+files = [
+    "board/emulation/common/bootcmd.c",
+    "drivers/virtio/",
+]
+
+[features.x86-tables]
+category = "tables"
+description = "x86 ACPI and SMBIOS tables"
+files = [
+    "arch/x86/lib/tables.c",
+    "lib/acpi/",
+    "lib/smbios-parser.c",
+    "lib/tables_csum.c",
+]
+
+[features.xhci-usb-host]
+category = "drivers"
+description = "XHCI / USB host"
+files = [
+    "drivers/usb/host/",
+]