#!/usr/bin/perl -w

use strict;

my $JAVA = 'gij-wrapper-3.4';
my $MAINCLASS = 'gnu.gcjwebplugin.AppletViewer';
my $PREFIX = '/usr';
my $USE_NATIVE_VIEWER = '@USE_NATIVE_VIEWER@';

# Use environment variable $LTDL_LIBRARY_PATH to store the JNI path,
# since gij uses libltdl to dlopen JNI modules.
if ($ENV{LTDL_LIBRARY_PATH}) {
    $ENV{LTDL_LIBRARY_PATH} = $ENV{LTDL_LIBRARY_PATH} . ':/usr/lib/gcjwebplugin';
} else {
    $ENV{LTDL_LIBRARY_PATH} = '/usr/lib/gcjwebplugin';
}

# Check if we are installed or in build tree.

my $JARFILE;
my $NATIVE_VIEWER;
my $scriptpath = $0;
$scriptpath =~ s/gcjappletviewer$/\./;
my $testfile = $scriptpath . '/Makefile';

if (-e ($testfile)) {
    # We are in build tree.
    $JARFILE = "$scriptpath/gcjappletviewer.jar";
    $NATIVE_VIEWER = "$scriptpath/gcjappletviewer-bin";
}
else {
    # We are installed.
    $JARFILE = "$PREFIX/share/gcjwebplugin/gcjappletviewer.jar";
    $NATIVE_VIEWER = "$PREFIX/bin/gcjappletviewer-bin";
}

# Choose applet viewer.

my $RUNTIME_ARGS = '';
my $VIEWER_ARGS = '';
my $COMMANDLINE;
my $arg;
my @args;

if ("$USE_NATIVE_VIEWER" eq "yes") {
    my $GCJ_PROPERTIES = '';
    foreach $arg (@ARGV) {
        if ($arg =~ /^-J-D/) {
	    $arg =~ s/^-J-D//;
	    $GCJ_PROPERTIES = "$GCJ_PROPERTIES $arg";
	}
	else {
	    $VIEWER_ARGS .= " $arg";
	}
    }
    $COMMANDLINE = "GCJ_PROPERTIES=\"$GCJ_PROPERTIES\" $NATIVE_VIEWER $VIEWER_ARGS";
}
else {
    foreach $arg (@ARGV) {
        if ($arg =~ /^-J/) {
	    $arg =~ s/^-J//;
	    $RUNTIME_ARGS .= " $arg";
	}
	else {
	    $VIEWER_ARGS .= " $arg";
	}
    }
    $COMMANDLINE = "$JAVA -cp $JARFILE $RUNTIME_ARGS $MAINCLASS $VIEWER_ARGS";
}

# Use environment variable $LTDL_LIBRARY_PATH to store the JNI path,
# since gij uses libltdl to dlopen JNI modules.
if ($ENV{LTDL_LIBRARY_PATH}) {
    $ENV{LTDL_LIBRARY_PATH} = $ENV{LTDL_LIBRARY_PATH} . ':/usr/lib/gcjwebplugin';
} else {
    $ENV{LTDL_LIBRARY_PATH} = '/usr/lib/gcjwebplugin';
}

# Run applet viewer process.

exec($COMMANDLINE) or exit(1);
