| #! @SHELL@ |
| # @configure_input@ |
| |
| # Make sure sorting is done the same on all configurations |
| # Note the use of sort -r below. This is done explicitly to work around |
| # a gcj bug (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21418) |
| LC_ALL=C; export LC_ALL |
| LANG=C; export LANG |
| |
| echo "Adding java source files from srcdir '@top_srcdir@'." |
| # We construct 'classes.1' as a series of lines. Each line |
| # has three fields, which are separated by spaces. The first |
| # field is the package of this class (separated by "/"s). |
| # The second field is the name of the top-level directory for |
| # this file, relative to the build directory. E.g., it might |
| # look like "../../classpath/vm/reference". |
| # The third field is the file name, like "java/lang/Object.java". |
| # We do this because it makes splitting for the gcj build much |
| # cheaper. |
| (cd @top_srcdir@ |
| @FIND@ java javax gnu org sun -follow -name '*.java' -print | |
| sort -r | sed -e 's,/\([^/]*\)$, \1,' | |
| while read pkg file; do |
| echo $pkg @top_srcdir@ $pkg/$file |
| done) > ${top_builddir}/lib/classes.1 |
| |
| # The same, but for the external code. |
| # Right now all external code is in org/. |
| for dir in @top_srcdir@/external/w3c_dom \ |
| @top_srcdir@/external/sax @top_srcdir@/external/relaxngDatatype; do |
| (cd $dir |
| @FIND@ org -follow -name '*.java' -print | |
| sort -r | sed -e 's,/\([^/]*\)$, \1,' | |
| while read pkg file; do |
| echo $pkg $dir $pkg/$file |
| done) |
| done >> ${top_builddir}/lib/classes.1 |
| |
| # Generate files for the VM classes. |
| : > vm.omit |
| : > vm.add |
| vm_dirlist=`echo "@vm_classes@" | sed -e 's/:/ /g'` |
| for dir in $vm_dirlist; do |
| echo "Adding java source files from VM directory $dir" |
| (cd $dir |
| for subdir in java javax gnu org com sun; do |
| if test -d $subdir; then |
| @FIND@ $subdir -name '*.java' -print |
| fi |
| done) | sed -e 's,/\([^/]*\)$, \1,' | |
| while read pkg file; do |
| echo $pkg $dir $pkg/$file >> vm.add |
| echo $pkg/$file >> vm.omit |
| done |
| done |
| |
| # Only include generated files once. |
| if test ! "${top_builddir}" -ef "@top_srcdir@"; then |
| echo "Adding generated files in builddir '${top_builddir}'." |
| # Currently the only generated files are in gnu.*. |
| (cd ${top_builddir}; @FIND@ gnu -follow -name '*.java' -print) | |
| sort | sed -e 's,/\([^/]*\)$, \1,' | |
| while read pkg file; do |
| echo $pkg $top_builddir $pkg/$file |
| done >> ${top_builddir}/lib/classes.1 |
| fi |
| |
| |
| cat $1.omit vm.omit > tmp.omit |
| for dir in $vm_dirlist; do |
| if test -f $dir/$1.omit; then |
| cat $dir/$1.omit >> tmp.omit |
| fi |
| done |
| |
| # FIXME: could be more efficient by constructing a series of greps. |
| for filexp in `cat tmp.omit`; do |
| grep -v ${filexp} < ${top_builddir}/lib/classes.1 > ${top_builddir}/lib/classes.tmp |
| mv ${top_builddir}/lib/classes.tmp ${top_builddir}/lib/classes.1 |
| done |
| |
| |
| for dir in $vm_dirlist; do |
| if test -f $dir/$1.omit; then |
| for filexp in `cat $dir/$1.omit`; do |
| grep -v $filexp < vm.add > vm.add.1 |
| mv vm.add.1 vm.add |
| done |
| fi |
| done |
| cat vm.add >> classes.1 |
| |
| rm vm.omit |
| rm vm.add |
| rm tmp.omit |
| |
| new= |
| if test -e ${top_builddir}/lib/classes.2; then |
| p=`diff ${top_builddir}/lib/classes.2 ${top_builddir}/lib/classes.1` |
| if test "$p" != ""; then |
| new="true" |
| fi |
| else |
| new="true" |
| fi |
| |
| if test "$new" = "true"; then |
| cp ${top_builddir}/lib/classes.1 ${top_builddir}/lib/classes.2 |
| # Strip the package part. |
| sed -e 's/^[^ ]* //' -e 's, ,/,' < ${top_builddir}/lib/classes.1 \ |
| > ${top_builddir}/lib/classes |
| echo "JAVA_SRCS = \\" > ${top_builddir}/lib/java.dep |
| for i in `cat ${top_builddir}/lib/classes` ; do |
| echo $i "\\" >> ${top_builddir}/lib/java.dep |
| done |
| fi |
| |
| exit 0 |