From: Denis Mukhin <[email protected]> Add new make fragment for unit tests with auto-generated test harness dependencies.
Signed-off-by: Denis Mukhin <[email protected]> --- tools/Tests.mk | 34 ++++++++++++++++++++++++++++++++++ tools/tests/domid/Makefile | 30 +----------------------------- 2 files changed, 35 insertions(+), 29 deletions(-) create mode 100644 tools/Tests.mk diff --git a/tools/Tests.mk b/tools/Tests.mk new file mode 100644 index 000000000000..fe941209db0f --- /dev/null +++ b/tools/Tests.mk @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# Unit test fragment. +# +# Copyright 2025 Ford Motor Company + +define list-c-headers +$(shell sed -n \ + 's/^[ \t]*# *include[ \t]*[<"]\([^">]*\)[">].*/\1/p' $(1) 2>/dev/null) +endef + +# $1 target +# $2 list of test harnesses +define emit-harness-nested-rule +$(1): $(2) + mkdir -p $$(@D); \ + for i in $$<; do ln -sf $$$$i $$@; done + +endef + +define emit-harness-rules +$(foreach x,$(2),$(call \ + emit-harness-nested-rule,$(CURDIR)/generated/$(x),$(CURDIR)/harness.h)) +$(1:.c=.o): $(addprefix $(CURDIR)/generated/,$(2)) +endef + +define emit-harness-deps +$(if $(strip $(2)),$(call emit-harness-rules,$1,$2),) +endef + +define vpath-with-harness-deps +vpath $(1) $(2) +$(call emit-harness-deps,$(1),$(call list-c-headers,$(2)$(1))) +endef diff --git a/tools/tests/domid/Makefile b/tools/tests/domid/Makefile index 1a2129d20655..51a465ce6318 100644 --- a/tools/tests/domid/Makefile +++ b/tools/tests/domid/Makefile @@ -6,38 +6,10 @@ XEN_ROOT=$(CURDIR)/../../.. include $(XEN_ROOT)/tools/Rules.mk +include $(XEN_ROOT)/tools/Tests.mk TESTS := test-domid -define list-c-headers -$(shell sed -n \ - 's/^[ \t]*# *include[ \t]*[<"]\([^">]*\)[">].*/\1/p' $(1) 2>/dev/null) -endef - -# $1 target -# $2 list of test harnesses -define emit-harness-nested-rule -$(1): $(2) - mkdir -p $$(@D); \ - for i in $$<; do ln -sf $$$$i $$@; done - -endef - -define emit-harness-rules -$(foreach x,$(2),$(call \ - emit-harness-nested-rule,$(CURDIR)/generated/$(x),$(CURDIR)/harness.h)) -$(1:.c=.o): $(addprefix $(CURDIR)/generated/,$(2)) -endef - -define emit-harness-deps -$(if $(strip $(2)),$(call emit-harness-rules,$1,$2),) -endef - -define vpath-with-harness-deps -vpath $(1) $(2) -$(call emit-harness-deps,$(1),$(call list-c-headers,$(2)$(1))) -endef - .PHONY: all all: $(TESTS) -- 2.52.0
