#!/bin/sh

set -e

fixsyms() {
    if test "`uname -s|tr A-Z a-z`" = darwin
    then egrep -v [.]eh$ | egrep ^_ | sed s/^_//
    else cat
    fi
}

tests() {
    for f in "$@"
    do nm $f
    done | cut -d ' ' -f 3 | fixsyms | egrep ^cttest
}

ts=`tests "$@" || (echo >&2 no tests found; exit 1)`

gen() {
    printf '#include "internal.h"\n'
    printf '\n'

    i=0
    for t in "$@"
    do
        printf 'extern void %s(void);\n' $t
        i=`expr $i + 1`
    done

    printf '\nint\nmain(int argc, char *argv[])\n{\n'

    printf '    T ts[%d] = {};\n' $i

    i=0
    for t in "$@"
    do
        printf '    ctrun(&ts[%d], %d, %s, "%s");\n' $i $i $t $t
        i=`expr $i + 1`
    done

    printf '    ctreport(ts, %d);\n' $i
    printf '    return 0;\n'
    printf '}\n'
}

gen $ts
