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