1# $OpenBSD: Makefile,v 1.16 2024/03/04 19:35:13 miod 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,6} run-fma_test-7 \ 51 run-invctrig_test-{1,2,3,4} run-invtrig_test-{1,2,3,5,6} \ 52 run-lround_test-1 run-nan_test-1 run-next_test-5 run-rem_test-3 53 54. if ${MACHINE} == alpha 55FAILING+= run-conj_test-1 56FAILING+= run-ctrig_test-{4,5} 57FAILING+= run-exponential_test-1 58FAILING+= run-fenv_test-{2,3,4,6,7,8} 59FAILING+= run-fma_test-{1,2,4,5,6} 60FAILING+= run-fmaxmin_test-{7,11} 61FAILING+= run-invtrig_test-{4,7} 62FAILING+= run-lrint_test-1 63FAILING+= run-nearbyint_test-1 64FAILING+= run-next_test-{1,4} 65FAILING+= run-rem_test-1 66FAILING+= run-trig_test-2 67. elif ${MACHINE} == amd64 68FAILING+= run-cexp_test-{1,7} 69FAILING+= run-ctrig_test-{1,4} 70FAILING+= run-exponential_test-1 71FAILING+= run-invtrig_test-7 72FAILING+= run-logarithm_test-1 73FAILING+= run-next_test-{1,2,4} 74. elif ${MACHINE} == arm64 75FAILING+= run-cexp_test-{1,7} 76FAILING+= run-ctrig_test-{1,4,5} 77FAILING+= run-exponential_test-1 78FAILING+= run-fma_test-{1,2,4,5,6,7} 79FAILING+= run-invtrig_test-7 80FAILING+= run-logarithm_test-{1,5} 81FAILING+= run-lrint_test-1 82FAILING+= run-nearbyint_test-1 83FAILING+= run-next_test-{1,2,4} 84FAILING+= run-rem_test-{1,2} 85FAILING+= run-trig_test-1 86. elif ${MACHINE} == armv7 87FAILING+= run-cexp_test-7 88FAILING+= run-ctrig_test-{1,4,5} 89FAILING+= run-exponential_test-1 90FAILING+= run-invtrig_test-7 91FAILING+= run-logarithm_test-1 92FAILING+= run-lrint_test-1 93FAILING+= run-nearbyint_test-1 94FAILING+= run-trig_test-1 95. elif ${MACHINE} == hppa 96FAILING+= run-ctrig_test-{4,5} 97FAILING+= run-exponential_test-1 98FAILING+= run-fmaxmin_test-11 99FAILING+= run-invtrig_test-7 100FAILING+= run-lrint_test-1 101FAILING+= run-next_test-4 102FAILING+= run-trig_test-3 103. elif ${MACHINE} == i386 104FAILING+= run-cexp_test-{1,7} 105FAILING+= run-ctrig_test-{1,4,5} 106FAILING+= run-fma_test-{1,6} 107FAILING+= run-invtrig_test-4 108FAILING+= run-logarithm_test-{1,3} 109FAILING+= run-lrint_test-1 110FAILING+= run-nearbyint_test-1 111FAILING+= run-next_test-{1,2,4} 112. elif ${MACHINE_ARCH} == m88k 113FAILING+= run-cexp_test-7 114FAILING+= run-ctrig_test-{1,4,5} 115FAILING+= run-exponential_test-1 116FAILING+= run-fma_test-{1,3,6} 117FAILING+= run-fmaxmin_test-{1,12} 118FAILING+= run-invtrig_test-7 119FAILING+= run-logarithm_test-{1,3} 120FAILING+= run-lrint_test-1 121FAILING+= run-nearbyint_test-1 122FAILING+= run-next_test-4 123. elif ${MACHINE} == powerpc64 124FAILING+= run-cexp_test-7 125FAILING+= run-ctrig_test-{1,4,5} 126FAILING+= run-exponential_test-1 127FAILING+= run-invtrig_test-7 128FAILING+= run-logarithm_test-1 129. elif ${MACHINE} == macppc 130FAILING+= run-cexp_test-7 131FAILING+= run-ctrig_test-{1,4,5} 132FAILING+= run-exponential_test-1 133FAILING+= run-fenv_test-{7,8} 134FAILING+= run-invtrig_test-7 135FAILING+= run-logarithm_test-{1,3} 136FAILING+= run-lrint_test-1 137. elif ${MACHINE_ARCH} == sh 138FAILING+= run-ctrig_test-5 139FAILING+= run-exponential_test-{1,2,4} 140FAILING+= run-fenv_test-{1,2,3,4,5,6,7,8} 141FAILING+= run-fma_test-{1,3,4,5,6} 142FAILING+= run-invtrig_test-{4,7} 143FAILING+= run-logarithm_test-1 144FAILING+= run-lrint_test-1 145FAILING+= run-nearbyint_test-1 146FAILING+= run-next_test-{1,3,4} 147FAILING+= run-rem_test-1 148FAILING+= run-trig_test-{1,2} 149. elif ${MACHINE} == sparc64 150FAILING+= run-ctrig_test-{4,5} 151FAILING+= run-exponential_test-1 152FAILING+= run-fma_test-{1,2,4,5,6} 153FAILING+= run-invtrig_test-{4,7} 154FAILING+= run-logarithm_test-{1,5} 155FAILING+= run-lrint_test-1 156FAILING+= run-next_test-{1,2,4} 157FAILING+= run-rem_test-{1,2} 158FAILING+= run-trig_test-{1,2} 159. elif ${MACHINE} == octeon 160FAILING+= run-cexp_test-7 161FAILING+= run-ctrig_test-{1,4,5} 162FAILING+= run-exponential_test-1 163FAILING+= run-fma_test-{1,2,3,4,5,6} 164FAILING+= run-invtrig_test-{4,7} 165FAILING+= run-logarithm_test-{1,5} 166FAILING+= run-lrint_test-1 167FAILING+= run-nearbyint_test-1 168FAILING+= run-next_test-{1,2,3,4} 169FAILING+= run-rem_test-{1,2} 170FAILING+= run-trig_test-{1,2} 171. elif ${MACHINE} == riscv64 172FAILING+= run-cexp_test-7 173FAILING+= run-ctrig_test-{1,4,5} 174FAILING+= run-exponential_test-1 175FAILING+= run-fma_test-{1,2,4,5,6} 176FAILING+= run-ilogb_test-3 177FAILING+= run-invtrig_test-{4,7} 178FAILING+= run-logarithm_test-{1,5} 179FAILING+= run-lrint_test-1 180FAILING+= run-nearbyint_test-1 181FAILING+= run-next_test-{1,2,4} 182FAILING+= run-rem_test-{1,2} 183FAILING+= run-trig_test-{1,2} 184. endif 185 186REGRESS_EXPECTED_FAILURES!= echo ${FAILING} 187 188LDADD= -lm 189DPADD= ${LIBM} 190CFLAGS+= -fno-builtin 191 192.for t in ${TESTS} 193REGRESS_TARGETS+= run-$t 194run-$t: $t 195 ./$t 196.endfor 197 198. for p in ${PROGS} 199SRCS_$p = $p.c atf-c.c 200. endfor 201 202SRCS_rem_test += fls.c 203 204.for p in ${PROGS} 205run-$p: $p 206 ulimit -c unlimited && \ 207 ntests="`./$p -n`" && \ 208 echo "1..$$ntests" && \ 209 tnumbers="`jot -ns' ' - 1 $$ntests`" && \ 210 ${.MAKE} -C ${.CURDIR} PROG=$p NUMBERS="$$tnumbers" regress 211.endfor 212 213.if defined(NUMBERS) 214CUR_USER != id -g 215 216. for n in ${NUMBERS} 217DESCR_$n != eval `./${PROG} -i $n` && echo $$DESCR 218REQ_USER_$n != eval `./${PROG} -i $n` && echo $$REQ_USER 219 220. if ${REQ_USER_$n} == "root" 221REGRESS_ROOT_TARGETS += run-${PROG}-$n 222. endif 223 224run-${PROG}-$n: 225 @echo "$n ${DESCR_$n}" 226. if ${REQ_USER_$n} == "root" 227 ${SUDO} ./${PROG} -r $n 228. elif ${REQ_USER_$n} == "unprivileged" && ${CUR_USER} == 0 229 ${SUDO} su ${BUILDUSER} -c exec ./${PROG} -r $n 230. elif ${REQ_USER_$n} == "unprivileged" || ${REQ_USER_$n} == "" 231 ./${PROG} -r $n 232. else 233 # bad REQ_USER: ${REQ_USER_$n} 234 false 235. endif 236 237cleanup-${PROG}-$n: 238 -./${PROG} -c $n 239 240. endfor 241.endif 242 243.include <bsd.regress.mk> 244