#!/bin/sh

# Constructs lists of source files (full pathnames) to test.  Two
# files are constructed: testsuite_files, which is used to test with
# the default dg-runtest command, and testsuite_files_interactive,
# which is used to test cases that require input to be entered. In
# addition, both lists are pruned of wchar_t tests if the toolchain
# under test does not support wchar_t functionality.
#
# We mimic the mkcheck script in that the first time this is run, all
# existing files are listed in "testsuite_files" in the output
# directory.  Subsequent runs pull the list from that file, allowing
# users to trim the list down to problematic tests, or just run
# particular directories or sub-directories of tests.
#
# Selecting individual tests can also be done with RUNTESTFLAGS, but
# that doesn't really do all that we are trying to accomplish here.

LC_ALL=C
export LC_ALL

# Both of these are in the appropriate testsuite subdirectories.
srcdir="$1"
outdir="$2"

tmp="${TMPDIR:-/tmp}/ctt$$"
tests_file_normal="$outdir/testsuite_files"
tests_file_inter="$outdir/testsuite_files_interactive"
tests_file_perf="$outdir/testsuite_files_performance"
tests_file_simd="$outdir/testsuite_files_simd"

cd $srcdir
# This is the ugly version of "everything but the current directory".  It's
# what has to happen when find(1) doesn't support -mindepth, or -xtype.
# The directories here should be consistent with libstdc++-dg/conformance.exp
dlist=`echo [0-9][0-9]*`
dlist="$dlist std abi backward ext performance tr1 tr2 decimal experimental"
dlist="$dlist special_functions"
find $dlist "(" -type f -o -type l ")" -name "*.cc" -print > $tmp.01
find $dlist "(" -type f -o -type l ")" -name "*.c" -print > $tmp.02
cat  $tmp.01 $tmp.02 | sort > $tmp.1
if test ! -s "$tmp.1"; then
  exit 1
fi

# Now filter out classes of tests.  These classes are run using special rules.
grep _xin $tmp.1 > $tests_file_inter
grep -v _xin $tmp.1 > $tmp.4

grep performance $tmp.4 > $tests_file_perf
grep -v performance $tmp.4 > $tmp.5

grep simd/tests/ $tmp.5 > $tests_file_simd
grep -v simd/tests/ $tmp.5 > $tmp.6

# ...more filters go here.
cp $tmp.6 $tests_file_normal

rm $tmp*
exit 0
