aboutsummaryrefslogtreecommitdiff
path: root/libjava/classpath/lib/mkdep.pl.in
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/lib/mkdep.pl.in')
-rwxr-xr-xlibjava/classpath/lib/mkdep.pl.in336
1 files changed, 0 insertions, 336 deletions
diff --git a/libjava/classpath/lib/mkdep.pl.in b/libjava/classpath/lib/mkdep.pl.in
deleted file mode 100755
index b30fd7a..0000000
--- a/libjava/classpath/lib/mkdep.pl.in
+++ /dev/null
@@ -1,336 +0,0 @@
-#!@PERL@
-#
-# Create a dependency file for use with make that will
-# a) not have duplicate entries
-# b) not include the source of a file as a dependency to separate file,
-# just the class of the file
-# c) use jikes .u files
-# d) includes classes which need native compilation via simple parsing
-# to find native methods requiring use of javah
-
-use strict;
-
-my ( $dir, $dep ) = "";
-my @dirs = ( 'java', 'javax', 'gnu' );
-my ( $depout ) = "makefile.dep";
-my ( $classout ) = "classes.dep";
-my ( $headerout ) = "headers.dep";
-my ( $javaout ) = "java.dep";
-my @deps = ();
-my @natives = ();
-use vars qw ( $classout $headerout @dirs @deps @natives $dir $dep $depout );
-
-# main
-{
- if ($#ARGV == 0)
- {
- if ($ARGV[0] =~ /^-h/)
- {
- findNativeFiles();
- writeNativeFile();
- }
- elsif ($ARGV[0] =~ /^-d/)
- {
- foreach $dir (@dirs)
- {
- # find all .u files recursively and parse'm
- findDepFiles($dir);
- }
- writeDepFile();
- }
- elsif ($ARGV[0] =~ /^-c/)
- {
- findClassFiles();
- writeClassFile();
- }
- elsif ($ARGV[0] =~ /^-j/)
- {
- findJavaFiles();
- writeJavaFile();
- }
- }
- else
- {
- print "Usage:\n";
- print "mkdep.pl -h \tfor header files\n";
- print "mkdep.pl -c \tfor a list of classes\n";
- print "mkdep.pl -j \tfor a list of java files\n";
- print "mkdep.pl -d \tfor dependency generation from jikes .u files\n";
- }
-}
-
-sub writeNativeFile
-{
- my ($i, $j, $k, $l) = "";
- my $top_srcdir = "../";
- if (defined $ENV{'top_srcdir'}) {
- $top_srcdir = $ENV{'top_srcdir'};
- }
- my $top_srcdir_regex = $top_srcdir;
- if ($top_srcdir_regex !~ /.*\/$/) {
- $top_srcdir_regex .= '/';
- }
- $top_srcdir_regex =~ s/\./\\\./g; # replace . with \.
- $top_srcdir_regex =~ s/\//\\\//g; # replace / with \/
-# print "regex is $top_srcdir_regex\n";
- open(MAKEDEP, ">$headerout") || die "Could not open file ", $headerout;
-
- # the HEADERS = ... stuff
- if ($#natives > -1)
- {
- print MAKEDEP "CP_HEADERS = \\", "\n";
- foreach $i (0 .. $#natives-1)
- {
- $j = $natives[$i];
- $j =~ s/^$top_srcdir_regex//; # remove ../ or similar
- $j =~ s/^(\.\.\/)+//g; # remove all preceding ../
- $j =~ s/^vm\/reference\///; # remove vm/reference/
- $j =~ s/\//_/g; # replace / with _
- $j =~ s/\.java$/\.h/; # replace .java with .h
- print MAKEDEP " \$(top_builddir)/include/", $j, " \\", "\n";
- }
- $j = $natives[$#natives];
- $j =~ s/^$top_srcdir_regex//; # remove ../
- $j =~ s/^(\.\.\/)+//g; # remove all preceding ../
- $j =~ s/^vm\/reference\///; # remove vm/reference/
- $j =~ s/\//_/g; # replace / with _
- $j =~ s/\.java/\.h/; # replace .java with .h
- print MAKEDEP " \$(top_builddir)/include/", $j, "\n\n";
-
- # print rules to make .h files
- # y/x.h : z/x.class
- # y/x.h : ../z/x.java
- # javah -jni z.x
- # mv y_x.h $(top_srcdir)/include
-
- # j = y/x.h
- # k = z/x.class
- # k = ../z/x.java
- # l = z.x
- foreach $i (0 .. $#natives-1)
- {
- $j = $natives[$i];
- $j =~ s/^$top_srcdir_regex//; # remove ../
- $j =~ s/^(\.\.\/)+//g; # remove all preceding ../
- $j =~ s/^vm\/reference\///; # remove vm/reference/
-# $k = $l = $j;
- $l = $j;
- $j =~ s/\//_/g; # replace / with _
- $j =~ s/\.java$/\.h/; # replace .java with .h
-
- $k = $natives[$i]; # the original .java file
-# $k =~ s/\.java$/\.class/; # replace .java with .class
-
- $l =~ s/\.java$//; # remove .class
- $l =~ s/\//\./g; # replace / with .
-
- print MAKEDEP "\$(top_builddir)/include/", $j, " : ", $k, "\n";
- print MAKEDEP "\t\$(JAVAH) ", $l, "\n";
- print MAKEDEP "\tmv ", $j, " \$(top_builddir)/include\n\n";
- }
- $j = $natives[$#natives];
- $j =~ s/^$top_srcdir_regex//; # remove ../
- $j =~ s/^(\.\.\/)+//g; # remove all preceding ../
- $j =~ s/^vm\/reference\///; # remove vm/reference/
-# $k = $l = $j;
- $l = $j;
- $j =~ s/\//_/g; # replace / with _
- $j =~ s/\.java/\.h/; # replace .java with .h
-
- $k = $natives[$#natives]; # the original .java file
-# $k =~ s/\.java$/\.class/; # replace .java with .class
-
- $l =~ s/\.java$//; # remove .class
- $l =~ s/\//\./g; # replace / with .
-
- print MAKEDEP "\$(top_builddir)/include/", $j, " : ", $k, "\n";
- print MAKEDEP "\t\$(JAVAH) ", $l, "\n";
- print MAKEDEP "\tmv ", $j, " \$(top_builddir)/include\n\n";
- }
- close(MAKEDEP);
-}
-
-sub writeJavaFile
-{
- my ($i, $j, $class, $depend, $source, $depend_source) = "";
-
- open(MAKEDEP, ">$javaout") || die "Could not open file ", $classout;
-
- # the JAVA_SRCS = ... stuff
- if ($#natives > -1)
- {
- print MAKEDEP "JAVA_SRCS = \\", "\n";
- foreach $i (0 .. $#natives-1)
- {
- $j = $natives[$i];
- print MAKEDEP " ", $j, " \\", "\n";
- }
- $j = $natives[$#natives];
- print MAKEDEP " ", $j, "\n\n";
- }
- close(MAKEDEP);
-}
-
-sub writeClassFile
-{
- my ($i, $j, $class, $depend, $source, $depend_source) = "";
-
- open(MAKEDEP, ">$classout") || die "Could not open file ", $classout;
-
- # the CLASSES = ... stuff
- if ($#natives > -1)
- {
- print MAKEDEP "CLASSES = \\", "\n";
- foreach $i (0 .. $#natives-1)
- {
- $j = $natives[$i];
- $j =~ s/\.java$/\.class/;
- print MAKEDEP " ", $j, " \\", "\n";
- }
- $j = $natives[$#natives];
- $j =~ s/\.java$/\.class/;
- print MAKEDEP " ", $j, "\n\n";
- }
- close(MAKEDEP);
-}
-
-sub writeDepFile
-{
- my ($i, $j, $class, $depend, $source, $depend_source) = "";
-
- open(MAKEDEP, ">$depout") || die "Could not open file ", $depout;
-
- # the class dependencies
- foreach $i (@deps)
- {
- open(FILE, "<$i") || die "Could not open file ", $i, "\n";
- while(<FILE>)
- {
- chop;
- ($class, $depend) = /(.+) : (.+)$/;
- $source = $class;
- $source =~ s/\.class$/\.java/;
- if (($source eq $depend) || ($depend !~ /\.java$/))
- {
- if ($depend =~ /^\.\.\/.+\.class$/)
- {
- $depend =~ s/^\.\.\///;
- }
- if (($depend =~ /\.java$/) && ($depend !~ /^\.\.\//))
- {
- $depend = "../" . $depend;
- }
- print MAKEDEP $class, " : ", $depend, "\n";
- }
- }
- print MAKEDEP "\n";
- close(FILE);
- }
- close(MAKEDEP);
-}
-
-sub findJavaFiles
-{
- my ($file) = "";
- open(CLASSES, "<classes") || die "Could not open file classes\n";
- while(<CLASSES>)
- {
- chop;
- $file = $_;
- push @natives, $file;
- }
- close(CLASSES);
-}
-
-sub findClassFiles
-{
- my ($file) = "";
- open(CLASSES, "<classes") || die "Could not open file classes\n";
- while(<CLASSES>)
- {
- chop;
- $file = $_;
- $file =~ s/^\.\.\///;
- push @natives, $file;
- }
- close(CLASSES);
-}
-
-sub findNativeFiles
-{
- my ($file) = "";
- open(CLASSES, "<classes") || die "Could not open file classes\n";
- while(<CLASSES>)
- {
- chop;
- $file = $_;
- if (hasNativeMethod($file))
- {
- push @natives, $file;
- }
-
- }
- close(CLASSES);
-}
-
-sub hasNativeMethod
-{
- my ($file) = @_;
- my ($line, $one, $two) = "";
- open(FILE, "<$file") || die "Could not open file ", $file, "\n";
- while(<FILE>)
- {
- chop;
- $one = $two;
- $two = $_;
-
- $line = $one . " " . $two;
- if ( ($line =~ /^\s*public\s.*native\s+\S+\s+\S+\s*\(/) ||
- ($line =~ /^\s*public\s.*native\s+\S+\s+\S+\s+\S+\s*\(/) ||
- ($line =~ /^\s*protected\s.*native\s+\S+\s+\S+\s*\(/) ||
- ($line =~ /^\s*protected\s.*native\s+\S+\s+\S+\s+\S+\s*\(/) ||
- ($line =~ /^\s*private\s.*native\s+\S+\s+\S+\s*\(/) ||
- ($line =~ /^\s*private\s.*native\s+\S+\s+\S+\s+\S+\s*\(/) ||
- ($line =~ /^\s*abstract\s.*native\s+\S+\s+\S+\s*\(/) ||
- ($line =~ /^\s*final\s.*native\s+\S+\s+\S+\s*\(/) ||
- ($line =~ /^\s*synchronized\s.*native\s+\S+\s+\S+\s*\(/) ||
- ($line =~ /^\s*native\s.*/) )
- {
- close(FILE);
- return 1;
- }
- }
- close(FILE);
- return 0;
-}
-
-sub findDepFiles
-{
-
- my ($dir) = @_;
- my (@dirs) = ();
- my (@local_deps) = ();
- my (@entries) = ();
- my ($i, $local_dep) = "";
- if (opendir(DIR, $dir))
- {
- @entries = grep(-d "$dir/$_" && !/^\.\.?$/, readdir(DIR));
- foreach $i (@entries)
- {
- push @dirs, "$dir/$i";
- }
- rewinddir(DIR);
- @entries= grep(/\.u$/, readdir(DIR));
- closedir(DIR);
- foreach $i (@entries)
- {
- push @local_deps, "$dir/$i";
- }
- push @deps, @local_deps;
- foreach $i (@dirs)
- {
- findDepFiles($i);
- }
- }
-}
-