#! /bin/sh

# by Alexandre Oliva <oliva@dcc.unicamp.br>

# This script can be used to update the list of class files to
# compiled into Klasses.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 &&
   classfile=`sed -n '/^CLASSFILE *= */ s///p' < Makefile.am` &&
   SRCDIRS=`sed -n '/^SRCDIRS *= */ s///p' < Makefile.am` &&
   classSRCS=`echo "$classfile" | sed 's/\./_/g;s/$/_SRCS/'` &&
   grep "^$classSRCS *=" < Makefile.am > /dev/null; then :
else
    echo update-class-list must be run from within a javalib directory >&2
    exit 1
fi

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

echo WARNING: Omitting java/awt/win32 package from the list of packages
find $SRCDIRS -name \*.java -print | sort > classlist

sed 's,/[^/]*$,,' < classlist | uniq | grep -v java/awt/win32 > 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
  echo
} > macrodef

rm -f classlist pkglist

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

rm -f macrodef Makefile.am.bak

mv Makefile.am Makefile.am.bak
mv Makefile.am.new Makefile.am

# rm -f Makefile.am.bak

exit 0
