/[classpath]/classpath/lib/split-for-gcj.sh
ViewVC logotype

Diff of /classpath/lib/split-for-gcj.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2.2.1 by gnu_andrew, Tue Aug 2 20:12:39 2005 UTC revision 1.2.2.2 by gnu_andrew, Tue Aug 16 16:22:39 2005 UTC
# Line 1  Line 1 
1  #! /bin/sh  #! /bin/sh
2    
3  # Split in multiple parts for gcj.  This uses a somewhat hacky  # This script is used when compiling Classpath with gcj.  The idea is
4  # procedure for finding the package of a given file.  # to compile one package at a time, and only recompile packages when
5    # actually required.
6    
7    # We build java->class by package so we need to know what .java files
8    # correspond to what package.
9    
10    # We have a .stamp file for each package; this is the makefile target.
11    # We also have a .list file for each package, which lists all the
12    # input files in that package.
13    
14    # gen-classlist.sh makes a list of all the .java files we are going to compile.
15    
16    # This script generates Makefile.deps, which looks like this:
17    #
18    # java/awt/AWTUtilities.class: lists/java-awt.stamp
19    # lists/java-awt.list: /home/aph/gcc/gcc/libjava/classpath/gnu/java/awt/AWTUtilities.java
20    # java/awt/BitMaskExtent.class: lists/java-awt.stamp
21    # lists/java-awt.list: /home/aph/gcc/gcc/libjava/classpath/gnu/java/awt/BitMaskExtent.java
22    # java/awt/BitwiseXORComposite.class: lists/java-awt.stamp
23    # lists/java-awt.list: /home/aph/gcc/gcc/libjava/classpath/gnu/java/awt/BitwiseXORComposite.java
24    
25    # This uses a somewhat hacky procedure for finding the package of a
26    # given file.
27    
28  echo "Splitting for gcj"  echo "Splitting for gcj"
29  rm -f Makefile.deps > /dev/null 2>&1  rm -f Makefile.deps > /dev/null 2>&1
30  test -d lists || mkdir lists  test -d lists || mkdir lists
31  for dir in java javax gnu org; do  for dir in java javax gnu org; do
32     for file in `cat classes | fgrep /$dir/`; do     fgrep /$dir/ classes | while read file; do
33        pkg=`echo "$file " | sed -n -e "s,^.*/\($dir/.*\)/[^/]*$,\1,p"`        pkg=`echo "$file " | sed -n -e "s,^.*/\($dir/.*\)/[^/]*$,\1,p"`
34        list=lists/`echo $pkg | sed -e 's,/,-,g'`        list=lists/`echo $pkg | sed -e 's,/,-,g'`
35        echo "$file" >> ${list}.list.1        echo "$file" >> ${list}.list.1
36        f2=`echo "$file" | sed -n -e "s,^.*/\($dir/.*\)$,\1,p"`        f2=`echo "$file" | sed -n -e "s,^.*/\($dir/.*\)$,\1,p"`
37        f2=${f2%.java}.class        f2=`echo "$f2" | sed -e 's/.java$//'`.class
38        echo "$f2: ${list}.stamp" >> Makefile.deps        echo "$f2: ${list}.stamp" >> Makefile.deps
39        echo "${list}.list: $file" >> Makefile.deps        echo "${list}.list: $file" >> Makefile.deps
40     done     done
# Line 19  done Line 42  done
42    
43  # Only update a .list file if it changed.  # Only update a .list file if it changed.
44  for file in lists/*.list.1; do  for file in lists/*.list.1; do
45     real=${file%.1}     real=`echo "$file" | sed -e 's/.1$//'`
46     if ! cmp -s $real $file; then     if cmp -s $real $file; then
       mv $file $real  
    else  
47        rm $file        rm $file
48       else
49          mv $file $real
50     fi     fi
51  done  done

Legend:
Removed from v.1.2.2.1  
changed lines
  Added in v.1.2.2.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26