Home | History | Annotate | Line # | Download | only in unit-tests
      1  1.3  rillig # $NetBSD: varname-dot-make-mode.mk,v 1.3 2022/05/07 17:49:47 rillig Exp $
      2  1.1  rillig #
      3  1.2  rillig # Tests for the special .MAKE.MODE variable.
      4  1.1  rillig 
      5  1.3  rillig # TODO: test .MAKE.MODE "meta", or see meta mode tests.
      6  1.3  rillig # TODO: test .MAKE.MODE "compat"
      7  1.1  rillig 
      8  1.3  rillig 
      9  1.3  rillig # See Makefile, POSTPROC for the postprocessing that takes place.
     10  1.3  rillig # See the .rawout file for the raw output before stripping the digits.
     11  1.3  rillig all: .PHONY make-mode-randomize-targets
     12  1.3  rillig 
     13  1.3  rillig 
     14  1.3  rillig # By adding the word "randomize-targets" to the variable .MAKE.MODE, the
     15  1.3  rillig # targets are not made in declaration order, but rather in random order.  This
     16  1.3  rillig # mode helps to find undeclared dependencies between files.
     17  1.3  rillig #
     18  1.3  rillig # History
     19  1.3  rillig #	Added on 2022-05-07.
     20  1.3  rillig #
     21  1.3  rillig # See also
     22  1.3  rillig #	https://gnats.netbsd.org/45226
     23  1.3  rillig make-mode-randomize-targets: .PHONY
     24  1.3  rillig 	@echo "randomize compat mode:"
     25  1.3  rillig 	@${MAKE} -r -f ${MAKEFILE} randomize-targets
     26  1.3  rillig 
     27  1.3  rillig 	@echo "randomize jobs mode (-j1):"
     28  1.3  rillig 	@${MAKE} -r -f ${MAKEFILE} -j1 randomize-targets
     29  1.3  rillig 
     30  1.3  rillig 	@echo "randomize jobs mode (-j5):"
     31  1.3  rillig 	@${MAKE} -r -f ${MAKEFILE} -j5 randomize-targets | grep '^:'
     32  1.3  rillig 
     33  1.3  rillig .if make(randomize-targets)
     34  1.3  rillig randomize-targets: .WAIT a1 a2 a3 .WAIT b1 b2 b3 .WAIT c1 c2 c3 .WAIT
     35  1.3  rillig a1 a2 a3 b1 b2 b3 c1 c2 c3:
     36  1.3  rillig 	: Making ${.TARGET}
     37  1.3  rillig 
     38  1.3  rillig # .MAKE.MODE is evaluated after parsing all files, so it suffices to switch
     39  1.3  rillig # the mode after defining the targets.
     40  1.3  rillig .MAKE.MODE+=	randomize-targets
     41  1.3  rillig .endif
     42