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