Commit 67913890 by Tom Tromey

[multiple changes]

2006-04-04  Mark Wielaard  <mark@klomp.org>

	* lib/gen-classlist.sh.in: Use classes.tmp, not classes.2
	as temporary file name.

2006-04-04  Tom Tromey  <tromey@redhat.com>

	* lib/split-for-gcj.sh: Updated for multi-field format.
	* lib/Makefile.am (CLEANFILES): Added classes.2.
	* lib/gen-classlist.sh.in (GCJ): Removed.  Create classes.1 and
	classes.2 using multiple fields.

From-SVN: r112664
parent 687b17d4
2006-04-04 Mark Wielaard <mark@klomp.org>
* lib/gen-classlist.sh.in: Use classes.tmp, not classes.2
as temporary file name.
2006-04-04 Tom Tromey <tromey@redhat.com>
* lib/split-for-gcj.sh: Updated for multi-field format.
* lib/Makefile.am (CLEANFILES): Added classes.2.
* lib/gen-classlist.sh.in (GCJ): Removed. Create classes.1 and
classes.2 using multiple fields.
2006-03-29 Tom Tromey <tromey@redhat.com> 2006-03-29 Tom Tromey <tromey@redhat.com>
PR gcc/26901: PR gcc/26901:
......
...@@ -159,7 +159,7 @@ endif ...@@ -159,7 +159,7 @@ endif
EXTRA_DIST = standard.omit mkcollections.pl.in Makefile.gcj split-for-gcj.sh EXTRA_DIST = standard.omit mkcollections.pl.in Makefile.gcj split-for-gcj.sh
CLEANFILES = compile-classes resources classes \ CLEANFILES = compile-classes resources classes \
glibj.zip classes.1 \ glibj.zip classes.1 classes.2 \
$(top_builddir)/java/util/LocaleData.java \ $(top_builddir)/java/util/LocaleData.java \
$(JAVA_DEPEND) $(JAVA_DEPEND)
......
...@@ -42,9 +42,11 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ ...@@ -42,9 +42,11 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/copy-vmresources.sh.in $(srcdir)/gen-classlist.sh.in \ $(srcdir)/copy-vmresources.sh.in $(srcdir)/gen-classlist.sh.in \
$(srcdir)/mkcollections.pl.in $(srcdir)/mkcollections.pl.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../../libtool.m4 \ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \ $(top_srcdir)/../../config/lead-dot.m4 \
$(top_srcdir)/m4/acinclude.m4 \ $(top_srcdir)/../../config/no-executables.m4 \
$(top_srcdir)/../../libtool.m4 $(top_srcdir)/m4/acattribute.m4 \
$(top_srcdir)/m4/accross.m4 $(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
...@@ -276,7 +278,7 @@ JAVAH = $(USER_JAVAH) -jni -classpath .:$(USER_CLASSLIB) ...@@ -276,7 +278,7 @@ JAVAH = $(USER_JAVAH) -jni -classpath .:$(USER_CLASSLIB)
@BUILD_CLASS_FILES_TRUE@noinst_DATA = genclasses compile-classes resources @BUILD_CLASS_FILES_TRUE@noinst_DATA = genclasses compile-classes resources
EXTRA_DIST = standard.omit mkcollections.pl.in Makefile.gcj split-for-gcj.sh EXTRA_DIST = standard.omit mkcollections.pl.in Makefile.gcj split-for-gcj.sh
CLEANFILES = compile-classes resources classes \ CLEANFILES = compile-classes resources classes \
glibj.zip classes.1 \ glibj.zip classes.1 classes.2 \
$(top_builddir)/java/util/LocaleData.java \ $(top_builddir)/java/util/LocaleData.java \
$(JAVA_DEPEND) $(JAVA_DEPEND)
......
...@@ -7,16 +7,34 @@ ...@@ -7,16 +7,34 @@
LC_ALL=C; export LC_ALL LC_ALL=C; export LC_ALL
LANG=C; export LANG LANG=C; export LANG
# We use this to decide whether we need to invoke the split script.
GCJ="@GCJ@"
echo "Adding java source files from srcdir '@top_srcdir@'." echo "Adding java source files from srcdir '@top_srcdir@'."
@FIND@ @top_srcdir@/java @top_srcdir@/javax @top_srcdir@/gnu \ # We construct 'classes.1' as a series of lines. Each line
@top_srcdir@/org \ # has three fields, which are separated by spaces. The first
@top_srcdir@/external/w3c_dom @top_srcdir@/external/sax \ # field is the package of this class (separated by "/"s).
@top_srcdir@/external/relaxngDatatype \ # The second field is the name of the top-level directory for
-follow -type f -print | sort -r | grep '\.java$' \ # this file, relative to the build directory. E.g., it might
> ${top_builddir}/lib/classes.1 # 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 -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. # Generate files for the VM classes.
: > vm.omit : > vm.omit
...@@ -29,18 +47,19 @@ for dir in $vm_dirlist; do ...@@ -29,18 +47,19 @@ for dir in $vm_dirlist; do
if test -d $subdir; then if test -d $subdir; then
@FIND@ $subdir -name '*.java' -print @FIND@ $subdir -name '*.java' -print
fi fi
done) | done) | sed -e 's,/\([^/]*\)$, \1,' |
while read f; do while read pkg file; do
echo $dir/$f >> vm.add echo $pkg $dir $pkg/$file >> vm.add
echo $f >> vm.omit echo $pkg/$file >> vm.omit
done done
done done
# Only include generated files once. # Only include generated files once.
if test ! "${top_builddir}" -ef "@top_srcdir@"; then if test ! "${top_builddir}" -ef "@top_srcdir@"; then
echo "Adding generated files in builddir '${top_builddir}'." echo "Adding generated files in builddir '${top_builddir}'."
@FIND@ ${top_builddir}/gnu ${top_builddir}/java -follow -type f -print \ # Currently the only generated files are in gnu.*.
| sort | grep '\.java$' >> ${top_builddir}/lib/classes.1 @FIND@ ${top_builddir}/gnu -follow -name '*.java' -print \
| sort >> ${top_builddir}/lib/classes.1
fi fi
...@@ -51,9 +70,10 @@ for dir in $vm_dirlist; do ...@@ -51,9 +70,10 @@ for dir in $vm_dirlist; do
fi fi
done done
# FIXME: could be more efficient by constructing a series of greps.
for filexp in `cat tmp.omit`; do for filexp in `cat tmp.omit`; do
grep -v ${filexp} < ${top_builddir}/lib/classes.1 > ${top_builddir}/lib/classes.2 grep -v ${filexp} < ${top_builddir}/lib/classes.1 > ${top_builddir}/lib/classes.tmp
mv ${top_builddir}/lib/classes.2 ${top_builddir}/lib/classes.1 mv ${top_builddir}/lib/classes.tmp ${top_builddir}/lib/classes.1
done done
...@@ -72,18 +92,20 @@ rm vm.add ...@@ -72,18 +92,20 @@ rm vm.add
rm tmp.omit rm tmp.omit
new= new=
if test -e ${top_builddir}/lib/classes; then if test -e ${top_builddir}/lib/classes.2; then
p=`diff ${top_builddir}/lib/classes ${top_builddir}/lib/classes.1` p=`diff ${top_builddir}/lib/classes.2 ${top_builddir}/lib/classes.1`
if test "$p" != ""; then if test "$p" != ""; then
new="true" new="true"
cp ${top_builddir}/lib/classes.1 ${top_builddir}/lib/classes
fi fi
else else
new="true" new="true"
cp ${top_builddir}/lib/classes.1 ${top_builddir}/lib/classes
fi fi
if test "$new" = "true"; then 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 echo "JAVA_SRCS = \\" > ${top_builddir}/lib/java.dep
for i in `cat ${top_builddir}/lib/classes` ; do for i in `cat ${top_builddir}/lib/classes` ; do
echo $i "\\" >> ${top_builddir}/lib/java.dep echo $i "\\" >> ${top_builddir}/lib/java.dep
......
...@@ -22,22 +22,24 @@ ...@@ -22,22 +22,24 @@
# java/awt/BitwiseXORComposite.class: lists/java-awt.stamp # java/awt/BitwiseXORComposite.class: lists/java-awt.stamp
# lists/java-awt.list: /home/aph/gcc/gcc/libjava/classpath/gnu/java/awt/BitwiseXORComposite.java # lists/java-awt.list: /home/aph/gcc/gcc/libjava/classpath/gnu/java/awt/BitwiseXORComposite.java
# This uses a somewhat hacky procedure for finding the package of a
# given file.
echo "Splitting for gcj" echo "Splitting for gcj"
rm -f Makefile.dtmp > /dev/null 2>&1 rm -f Makefile.dtmp > /dev/null 2>&1
test -d lists || mkdir lists test -d lists || mkdir lists
for dir in java javax gnu org; do # Much more efficient to do processing outside the loop...
fgrep /$dir/ classes | while read file; do # The first expression computes the .class file name.
pkg=`echo "$file " | sed -n -e "s,^.*/\($dir/.*\)/[^/]*$,\1,p"` # We only want the first three package components, and
list=lists/`echo $pkg | sed -e 's,/,-,g' | cut -f1-3 -d-` # we want them separated by '-'; this is the remaining expressions.
echo "$file" >> ${list}.list.1 sed -e 's, \(.*\)[.]java$, \1.java \1.class,' \
f2=`echo "$file" | sed -n -e "s,^.*/\($dir/.*\)$,\1,p"` -e 's,^\([^/ ]*\)/\([^/ ]*\) ,\1-\2 ,' \
f2=`echo "$f2" | sed -e 's/.java$//'`.class -e 's,^\([^/ ]*\)/\([^/ ]*\)/\([^/ ]*\) ,\1-\2-\3 ,' \
echo "$f2: ${list}.stamp" >> Makefile.dtmp -e 's,^\([^/ ]*\)/\([^/ ]*\)/\([^/ ]*\)/[^ ]* ,\1-\2-\3 ,' \
echo "${list}.list: $file" >> Makefile.dtmp classes.2 |
done while read pkg dir file f2; do
list=lists/$pkg
echo "$dir/$file" >> ${list}.list.1
echo "$f2: ${list}.stamp" >> Makefile.dtmp
echo "${list}.list: $dir/$file" >> Makefile.dtmp
done done
# Only update a .list file if it changed. # Only update a .list file if it changed.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment