#! /bin/sh
exec perl -x $0 ${1+"$@"};
#!perl

# ----------------------------------------------------------------------------
# Modifications:
#   Mark C. Miller, Thu Mar  5 17:57:37 PST 2009
#   Added support for dbio-only distribution
#
#   Mark C. Miller, Wed May 20 16:43:25 PDT 2009
#   Added svn_bin to dbio-only distributions
#
#   Mark C. Miller, Mon Jun 22 22:05:56 PDT 2009
#   Adjusted to deal with tree in which there is no 'data' dir.
#
#   Brad Whitlock, Tue Nov 17 11:40:57 PST 2009
#   I made it add the CMake directory to the list of files.
#
#   Eric Brugger, Mon Mar  8 16:13:40 PST 2010
#   I added data/CMakeLists.txt and data/*.h.
#
#   Eric Brugger, Fri Mar 12 14:14:37 PST 2010
#   I deleted data/Makefile.in.
#
#   Brad Whitlock, Tue May  1 17:23:07 PDT 2012
#   Add resources directory.
#
#   Brad Whitlock, Fri Oct 12 16:50:08 PDT 2012
#   Remove help directory since it is now under resources.
#
#   Eric Brugger, Fri Aug 12 13:47:44 PDT 2016
#   Add vtkm directory.
#
# ----------------------------------------------------------------------------

if  (! -d "src")
{
   die "invoke $0 from the root of the VisIt source tree\n";
}


sub get ($@)
{
    my ($dir, $recursearg) = @_;
    @tmpfiles = `svn status -v $recursearg $dir | grep -v '^?' | tr -s ' ' | cut -d' ' -f5 | grep -v -x \.`;
    my @files = ();
    foreach (@tmpfiles)
    {
        chomp;
        push @files, "$_";
    }
    return @files
}

sub get_svn_recursive ($@)
{
    my ($dir) = @_;
    return get($dir, "");
}

sub get_svn_norecursive ($@)
{
    my ($dir) = @_;
    return get($dir, "-N");
}

sub get_norecursive ($@)
{
    my ($files) = @_;
    @tmpfiles = `ls $files | egrep -v /\$`;
    my @files = ();
    foreach (@tmpfiles)
    {
        chomp;
        push @files, "$_";
    }
    return @files
}


@files = ();

