summaryrefslogtreecommitdiff
path: root/debian/gcj-wrapper-BV
diff options
context:
space:
mode:
Diffstat (limited to 'debian/gcj-wrapper-BV')
-rw-r--r--debian/gcj-wrapper-BV91
1 files changed, 91 insertions, 0 deletions
diff --git a/debian/gcj-wrapper-BV b/debian/gcj-wrapper-BV
new file mode 100644
index 0000000..4648d79
--- /dev/null
+++ b/debian/gcj-wrapper-BV
@@ -0,0 +1,91 @@
+#!/usr/bin/perl -w
+#
+# Starts the GNU Java compiler.
+#
+# Command-line arguments should be in the style of Sun's Java compiler;
+# these will be converted to gcj arguments before being passed to the
+# gcj itself.
+#
+# Copyright (C) 2002-2003 by Ben Burton <bab@debian.org>
+# Based on the original gcj-wrapper-3.2 shell script.
+
+use strict;
+
+# The real Java compiler:
+my $javaCompiler = '/usr/bin/gcj-@BV@';
+
+# The command-line arguments to pass to the real Java compiler:
+my @commandLine;
+
+# The warning flags to pass to the GNU Java compiler:
+my $warnings = '-Wall';
+
+# Build the command-line from the arguments given.
+my $parsingOptions = 1;
+my $copyNextArg = 0;
+my $ignoreNextArg = 0;
+my $appendNextArg = '';
+foreach my $arg (@ARGV) {
+ # See if we already know what to do with this argument.
+ if ($ignoreNextArg) {
+ # Throw it away.
+ $ignoreNextArg = 0;
+ next;
+ } elsif ($copyNextArg or not $parsingOptions) {
+ # Copy it directly.
+ push @commandLine, $arg;
+ $copyNextArg = 0;
+ next;
+ } elsif ($appendNextArg) {
+ # Append it to $appendNextArg and then copy directly.
+ push @commandLine, ($appendNextArg . $arg);
+ $appendNextArg = '';
+ next;
+ }
+
+ # Try to interpret Sun-style options.
+ if ($arg eq '-version') {
+ push @commandLine, '--version';
+ } elsif ($arg eq '-h' or $arg eq '-help') {
+ push @commandLine, '--help';
+ } elsif ($arg eq '-classpath' or $arg eq '--classpath' or $arg eq '--cp') {
+ $appendNextArg = '--classpath=';
+ } elsif ($arg eq '-encoding' or $arg eq '-bootclasspath' or
+ $arg eq '-extdirs') {
+ $appendNextArg = '-' . $arg . '=';
+ } elsif ($arg eq '-d') {
+ push @commandLine, '-d';
+ $copyNextArg = 1;
+ } elsif ($arg eq '-nowarn') {
+ $warnings = '';
+ } elsif ($arg =~ /^-g/) {
+ # Some kind of debugging option - just switch debugging on.
+ push @commandLine, '-g' if ($arg ne '-g:none');
+ } elsif ($arg eq '-O') {
+ push @commandLine, '-O2';
+ } elsif ($arg eq '-Xss') {
+ push @commandLine, $arg;
+ } elsif ($arg =~ /^-X/) {
+ # An extended Sun option (which we don't support).
+ push @commandLine, '--help' if ($arg eq '-X');
+ } elsif ($arg eq '-source' or $arg eq '-sourcepath' or $arg eq '-target') {
+ # An unsupported option with a following argument.
+ $ignoreNextArg = 1;
+ } elsif ($arg =~ /^-/) {
+ # An unsupported standalone option.
+ } else {
+ # Some non-option argument has been given.
+ # Stop parsing options at this point.
+ push @commandLine, $arg;
+ $parsingOptions = 0;
+ }
+}
+
+# Was there a partial argument that was never completed?
+push @commandLine, $appendNextArg if ($appendNextArg);
+
+# Call the real Java compiler.
+my @fullCommandLine = ( $javaCompiler, '-C' );
+push @fullCommandLine, $warnings if ($warnings);
+push @fullCommandLine, @commandLine;
+exec @fullCommandLine or exit(1);