Home | History | Annotate | Line # | Download | only in unit-tests
opt-jobs.mk revision 1.3
      1  1.3  rillig # $NetBSD: opt-jobs.mk,v 1.3 2023/09/10 11:00:55 rillig Exp $
      2  1.1  rillig #
      3  1.3  rillig # Tests for the -j command line option, which creates the targets in parallel.
      4  1.1  rillig 
      5  1.1  rillig 
      6  1.3  rillig # The option '-j <integer>' specifies the number of targets that can be made
      7  1.3  rillig # in parallel.
      8  1.3  rillig ARGS=		0 1 2 8 08 0x10 -5 1000
      9  1.3  rillig EXPECT.0=	illegal argument to -j -- must be positive integer! exit 2
     10  1.3  rillig EXPECT.1=	1
     11  1.3  rillig EXPECT.2=	2
     12  1.3  rillig EXPECT.8=	8
     13  1.3  rillig EXPECT.08=	illegal argument to -j -- must be positive integer! exit 2
     14  1.3  rillig EXPECT.0x10=	16
     15  1.3  rillig EXPECT.-5=	illegal argument to -j -- must be positive integer! exit 2
     16  1.3  rillig EXPECT.1000=	1000
     17  1.3  rillig 
     18  1.3  rillig .for arg in ${ARGS}
     19  1.3  rillig OUTPUT!=	${MAKE} -r -f /dev/null -j ${arg} -v .MAKE.JOBS 2>&1 || echo exit $$?
     20  1.3  rillig .  if ${OUTPUT:[2..-1]} != ${EXPECT.${arg}}
     21  1.3  rillig .      warning ${arg}:${.newline}    have: ${OUTPUT:[2..-1]}${.newline}    want: ${EXPECT.${arg}}
     22  1.3  rillig .  endif
     23  1.3  rillig .endfor
     24  1.3  rillig 
     25  1.3  rillig 
     26  1.3  rillig # The options '-j <float>' and '-j <integer>C' multiply the given number with
     27  1.3  rillig # the number of available CPUs.
     28  1.3  rillig ARGS=		0.0 .5 .5C 1C 1CPUs 1.2 .5e1C 07.5C 08.5C
     29  1.3  rillig EXPECT.0.0=	illegal argument to -j -- must be positive integer! exit 2
     30  1.3  rillig EXPECT..5=	<integer>		# rounded up to 1 if necessary
     31  1.3  rillig EXPECT..5C=	<integer>		# rounded up to 1 if necessary
     32  1.3  rillig EXPECT.1C=	<integer>
     33  1.3  rillig EXPECT.1CPUs=	<integer>
     34  1.3  rillig EXPECT.1.2=	<integer>
     35  1.3  rillig EXPECT..5e1C=	<integer>		# unlikely to occur in practice
     36  1.3  rillig EXPECT.07.5C=	<integer>
     37  1.3  rillig EXPECT.08.5C=	illegal argument to -j -- must be positive integer! exit 2
     38  1.3  rillig 
     39  1.3  rillig .if ${.MAKE.JOBS.C}
     40  1.3  rillig .  for arg in ${ARGS}
     41  1.3  rillig OUTPUT!=	${MAKE} -r -f /dev/null -j ${arg} -v .MAKE.JOBS 2>&1 || echo exit $$?
     42  1.3  rillig .    if ${OUTPUT:C,^[0-9]+$,numeric,W} == numeric
     43  1.3  rillig OUTPUT=		<integer>
     44  1.3  rillig .    endif
     45  1.3  rillig .    if ${OUTPUT:[2..-1]} != ${EXPECT.${arg}}
     46  1.3  rillig .      warning ${arg}:${.newline}    have: ${OUTPUT:[2..-1]}${.newline}    want: ${EXPECT.${arg}}
     47  1.3  rillig .    endif
     48  1.3  rillig .  endfor
     49  1.3  rillig .endif
     50  1.3  rillig 
     51  1.3  rillig all: .PHONY
     52