1279418Smarkj# $FreeBSD: releng/11.0/cddl/usr.sbin/dtrace/tests/tools/genmakefiles.sh 299094 2016-05-04 23:20:53Z ngie $
2279418Smarkj
3279418Smarkjusage()
4279418Smarkj{
5279418Smarkj    cat <<__EOF__ >&2
6279418Smarkjusage: $(basename $0)
7279418Smarkj
8279418SmarkjThis script regenerates the DTrace test suite makefiles. It should be run
9279418Smarkjwhenever \$srcdir/cddl/contrib/opensolaris/cmd/dtrace/test/tst is modified.
10279418Smarkj__EOF__
11279418Smarkj    exit 1
12279418Smarkj}
13279418Smarkj
14279418Smarkj# Format a file list for use in a make(1) variable assignment: take the
15279418Smarkj# basename of each input file and append " \" to it.
16279418Smarkjfmtflist()
17279418Smarkj{
18279418Smarkj    awk 'function bn(f) {
19279418Smarkj        sub(".*/", "", f)
20279418Smarkj        return f
21279418Smarkj    }
22279418Smarkj    {print "    ", bn($1), " \\"}'
23279418Smarkj}
24279418Smarkj
25279418Smarkjgenmakefile()
26279418Smarkj{
27279418Smarkj    local basedir=$1
28279418Smarkj
29279418Smarkj    local tdir=${CONTRIB_TESTDIR}/${basedir}
30279418Smarkj    local tfiles=$(find $tdir -type f -a \
31279418Smarkj        \( -name \*.d -o -name \*.ksh -o -name \*.out \) | sort | fmtflist)
32279418Smarkj    local tcfiles=$(find $tdir -type f -a -name \*.c | sort | fmtflist)
33279418Smarkj    local texes=$(find $tdir -type f -a -name \*.exe | sort | fmtflist)
34279418Smarkj
35279418Smarkj    # One-off variable definitions.
36279418Smarkj    local special
37279418Smarkj    if [ "$basedir" = proc ]; then
38279418Smarkj        special="
39291738SbdreweryLIBADD.tst.sigwait.exe+= rt
40279418Smarkj"
41279418Smarkj    elif [ "$basedir" = uctf ]; then
42279418Smarkj        special="
43279418SmarkjWITH_CTF=YES
44279418Smarkj"
45279418Smarkj    fi
46279418Smarkj
47279418Smarkj    local makefile=$(mktemp)
48279418Smarkj    cat <<__EOF__ > $makefile
49279418Smarkj# \$FreeBSD: releng/11.0/cddl/usr.sbin/dtrace/tests/tools/genmakefiles.sh 299094 2016-05-04 23:20:53Z ngie $
50279418Smarkj
51279418Smarkj#
52279418Smarkj# This Makefile was generated by \$srcdir${ORIGINDIR#${TOPDIR}}/genmakefiles.sh.
53279418Smarkj#
54279418Smarkj
55299094SngiePACKAGE=	tests
56299094Sngie
57299094Sngie\${PACKAGE}FILES= \\
58279418Smarkj$tfiles
59279418Smarkj
60279418SmarkjTESTEXES= \\
61279418Smarkj$texes
62279418Smarkj
63279418SmarkjCFILES= \\
64279418Smarkj$tcfiles
65279418Smarkj
66279418Smarkj$special
67291332Sbdrewery.include "../../dtrace.test.mk"
68279418Smarkj__EOF__
69279418Smarkj
70279418Smarkj    mv -f $makefile ${ORIGINDIR}/../common/${basedir}/Makefile
71279418Smarkj}
72279418Smarkj
73279418Smarkjset -e
74279418Smarkj
75279418Smarkjif [ $# -ne 0 ]; then
76279418Smarkj    usage
77279418Smarkjfi
78279418Smarkj
79279418Smarkjreadonly ORIGINDIR=$(realpath $(dirname $0))
80279418Smarkjreadonly TOPDIR=$(realpath ${ORIGINDIR}/../../../../..)
81279418Smarkjreadonly CONTRIB_TESTDIR=${TOPDIR}/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common
82279418Smarkj
83279418Smarkj# Generate a Makefile for each test group under common/.
84279418Smarkjfor dir in $(find ${CONTRIB_TESTDIR} -mindepth 1 -maxdepth 1 -type d); do
85279418Smarkj    genmakefile $(basename $dir)
86279418Smarkjdone
87