2f2a5ecdf8
o ignore '.POSIX:' if not in first non-comment line of Makefile as specified by POSIX. add unit-tests for above. Merge commit '92bfae0e6bd53a7a0d6fe55e70a916d86cf26e8b'
116 lines
2.9 KiB
Makefile
116 lines
2.9 KiB
Makefile
# $NetBSD: depsrc-usebefore.mk,v 1.9 2022/04/18 14:41:42 rillig Exp $
|
|
#
|
|
# Tests for the special source .USEBEFORE in dependency declarations,
|
|
# which allows to prepend common commands to other targets.
|
|
#
|
|
# If a target depends on several .USE or .USEBEFORE nodes, the commands get
|
|
# appended or prepended in declaration order. For .USE nodes, this is the
|
|
# expected order, for .USEBEFORE nodes the order is somewhat reversed, and for
|
|
# .USE or .USEBEFORE nodes that depend on other .USE or .USEBEFORE nodes, it
|
|
# gets even more complicated.
|
|
#
|
|
# See also:
|
|
# .USE
|
|
# depsrc-use.mk
|
|
|
|
# Before make.h 1.280 from 2021-12-28, a .USEBEFORE target was accidentally
|
|
# regarded as a candidate for the main target. On the other hand, a .USE
|
|
# target was not.
|
|
not-a-main-candidate: .USEBEFORE
|
|
|
|
all:
|
|
@${MAKE} -r -f ${MAKEFILE} ordering
|
|
@${MAKE} -r -f ${MAKEFILE} directly
|
|
|
|
ordering: before-1 before-2 after-1 after-2
|
|
|
|
before-1: .USEBEFORE before-1-before-1 before-1-before-2 before-1-after-1 before-1-after-2
|
|
@echo before-1 1
|
|
@echo before-1 2
|
|
|
|
before-1-before-1: .USEBEFORE
|
|
@echo before-1-before-1 1
|
|
@echo before-1-before-1 2
|
|
|
|
before-1-before-2: .USEBEFORE
|
|
@echo before-1-before-2 1
|
|
@echo before-1-before-2 2
|
|
|
|
before-1-after-1: .USE
|
|
@echo before-1-after-1 1
|
|
@echo before-1-after-1 2
|
|
|
|
before-1-after-2: .USE
|
|
@echo before-1-after-2 1
|
|
@echo before-1-after-2 2
|
|
|
|
before-2: .USEBEFORE before-2-before-1 before-2-before-2 before-2-after-1 before-2-after-2
|
|
@echo before-2 1
|
|
@echo before-2 2
|
|
|
|
before-2-before-1: .USEBEFORE
|
|
@echo before-2-before-1 1
|
|
@echo before-2-before-1 2
|
|
|
|
before-2-before-2: .USEBEFORE
|
|
@echo before-2-before-2 1
|
|
@echo before-2-before-2 2
|
|
|
|
before-2-after-1: .USE
|
|
@echo before-2-after-1 1
|
|
@echo before-2-after-1 2
|
|
|
|
before-2-after-2: .USE
|
|
@echo before-2-after-2 1
|
|
@echo before-2-after-2 2
|
|
|
|
after-1: .USE after-1-before-1 after-1-before-2 after-1-after-1 after-1-after-2
|
|
@echo after-1 1
|
|
@echo after-1 2
|
|
|
|
after-1-before-1: .USEBEFORE
|
|
@echo after-1-before-1 1
|
|
@echo after-1-before-1 2
|
|
|
|
after-1-before-2: .USEBEFORE
|
|
@echo after-1-before-2 1
|
|
@echo after-1-before-2 2
|
|
|
|
after-1-after-1: .USE
|
|
@echo after-1-after-1 1
|
|
@echo after-1-after-1 2
|
|
|
|
after-1-after-2: .USE
|
|
@echo after-1-after-2 1
|
|
@echo after-1-after-2 2
|
|
|
|
after-2: .USE after-2-before-1 after-2-before-2 after-2-after-1 after-2-after-2
|
|
@echo after-2 1
|
|
@echo after-2 2
|
|
|
|
after-2-before-1: .USEBEFORE
|
|
@echo after-2-before-1 1
|
|
@echo after-2-before-1 2
|
|
|
|
after-2-before-2: .USEBEFORE
|
|
@echo after-2-before-2 1
|
|
@echo after-2-before-2 2
|
|
|
|
after-2-after-1: .USE
|
|
@echo after-2-after-1 1
|
|
@echo after-2-after-1 2
|
|
|
|
after-2-after-2: .USE
|
|
@echo after-2-after-2 1
|
|
@echo after-2-after-2 2
|
|
|
|
# It is possible but uncommon to have a .USEBEFORE target with no commands.
|
|
# This may happen as the result of expanding a .for loop.
|
|
empty: .USEBEFORE
|
|
|
|
# It is technically possible to directly make a .USEBEFORE target, but it
|
|
# doesn't make sense since GNode_IsOODate considers such a target to always be
|
|
# up to date.
|
|
directly: .USEBEFORE
|
|
@echo directly
|