1# $NetBSD: deptgt.mk,v 1.9 2020/11/15 11:57:00 rillig Exp $ 2# 3# Tests for special targets like .BEGIN or .SUFFIXES in dependency 4# declarations. 5 6# TODO: Implementation 7 8# Just in case anyone tries to compile several special targets in a single 9# dependency line: That doesn't work, and make immediately rejects it. 10.SUFFIXES .PHONY: .c.o 11 12# The following lines demonstrate how 'targets' is set and reset during 13# parsing of dependencies. To see it in action, set breakpoints in: 14# 15# ParseDoDependency at the beginning 16# FinishDependencyGroup at "targets = NULL" 17# Parse_File at "Lst_Free(targets)" 18# Parse_File at "targets = Lst_New()" 19# ParseLine_ShellCommand at "targets == NULL" 20# 21# Keywords: 22# parse.c:targets 23 24target1 target2: sources # targets := [target1, target2] 25 : command1 # targets == [target1, target2] 26 : command2 # targets == [target1, target2] 27VAR=value # targets := NULL 28 : command3 # parse error, since targets == NULL 29 30# In a dependency declaration, the list of targets can be empty. 31# It doesn't matter whether the empty string is generated by a variable 32# expression or whether it is just omitted. 33.MAKEFLAGS: -dp 34${:U}: empty-source 35 : command for empty targets list 36: empty-source 37 : command for empty targets list 38.MAKEFLAGS: -d0 39 40all: 41 @:; 42