#! /bin/sh

# by Alexandre Oliva <oliva@dcc.unicamp.br>
# updated by Edouard G. Parmelan <egp@free.fr>

# This script can be used to update the list of class files to
# compiled into rt.jar and included in the Kaffe distribution.
# Whenever you add or remove a file, run this script from within
# kaffe-src/libraries/javalib

if test -f Makefile.am.in &&
   SRCDIRS=`sed -n '/^SRCDIRS *= */ s///p' < Makefile.am.in` > /dev/null; then :
else
    echo update-class-list must be run from within a javalib directory >&2
    exit 1
fi

trap 'rm -f classlist omit_filter pkglist macrodef; exit 1' 1 2 15

omitted_packages="\
java/awt/win32 \
gnu/crypto \
"

echo "WARNING: Omitted packages: $omitted_packages"
find $SRCDIRS -name \*.java -print | sort > classlist


for pkg in $omitted_packages; do
  echo "$pkg"
done | sed 's,/,\\/,g;s,^,/^,;s,$,$/d,' > omit_filter

sed 's,/[^/]*$,,' < classlist | sort | uniq | sed -f omit_filter > pkglist

{
  sed 's,^,	$(,;s,$,_SRCS) \\,;$s, \\$,,;s,[-/],_,g' < pkglist

  while read pkg; do
    echo "${pkg}_SRCS = \\" | sed 's,[-/],_,g'
    grep "^${pkg}/[^/]*$" < classlist | sed 's/^/	/;s/$/ \\/;$s/ \\$//'
  done < pkglist
} > macrodef


for pkg in $omitted_packages; do
  echo "$pkg"
done | sed 's,/,\\/,g;s,^,/^,;s,$,$/p,' > omit_filter

sed 's,/[^/]*$,,' < classlist | sort | uniq | sed -n -f omit_filter > pkglist

{
  echo "OMITTED_PACKAGES_SRCS = \\"
  sed 's,^,	$(,;s,$,_SRCS) \\,;$s, \\$,,;s,[-/],_,g' < pkglist

  while read pkg; do
    echo "${pkg}_SRCS = \\" | sed 's,[-/],_,g'
    grep "^${pkg}/[^/]*$" < classlist | sed 's/^/	/;s/$/ \\/;$s/ \\$//'
  done < pkglist
  echo
} >> macrodef

rm -f classlist omit_filter pkglist

sed '
/^'"Klasses_jar_SRCS"'/ {
    p
    r macrodef
}
/^'"Klasses_jar_SRCS"'/,/^$/ d
' < Makefile.am.in > Makefile.am

rm -f macrodef

exit 0