if ($ARGV[0] eq "-dbio-only")
{
    push @files, get_svn_norecursive  "./src";
    push @files, get_svn_recursive    "./src/CMake";
    push @files, get_svn_norecursive  "./src/common";
    push @files, get_svn_norecursive  "./src/common/Exceptions";
    push @files, get_svn_recursive    "./src/common/Exceptions/Database";
    push @files, get_svn_recursive    "./src/common/Exceptions/Pipeline";
    push @files, get_svn_recursive    "./src/common/comm";
    push @files, get_svn_recursive    "./src/common/expr";
    push @files, get_svn_recursive    "./src/common/misc";
    push @files, get_svn_recursive    "./src/common/parser";
    push @files, get_svn_recursive    "./src/common/plugin";
    push @files, get_svn_recursive    "./src/common/proxybase";
    push @files, get_svn_recursive    "./src/common/state";
    push @files, get_svn_recursive    "./src/common/utility";
    push @files, get_svn_norecursive  "./src/visit_vtk";
    push @files, get_svn_recursive    "./src/visit_vtk/full";
    push @files, get_svn_recursive    "./src/visit_vtk/lightweight";
    push @files, get_svn_recursive    "./src/vtkm";
    push @files, get_svn_norecursive  "./src/avt";
    push @files, get_svn_norecursive  "./src/avt/Math/avtVector.h";
    push @files, get_svn_norecursive  "./src/avt/Math/avtMatrix.h";
    push @files, get_svn_norecursive  "./src/avt/Math/math_exports.h";
    push @files, get_svn_norecursive  "./src/avt/VisWindow/VisWindow/VisWindowTypes.h";
    push @files, get_svn_recursive    "./src/avt/DBAtts";
    push @files, get_svn_recursive    "./src/avt/Database";
    push @files, get_svn_recursive    "./src/avt/Pipeline";
    push @files, get_svn_recursive    "./src/databases";
    push @files, get_svn_norecursive  "./src/tools";
    push @files, get_svn_recursive    "./src/tools/convert";
    push @files, get_svn_recursive    "./src/include";
    push @files, get_svn_norecursive  "./src/bin";
    push @files, get_svn_recursive    "./src/exe";
    push @files, get_svn_norecursive  "./src/lib";
    push @files, get_svn_recursive    "./src/plugins";
    push @files, get_svn_recursive    "./src/svn_bin";
    push @files, get_svn_norecursive  "./src/third_party_builtin";
    push @files, get_svn_recursive    "./src/third_party_builtin/bow";
    push @files, get_svn_recursive    "./src/osxfixup";
}
else
{
    push @files, get_svn_norecursive  "./src";
    push @files, get_svn_recursive    "./src/CMake";
    push @files, get_svn_recursive    "./src/common";
    push @files, get_svn_recursive    "./src/visit_vtk";
    push @files, get_svn_recursive    "./src/vtkm";
    push @files, get_svn_recursive    "./src/engine";
    push @files, get_svn_recursive    "./src/launcher";
    push @files, get_svn_recursive    "./src/avt";
    push @files, get_svn_recursive    "./src/vtkqt";
    push @files, get_svn_recursive    "./src/plots";
    push @files, get_svn_recursive    "./src/operators";
    push @files, get_svn_recursive    "./src/databases";
    push @files, get_svn_recursive    "./src/winutil";
    push @files, get_svn_recursive    "./src/viewer";
    push @files, get_svn_recursive    "./src/gui";
    push @files, get_svn_recursive    "./src/mdserver";
    push @files, get_svn_recursive    "./src/visitpy";
    push @files, get_svn_recursive    "./src/java";
    push @files, get_svn_recursive    "./src/tools";
    push @files, get_svn_recursive    "./src/sim";
    push @files, get_svn_recursive    "./src/include";
    push @files, get_svn_recursive    "./src/bin";
    push @files, get_svn_recursive    "./src/exe";
    push @files, get_svn_norecursive  "./src/lib";
    push @files, get_svn_recursive    "./src/ultrawrapper";
    push @files, get_svn_recursive    "./src/archives";
    push @files, get_svn_recursive    "./src/plugins";
    push @files, get_svn_recursive    "./src/svn_bin";
    push @files, get_svn_recursive    "./src/config-site";
    push @files, get_svn_recursive    "./src/cqscore";
    push @files, get_svn_recursive    "./src/third_party_builtin";
    push @files, get_svn_recursive    "./src/resources";
    push @files, get_norecursive      "./src/SVN_REVISION";
    push @files, get_svn_recursive    "./src/osxfixup";

    if  (-d "data")
    {
        push @files, get_norecursive      "./data/CMakeLists.txt";
        push @files, get_norecursive      "./data/*.C";
        push @files, get_norecursive      "./data/*.h";
    }

    # add source files for the visit test module
    if  (-d "test")
    {
        push @files, get_svn_recursive   "./test/CMakeLists.txt";
        push @files, get_svn_recursive   "./test/setup.py";
        push @files, get_svn_recursive   "./test/HtmlDiff.py";
        push @files, get_svn_recursive   "./test/HtmlPython.py";
        push @files, get_svn_recursive   "./test/visit_test_*py";
        push @files, get_svn_recursive   "./test/nobaseline.pnm";
        push @files, get_svn_recursive   "./test/notext.txt";
        push @files, get_svn_recursive   "./test/report_templates";
    }
}

foreach (sort @files)
{
    print "$_\n";
}

