1 1.3 rillig # $NetBSD: suff.mk,v 1.3 2025/01/14 21:39:25 rillig Exp $ 2 1.1 rillig # 3 1.1 rillig # Demonstrate suffix rules and dependency resolution. 4 1.1 rillig 5 1.2 rillig 6 1.2 rillig # Circumvent the file system cache. 7 1.2 rillig .if !make(init) && !make(step*) 8 1.2 rillig all: 9 1.2 rillig @${MAKE} -f ${MAKEFILE} init 10 1.2 rillig @${MAKE} -f ${MAKEFILE} step1 11 1.2 rillig .endif 12 1.2 rillig 13 1.2 rillig 14 1.2 rillig .if make(init) 15 1.2 rillig init: 16 1.2 rillig . if ${.PARSEDIR:tA} != ${.CURDIR:tA} 17 1.2 rillig ${:U}!= cd ${MAKEFILE:H} && cp a*.mk ${.CURDIR} 18 1.2 rillig . endif 19 1.2 rillig .endif 20 1.2 rillig 21 1.2 rillig 22 1.2 rillig .if make(step1) 23 1.2 rillig step1: .PHONY edge-case.to everything 24 1.1 rillig 25 1.1 rillig .MAKEFLAGS: -dsv 26 1.1 rillig 27 1.1 rillig .SUFFIXES: .from .to 28 1.1 rillig 29 1.1 rillig .from.to: 30 1.1 rillig : Making ${.TARGET} from ${.ALLSRC}. 31 1.1 rillig 32 1.1 rillig # When making this target, ${.ARCHIVE} is undefined, but there's no warning. 33 1.3 rillig # expect: Var_Parse: ${.ARCHIVE}.additional (eval) 34 1.1 rillig edge-case.to: ${.PREFIX}${.ARCHIVE}.additional 35 1.1 rillig 36 1.1 rillig edge-case.from edge-case.additional: 37 1.1 rillig : Making ${.TARGET} out of nothing. 38 1.1 rillig 39 1.1 rillig everything: .PHONY a*.mk 40 1.1 rillig : Making ${.TARGET} from ${.ALLSRC}. 41 1.2 rillig .endif 42