From b4b5c4503ace33a9ae972ac6fef3dbec7130b489 Mon Sep 17 00:00:00 2001
From: "Tobias S. Josefowitz" <tobij@tobij.de>
Date: Tue, 12 Jan 2021 23:45:27 +0100
Subject: [PATCH] [build] Use pattern rules for rules with additional deps

Suffix rules (according to GNU make at least) cannot have dependencies
of their own, old versions of GNU make ignored such dependencies,
current versions of GNU make warn about them (and ignore them), and
future versions of GNU make are announced to treat them as non-suffix
rules, i.e.

    .c.o: foo.h

would describe a rule to build .c.o from foo.h.

GNU make claims that pattern rules are what needs to be used in case
such rules have dependencies, so we shall give that a try.
---
 src/Makefile.in                       | 6 +++---
 src/modules/common_module_makefile.in | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/Makefile.in b/src/Makefile.in
index 73a9dfd85c..8517f6bed7 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -468,13 +468,13 @@ undump_modules: delete_dumped_modules
 	-rm dumpversion 2>/dev/null
 
 .SUFFIXES:
-.SUFFIXES: .c .h .o .m .mmod .cmod .symlist .pp .pph .protos .h_src .wxs .wixobj .msi .msm
+.SUFFIXES: .c .h .o .m .mmod .cmod .pp .pph .h_src .wxs .wixobj .msi .msm
 
 .c.pp:
 	$(CPP) $(PREFLAGS) -DPMOD_EXPORT=PMOD_EXPORT \
 	  -DPMOD_PROTO=PMOD_PROTO "$<" >"$@"
 
-.c.protos: precompile.sh-stamp
+%.protos: %.c precompile.sh-stamp
 	./precompile.sh --cache fake_dynamic_load.pike >"$@" --cpp --protos \
 	  $(CPP) $(PREFLAGS) -DPMOD_EXPORT=PMOD_EXPORT \
 	    -DPMOD_PROTO=PMOD_PROTO -DPIKE_PRECOMPILER=1 "$<" || \
@@ -520,7 +520,7 @@ $(PMOD_TARGETS): precompile.sh-stamp $(TMP_BINDIR)/precompile.pike $(PIKE_SRC_DI
 	./precompile.sh --cache precompile.pike $(PRECOMPILER_ARGS) >"$@" "$<" || { rm "$@"; exit 1; }
 
 # The same applies to this.
-.symlist.c: precompile.sh-stamp $(SRCDIR)/mklibpike.pike
+%.c: %.symlist precompile.sh-stamp $(SRCDIR)/mklibpike.pike
 	./precompile.sh --cache $(SRCDIR)/mklibpike.pike -I. -I "$(SRCDIR)" -S "$<" -o "$@" || { rm "$@"; exit 1; }
 
 # This rule is used for some header files that are generated from the
diff --git a/src/modules/common_module_makefile.in b/src/modules/common_module_makefile.in
index e6a5cff162..d3d805ff8a 100644
--- a/src/modules/common_module_makefile.in
+++ b/src/modules/common_module_makefile.in
@@ -39,7 +39,7 @@ $(MODULE_ARCHIVES) ThisIsAPhonyTargetBlaBlaBla: force
 	) || exit $$?
 
 .SUFFIXES:
-.SUFFIXES: .c .o .cmod .protos .m .mmod .cc .ccmod
+.SUFFIXES: .c .o .cmod .m .mmod .cc .ccmod
 
 $(PMOD_TARGETS): $(wildcard $(BUILD_BASE)/precompile.sh-stamp) $(TMP_BINDIR)/precompile.pike $(wildcard $(PIKE_SRC_DIR)/../lib/modules/Tools.pmod/Standalone.pmod/precompile.pike) Makefile.in
 
@@ -65,7 +65,7 @@ $(PMOD_TARGETS): $(wildcard $(BUILD_BASE)/precompile.sh-stamp) $(TMP_BINDIR)/pre
 	  exit $$status; \
 	fi
 
-.c.protos: $(BUILD_BASE)/precompile.sh-stamp
+%.protos: %.c $(BUILD_BASE)/precompile.sh-stamp
 	./precompile.sh --cache fake_dynamic_load.pike >"$@" --cpp --protos \
 	  $(CPP) $(PREFLAGS) -DPMOD_EXPORT=PMOD_EXPORT \
 	    -DPMOD_PROTO=PMOD_PROTO -DPIKE_PRECOMPILER=1 "$<" || \
@@ -96,7 +96,7 @@ $(PMOD_TARGETS): $(wildcard $(BUILD_BASE)/precompile.sh-stamp) $(TMP_BINDIR)/pre
 	  exit $$status; \
 	fi
 
-.cc.protos: $(BUILD_BASE)/precompile.sh-stamp
+%.protos: %.cc $(BUILD_BASE)/precompile.sh-stamp
 	./precompile.sh --cache fake_dynamic_load.pike >"$@" --cpp --protos \
 	  $(CXXCPP) $(PREFLAGS) -DPMOD_EXPORT=PMOD_EXPORT \
 	    -DPMOD_PROTO=PMOD_PROTO -DPIKE_PRECOMPILER=1 "$<" || \
-- 
GitLab