1# $FreeBSD$ 2 3usage() 4{ 5 cat <<__EOF__ >&2 6usage: $(basename $0) 7 8This script regenerates the DTrace test suite makefiles. It should be run 9whenever \$srcdir/cddl/contrib/opensolaris/cmd/dtrace/test/tst is modified. 10__EOF__ 11 exit 1 12} 13 14# Format a file list for use in a make(1) variable assignment: take the 15# basename of each input file and append " \" to it. 16fmtflist() 17{ 18 awk 'function bn(f) { 19 sub(".*/", "", f) 20 return f 21 } 22 {print " ", bn($1), " \\"}' 23} 24 25genmakefile() 26{ 27 local class=$1 28 local group=$2 29 30 local tdir=${CONTRIB_TESTDIR}/${class}/${group} 31 local tfiles=$(find $tdir -type f -a \ 32 \( -name \*.d -o -name \*.ksh -o -name \*.out \) | sort | fmtflist) 33 local tcfiles=$(find $tdir -type f -a -name \*.c | sort | fmtflist) 34 local texes=$(find $tdir -type f -a -name \*.exe | sort | fmtflist) 35 36 # One-off variable definitions. 37 local special 38 case "$group" in 39 proc) 40 special=" 41LIBADD.tst.sigwait.exe+= rt 42" 43 ;; 44 raise) 45 special=" 46TEST_METADATA.t_dtrace_contrib+= required_memory=\"4g\" 47" 48 ;; 49 safety) 50 special=" 51TEST_METADATA.t_dtrace_contrib+= required_memory=\"4g\" 52" 53 ;; 54 uctf) 55 special=" 56WITH_CTF=YES 57" 58 ;; 59 esac 60 61 local makefile=$(mktemp) 62 cat <<__EOF__ > $makefile 63# \$FreeBSD$ 64 65# 66# This Makefile was generated by \$srcdir${ORIGINDIR#${TOPDIR}}/genmakefiles.sh. 67# 68 69PACKAGE= tests 70 71\${PACKAGE}FILES= \\ 72$tfiles 73 74TESTEXES= \\ 75$texes 76 77CFILES= \\ 78$tcfiles 79 80$special 81.include "../../dtrace.test.mk" 82__EOF__ 83 84 mv -f $makefile ${ORIGINDIR}/../${class}/${group}/Makefile 85} 86 87set -e 88 89if [ $# -ne 0 ]; then 90 usage 91fi 92 93export LC_ALL=C 94 95readonly ORIGINDIR=$(realpath $(dirname $0)) 96readonly TOPDIR=$(realpath ${ORIGINDIR}/../../../../..) 97readonly CONTRIB_TESTDIR=${TOPDIR}/cddl/contrib/opensolaris/cmd/dtrace/test/tst 98 99for class in common i386 amd64; do 100 for group in $(find ${CONTRIB_TESTDIR}/$class -mindepth 1 -maxdepth 1 -type d); do 101 genmakefile $class $(basename $group) 102 done 103done 104