| #! @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. |
| for dir in \ |
| @top_srcdir@/external/w3c_dom \ |
| @top_srcdir@/external/sax \ |
| @top_srcdir@/external/relaxngDatatype \ |
| @top_srcdir@/external/jsr166 \ |
| ; do |
| (cd $dir |
| for subdir in java javax gnu org sun; do |
| if test -d $subdir; then |
| @FIND@ $subdir -follow -name '*.java' -print | |
| sort -r | sed -e 's,/\([^/]*\)$, \1,' | |
| while read pkg file; do |
| echo $pkg $dir $pkg/$file |
| done |
| fi |
| 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. |
| abs_top_builddir=`cd "${top_builddir}"; pwd` |
| abs_top_srcdir=`cd "@top_srcdir@"; pwd` |
| if test "$abs_top_builddir" != "$abs_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 |
| |
| # Mangle the omit expressions into a script suitable for old awk. |
| # Exploit the fact that many omissions are not regular expressions: |
| # assume a single file is listed if it does not contain '*', '$', |
| # and ends in '.java'. |
| sed_omit_hash=' |
| 1i\ |
| BEGIN {\ |
| omit[""] = 1 |
| $a\ |
| } |
| /[*$]/d |
| /\.java$/!d |
| s|^| omit["| |
| s|$|"] = 1|' |
| sed_omit_main_loop=' |
| 1i\ |
| {\ |
| if (omit[$3]) next |
| $a\ |
| print\ |
| } |
| /^[^*$]*\.java$/d |
| s|/|\\/|g |
| s|^| if ($3 ~ /| |
| s|$|/) next|' |
| |
| sed "$sed_omit_hash" <tmp.omit >tmp.awk |
| sed "$sed_omit_main_loop" <tmp.omit >>tmp.awk |
| @AWK@ -f tmp.awk < ${top_builddir}/lib/classes.1 > ${top_builddir}/lib/classes.tmp |
| mv ${top_builddir}/lib/classes.tmp ${top_builddir}/lib/classes.1 |
| |
| vm_omitlist= |
| for dir in $vm_dirlist; do |
| if test -f $dir/$1.omit; then |
| vm_omitlist="$vm_omitlist $dir/$1.omit" |
| fi |
| done |
| cat $vm_omitlist | sed "$sed_omit_hash" > tmp.awk |
| cat $vm_omitlist | sed "$sed_omit_main_loop" >> tmp.awk |
| @AWK@ -f tmp.awk < vm.add >>${top_builddir}/lib/classes.1 |
| |
| rm -f vm.omit vm.add tmp.omit tmp.awk |
| |
| new= |
| if test -f ${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 |