# SPDX-License-Identifier: LicenseRef-Starship-1.0 # Copyright (c) 2023-2026 Robert A. James # # The kernel host tests (docs/v4.0.0/plans/2026-11-12-kernel-host-tests.md): each test_.c # built on the host with the kernel source file(s) it tests and the fakes, nothing else of the # kernel, and run. # # make -C kernel/tests test build and run them all; fails if any check fails # make -C kernel/tests run-test_gpt # # A test's sources are SRC_; give another on the command line to run the same test against # it (how a test is seen to fail against the code before a fix): # make -C kernel/tests run-test_gpt SRC_test_gpt=/path/to/old/gpt.c HERE := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) ROOT := $(abspath $(HERE)/../..) BUILD := $(ROOT)/build/kernel-tests CC ?= cc CFLAGS := -std=c99 -Wall -Wextra -Werror -O2 -g -I$(HERE) -I$(ROOT)/kernel/include \ -I$(ROOT)/kernel/include/starkernel -I$(ROOT)/v3/include TESTS := test_gpt SRC_test_gpt := $(ROOT)/kernel/src/gpt.c define TEST_RULE $(BUILD)/$(1): $(HERE)/$(1).c $(HERE)/fakes.c $(HERE)/fakes.h $(HERE)/harness.h $$(SRC_$(1)) @mkdir -p $(BUILD) $(CC) $(CFLAGS) $(HERE)/$(1).c $(HERE)/fakes.c $$(SRC_$(1)) -o $$@ .PHONY: run-$(1) run-$(1): $(BUILD)/$(1) @echo "$(1)" @$(BUILD)/$(1) endef $(foreach t,$(TESTS),$(eval $(call TEST_RULE,$(t)))) .PHONY: test test: $(addprefix run-,$(TESTS)) @echo "all kernel host tests passed"