scripts.am, [...]: Rebuilt.
[gcc.git] / libjava / scripts / classes.pl
1 # classes.pl - A perl program to generate most of the contents of
2 # javaprims.h automatically.
3
4 # Copyright (C) 1998, 1999, 2000, 2002, 2005, 2006 Free Software Foundation
5 #
6 # This file is part of libgcj.
7 #
8 # This software is copyrighted work licensed under the terms of the
9 # Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
10 # details.
11
12 # Usage: cd <build>/classpath/lib ; perl classes.pl.
13
14 use DirHandle;
15
16 if (-d 'java')
17 {
18 # Ok here.
19 }
20 elsif (-d '../java')
21 {
22 chdir ('..');
23 }
24 else
25 {
26 die "couldn't find java directory\n";
27 }
28
29 &scan ('java', 2);
30
31 exit 0;
32
33 sub scan
34 {
35 local ($dir, $indent) = @_;
36 local (@subdirs) = ();
37 local (%classes) = ();
38
39 local ($d) = new DirHandle $dir;
40 local (*JFILE);
41 local ($name);
42 if (defined $d)
43 {
44 while (defined ($name = $d->read))
45 {
46 next if $name eq 'CVS';
47 next if $name eq '.svn';
48 next if $name eq '.';
49 next if $name eq '..';
50 if ($dir eq 'java'
51 && $name ne 'lang'
52 && $name ne 'util'
53 && $name ne 'io')
54 {
55 # We only generate decls for java.lang, java.io, and
56 # java.util.
57 next;
58 }
59 if (-d ($dir . '/' . $name))
60 {
61 push (@subdirs, $name);
62 next;
63 }
64 next unless $name =~ s/\.class$//;
65 $classes{$name} = 1;
66 }
67
68 undef $d;
69 }
70
71 local ($spaces) = ' ' x $indent;
72 local ($classname);
73 ($classname = $dir) =~ s/^.*\///;
74 print $spaces, "namespace ", $classname, "\n";
75 print $spaces, "{\n";
76
77 foreach (sort keys %classes)
78 {
79 print $spaces, " class ", $_, ";\n";
80 }
81 print "\n" if scalar @classes > 0 && scalar @subdirs > 0;
82
83 local ($first) = 1;
84 foreach (sort @subdirs)
85 {
86 print "\n" unless $first;
87 $first = 0;
88 &scan ("$dir/$_", $indent + 2);
89 }
90
91 print $spaces, "}\n";
92 }