1# $NetBSD: suff-rebuild.mk,v 1.6 2020/11/21 12:01:16 rillig Exp $ 2# 3# Demonstrates what happens to transformation rules (called inference rules 4# by POSIX) when all suffixes are deleted. 5 6all: suff-rebuild-example 7 8.MAKEFLAGS: -dpst 9 10.SUFFIXES: 11 12.SUFFIXES: .a .b .c 13 14suff-rebuild-example.a: 15 : Making ${.TARGET} out of nothing. 16 17.a.b: 18 : Making ${.TARGET} from ${.IMPSRC}. 19.b.c: 20 : Making ${.TARGET} from ${.IMPSRC}. 21.c: 22 : Making ${.TARGET} from ${.IMPSRC}. 23 24# XXX: At a quick glance, the code in SuffUpdateTarget looks as if it were 25# possible to delete the suffixes in the middle of the makefile, add back 26# the suffixes from before, and have the transformation rules preserved. 27# 28# As of 2020-09-25, uncommenting the following line results in the error 29# message "don't know how to make suff-rebuild-example" though. 30# 31# If this is a bug, the actual cause is probably that when a suffix 32# transformation rule is defined, it is not added to the global list of 33# targets, see Suff_EndTransform. Later, UpdateTargets iterates over exactly 34# this global list of targets though. 35# 36# If UpdateTargets were to iterate over 'transforms' as well, it still 37# wouldn't work because the condition 'ptr == target->name' skips these 38# transformation rules. 39 40#.SUFFIXES: 41 42# Add the suffixes back. It should not matter that the order of the suffixes 43# is different from before. 44.SUFFIXES: .c .b .a 45