Home | History | Annotate | Line # | Download | only in unit-tests
      1  1.8  rillig # $NetBSD: deptgt-begin.mk,v 1.8 2025/06/30 21:44:39 rillig Exp $
      2  1.1  rillig #
      3  1.3  rillig # Tests for the special target .BEGIN in dependency declarations,
      4  1.3  rillig # which is a container for commands that are run before any other
      5  1.3  rillig # commands from the shell lines.
      6  1.1  rillig 
      7  1.3  rillig .BEGIN:
      8  1.3  rillig 	: $@
      9  1.1  rillig 
     10  1.4  rillig # To register a custom action to be run at the beginning, the simplest way is
     11  1.4  rillig # to directly place some commands on the '.BEGIN' target.  This doesn't scale
     12  1.4  rillig # though, since the ':' dependency operator prevents that any other place may
     13  1.4  rillig # add its commands after this.
     14  1.4  rillig #
     15  1.4  rillig # There are several ways to resolve this situation, which are detailed below.
     16  1.8  rillig # expect+3: warning: duplicate script for target ".BEGIN" ignored
     17  1.8  rillig # expect-9: warning: using previous script for ".BEGIN" defined here
     18  1.4  rillig .BEGIN:
     19  1.4  rillig 	: Making another $@.
     20  1.4  rillig 
     21  1.4  rillig # One way to run commands at the beginning is to define a custom target and
     22  1.4  rillig # make the .BEGIN depend on that target.  This way, the commands from the
     23  1.4  rillig # custom target are run even before the .BEGIN target.
     24  1.4  rillig .BEGIN: before-begin
     25  1.4  rillig before-begin: .PHONY .NOTMAIN
     26  1.4  rillig 	: Making $@ before .BEGIN.
     27  1.4  rillig 
     28  1.4  rillig # Another way is to define a custom target and make that a .USE dependency.
     29  1.5  rillig # For the .BEGIN target, .USE dependencies do not work though, since in
     30  1.6  rillig # Compat_MakeAll, the .USE and .USEBEFORE nodes are expanded right after the
     31  1.6  rillig # .BEGIN target has been made, which is too late.
     32  1.4  rillig .BEGIN: use
     33  1.4  rillig use: .USE .NOTMAIN
     34  1.4  rillig 	: Making $@ from a .USE dependency.
     35  1.4  rillig 
     36  1.4  rillig # Same as with .USE, but run the commands before the main commands from the
     37  1.4  rillig # .BEGIN target.
     38  1.4  rillig #
     39  1.5  rillig # For the .BEGIN target, .USEBEFORE dependencies do not work though, since in
     40  1.6  rillig # Compat_MakeAll, the .USE and .USEBEFORE nodes are expanded right after the
     41  1.6  rillig # .BEGIN target has been made, which is too late.
     42  1.4  rillig .BEGIN: use-before
     43  1.4  rillig use-before: .USEBEFORE .NOTMAIN
     44  1.4  rillig 	: Making $@ from a .USEBEFORE dependency.
     45  1.4  rillig 
     46  1.1  rillig all:
     47  1.3  rillig 	: $@
     48  1.3  rillig 
     49  1.3  rillig _!=	echo : parse time 1>&2
     50