From: Denis Mukhin <dmukhin@ford.com>
Add new make fragment for unit tests with auto-generated test harness
dependencies.
Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
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
On 04.12.2025 13:37, dmukhin@xen.org wrote: > From: Denis Mukhin <dmukhin@ford.com> > > Add new make fragment for unit tests with auto-generated test harness > dependencies. Why is this (going to be) useful? And what exactly does "auto-generated" refer to here? Not ... > --- /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 ... the use of this construct, I suppose? When we talk of auto-generated dependencies, we normally mean what the compiler can be told to produce via -MMD. If you want such, why would you introduce (and now generalize) a fragile, custom alternative? (Fragile because afaict transitively included headers wouldn't be accounted for. Jan
© 2016 - 2025 Red Hat, Inc.