From: Andreas Schwab To: libc-hacker at sourceware dot org Subject: [PATCH] Work around shortest-stem feature in make 3.82+ make 3.82+ no longer selects pattern rules by order, but by shortest stem, so we need to add more rules to make sure we still get the right matches. Andreas. 2010-09-09 Andreas Schwab * Makeconfig (sysd-rules-patterns): Add rtld-%:rtld-%. (sysd-rules-targets): Remove duplicates. * elf/rtld-Rules ($(objpfx)rtld-%.os): Add pattern rules with rtld-%.$o dependency. 2010-09-06 Andreas Schwab * manual/Makefile: Don't mix pattern rules with normal rules. diff --git a/Makeconfig b/Makeconfig index 9778998..807c1d1 100644 --- a/Makeconfig +++ b/Makeconfig @@ -966,7 +966,7 @@ endif # emitted into sysd-rules. A sysdeps Makeconfig fragment can # add its own special object file prefix to this list with e.g. foo-%:% # to have foo-*.? compiled from *.? using $(foo-CPPFLAGS). -sysd-rules-patterns := %:% rtld-%:% m_%:s_% +sysd-rules-patterns := %:% rtld-%:rtld-% rtld-%:% m_%:s_% # Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here. sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig)) @@ -975,8 +975,8 @@ include $(sysdep-makeconfigs) endif # Compute just the target patterns. Makeconfig has set sysd-rules-patterns. -sysd-rules-targets := $(foreach p,$(sysd-rules-patterns),\ - $(firstword $(subst :, ,$p))) +sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\ + $(firstword $(subst :, ,$p)))) endif # Makeconfig not yet included diff --git a/elf/rtld-Rules b/elf/rtld-Rules index 9f31a56..fc225f2 100644 --- a/elf/rtld-Rules +++ b/elf/rtld-Rules @@ -93,6 +93,12 @@ else # These are the basic compilation rules corresponding to the Makerules ones. # The sysd-rules generated makefile already defines pattern rules for rtld-% # targets built from sysdeps source files. +$(objpfx)rtld-%.os: rtld-%.S $(before-compile) + $(compile-command.S) $(rtld-CPPFLAGS) +$(objpfx)rtld-%.os: rtld-%.s $(before-compile) + $(compile-command.s) $(rtld-CPPFLAGS) +$(objpfx)rtld-%.os: rtld-%.c $(before-compile) + $(compile-command.c) $(rtld-CPPFLAGS) $(objpfx)rtld-%.os: %.S $(before-compile) $(compile-command.S) $(rtld-CPPFLAGS) $(objpfx)rtld-%.os: %.s $(before-compile) @@ -101,6 +107,9 @@ $(objpfx)rtld-%.os: %.c $(before-compile) $(compile-command.c) $(rtld-CPPFLAGS) # The rules for generated source files. +$(objpfx)rtld-%.os: $(objpfx)rtld-%.S $(before-compile); $(compile-command.S) +$(objpfx)rtld-%.os: $(objpfx)rtld-%.s $(before-compile); $(compile-command.s) +$(objpfx)rtld-%.os: $(objpfx)rtld-%.c $(before-compile); $(compile-command.c) $(objpfx)rtld-%.os: $(objpfx)%.S $(before-compile); $(compile-command.S) $(objpfx)rtld-%.os: $(objpfx)%.s $(before-compile); $(compile-command.s) $(objpfx)rtld-%.os: $(objpfx)%.c $(before-compile); $(compile-command.c) -- 1.7.2.2 diff --git a/manual/Makefile b/manual/Makefile index c5866eb..b1f5fa7 100644 --- a/manual/Makefile +++ b/manual/Makefile @@ -232,7 +232,10 @@ ifdef objpfx .PHONY: stubs stubs: $(objpfx)stubs endif -$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%: +$(objpfx)stubs ../po/manual.pot: + $(make-target-directory) + touch $@ +$(objpfx)stamp%: $(make-target-directory) touch $@