xref: /openbsd/regress/lib/libm/msun/Makefile (revision 76d0caae)
1#	$OpenBSD: Makefile,v 1.6 2021/11/11 16:01:38 mbuhl Exp $
2
3# Copyright (c) 2021 Moritz Buhl <mbuhl@openbsd.org>
4#
5# Permission to use, copy, modify, and distribute this software for any
6# purpose with or without fee is hereby granted, provided that the above
7# copyright notice and this permission notice appear in all copies.
8#
9# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
17# Each test program in PROGS may define several numbered subtests.
18# In a first step compile all programs and extract their parameters.
19# For each PROG define new regression subtests based on the test number.
20
21.if defined(NUMBERS)
22REGRESS_TARGETS =	${NUMBERS:C/(.*)/run-${PROG}-\1 cleanup-${PROG}-\1/}
23.else
24REGRESS_TARGETS =	${PROGS:S/^/run-/}
25.endif
26
27PROGS =
28PROGS+= cexp_test
29PROGS+= conj_test
30PROGS+= csqrt_test
31PROGS+= ctrig_test
32PROGS+= exponential_test
33PROGS+= fenv_test
34PROGS+= fma_test
35PROGS+= fmaxmin_test
36PROGS+= ilogb_test
37PROGS+= invctrig_test
38PROGS+= invtrig_test
39PROGS+= logarithm_test
40PROGS+= lrint_test
41PROGS+= lround_test
42PROGS+= nan_test
43PROGS+= nearbyint_test
44PROGS+= next_test
45PROGS+= rem_test
46PROGS+= trig_test
47
48# failing tests
49FAILING = run-cexp_test-{2,3,4} run-csqrt_test-{1,2,3} \
50	run-ctrig_test-{2,3,4,6} run-fma_test-7 \
51	run-invctrig_test-{1,2,3,4} run-invtrig_test-{1,2,3,5,6} \
52	run-logarithm_test-1 run-lround_test-1 run-nan_test-1 \
53	run-nearbyint_test-1 run-next_test-5 run-rem_test-3
54
55. if ${MACHINE} == amd64
56FAILING+=	run-cexp_test-{1,7}
57FAILING+=	run-ctrig_test-1
58FAILING+=	run-exponential_test-1
59FAILING+=	run-invtrig_test-7
60FAILING+=	run-next_test-{1,2,4}
61FAILING+=	run-trig_test-3
62. elif ${MACHINE} == arm64
63FAILING+=	run-cexp_test-{1,7}
64FAILING+=	run-ctrig_test-{1,5}
65FAILING+=	run-exponential_test-1
66FAILING+=	run-fma_test-{1,2,4,5,6,7}
67FAILING+=	run-invtrig_test-7
68FAILING+=	run-logarithm_test-5
69FAILING+=	run-lrint_test-1
70FAILING+=	run-next_test-{1,2,4}
71FAILING+=	run-rem_test-{1,2}
72FAILING+=	run-trig_test-{1,2}
73. elif ${MACHINE} == i386
74FAILING+=	run-cexp_test-{1,7}
75FAILING+=	run-ctrig_test-{1,5}
76FAILING+=	run-fma_test-{1,6}
77FAILING+=	run-invtrig_test-4
78FAILING+=	run-logarithm_test-3
79FAILING+=	run-lrint_test-1
80FAILING+=	run-next_test-{1,2,4}
81. elif ${MACHINE} == powerpc64
82FAILING+=	run-cexp_test-7
83FAILING+=	run-ctrig_test-{1,5}
84FAILING+=	run-exponential_test-1
85FAILING+=	run-invtrig_test-7
86FAILING+=	run-trig_test-2
87. elif ${MACHINE} == sparc64
88FAILING+=	run-ctrig_test-5
89FAILING+=	run-exponential_test-1
90FAILING+=	run-fma_test-{1,2,4,5,6}
91FAILING+=	run-invtrig_test-{4,7}
92FAILING+=	run-logarithm_test-5
93FAILING+=	run-lrint_test-1
94FAILING+=	run-next_test-{1,2,4,5}
95FAILING+=	run-rem_test-{1,2}
96FAILING+=	run-trig_test-{1,2}
97. endif
98
99REGRESS_EXPECTED_FAILURES!= echo ${FAILING}
100
101LDADD=	-lm
102DPADD=	${LIBM}
103CFLAGS+=	-fno-builtin
104
105.for t in ${TESTS}
106REGRESS_TARGETS+=	run-$t
107run-$t: $t
108	./$t
109.endfor
110
111. for p in ${PROGS}
112SRCS_$p =		$p.c atf-c.c
113. endfor
114
115SRCS_rem_test += fls.c
116
117.for p in ${PROGS}
118run-$p: $p
119	ulimit -c unlimited && \
120	ntests="`./$p -n`" && \
121	echo "1..$$ntests" && \
122	tnumbers="`jot -ns' ' - 1 $$ntests`" && \
123	${.MAKE} -C ${.CURDIR} PROG=$p NUMBERS="$$tnumbers" regress
124.endfor
125
126.if defined(NUMBERS)
127CUR_USER !=		id -g
128
129. for n in ${NUMBERS}
130DESCR_$n !=		eval `./${PROG} -i $n` && echo $$DESCR
131REQ_USER_$n !=		eval `./${PROG} -i $n` && echo $$REQ_USER
132
133.  if ${REQ_USER_$n} == "root"
134REGRESS_ROOT_TARGETS +=	run-${PROG}-$n
135.  endif
136
137run-${PROG}-$n:
138	@echo "$n ${DESCR_$n}"
139.  if ${REQ_USER_$n} == "root"
140	${SUDO} ./${PROG} -r $n
141.  elif ${REQ_USER_$n} == "unprivileged" && ${CUR_USER} == 0
142	${SUDO} su ${BUILDUSER} -c exec ./${PROG} -r $n
143.  elif ${REQ_USER_$n} == "unprivileged" || ${REQ_USER_$n} == ""
144	./${PROG} -r $n
145.  else
146	# bad REQ_USER: ${REQ_USER_$n}
147	false
148.  endif
149
150cleanup-${PROG}-$n:
151	-./${PROG} -c $n
152
153. endfor
154.endif
155
156.include <bsd.regress.mk>
157