dslinux/user/perl/jpl/Test Makefile.PL Test.jpl

cayenne dslinux_cayenne at user.in-berlin.de
Mon Dec 4 18:00:06 CET 2006


Update of /cvsroot/dslinux/dslinux/user/perl/jpl/Test
In directory antilope:/tmp/cvs-serv17422/jpl/Test

Added Files:
	Makefile.PL Test.jpl 
Log Message:
Adding fresh perl source to HEAD to branch from

--- NEW FILE: Test.jpl ---
import java.util.*;
 
public class Test {
 
    int myint = 123;
    double mydouble = 3.14159265;
    String mystring = "my string";
    static String ourstring = "our string";
    static boolean embedded = false;
    int array[] = {1,2,3};
    Vector v;

    public Test() {
 

	v = new Vector();
	v.addElement("Hello");
	printfields();
	Vector x = perlTryVec(v);
	x.addElement("World");
	Vector y = perlTryVec(x);
	if (!embedded) System.err.println("Thank you, perlTryVec!");

	if (!embedded) System.err.println(retchars());
	if (!embedded) System.err.println("Thank you, retchars!");

	String[] s = retstrings();
	if (!embedded) System.err.println(s[0] + s[1] + s[2] + s[3]);
	if (!embedded) System.err.println("Thank you, retstrings!");

	Object[] o = retobjects(v, x, y);
	if (!embedded) System.err.println(o[1]);
	if (!embedded) System.err.println(o[3]);
	if (!embedded) System.err.println(o[4]);
	if (!embedded) System.err.println("Thank you, retobjects!");

	passarray(s);

	if (!embedded) System.err.println(s[0] + s[1] + s[2] + s[3]);
	if (!embedded) System.err.println("Thank you, passarray!");

	printfields();
	if (!embedded) System.err.println("Thank you, printfields!");
	setfields();
	if (!embedded) System.err.println("Thank you, setfields!");
	printfields();
	if (!embedded) System.err.println("Thank you, printfields!");
    }
 
    perl Vector perlTryVec(Vector v) throws RuntimeException {{
	print "v is: $v\n";
	print "v isa: ", ref $v,"\n";

	print "In perlTryVec() - Vector size is: ", $v->size([],['int']), "\n";
	@foo = times;
	$size ||= getmeth('size', [], ['int']);
	for ($i = 10000; $i; --$i) {
	    $x = $v->$size();
	}
	@bar = times;
	printf "%5.2fu %5.2fs\n", $bar[0] - $foo[0], $bar[1] - $foo[1];
	return $v;
    }}

    perl char[] retchars() {{
	print "In retchars()\n";
	return [65,66,67];
    }}

    perl String[] retstrings() {{
	print "In retstrings()\n";
	return [1,2,3,"many"];
    }}
 
    perl Object[] retobjects(Vector v, Vector x, Vector y) {{
	print "In retstrings()\n";
	return [$v, $x, $y, "this is only a test", 123];
    }}

    perl void passarray(String[] s) {{
	print "In passarray()\n";
	print "s = $s\n";
	$t = GetObjectArrayElement($s,3);
	print "t = $t\n";
	$x = GetStringUTFChars($t);
	print "$x\n";
	$t = SetObjectArrayElement($s,3,NewStringUTF("infinity"));
    }}
 
    perl void printfields() {{

	$| = 1;
	eval {print $self->v->toString____s(), "\n";};
	print $@ if $@;

	print $self->myint, "\n";
	print $self->mydouble, "\n";
	print $self->mystring, "\n";
	print JPL::Test->ourstring, "\n";

	@nums = GetIntArrayElements($self->array());
	print "@nums\n";

	@nums = unpack("i*", scalar GetIntArrayElements($self->array()));
	print "@nums\n";
    }}

    perl void setfields() {{
	$self->myint(321);
	$self->mydouble(2.7182918);
	$self->mystring("MY STRING!!!");
	JPL::Test->ourstring("OUR STRING!!!");
    }}

    public static void main(String[] argv) {
	if (java.lang.reflect.Array.getLength(argv) > 0 &&
	  argv[0].equals("-nothanks"))
	    embedded = true;
	Test f = new Test();
	if (!embedded) System.err.println("Thank you, Test!");
    }
}

--- NEW FILE: Makefile.PL ---
#!/usr/bin/perl

$JPL_HOME = $ENV{JPL_HOME}
    or die "You have not run setvars to set your environment variables.\n" .
           "See the JPL README file for more information.\n";

use Config;

eval `$JPL_HOME/setvars -perl`;

chop($WHAT = `pwd`);
$WHAT =~ s#.*/##;

if ($^O eq 'linux') {
    $flags = "-Dbool=char";	# avoid builtin bool altogether
    $libs = "-lc -lm -ldl";
}
else {
    $flags = "";
    $libs = "-lc -lm -ldl";
}
chop($cwd = `pwd`);
($jpldir = $cwd) =~ s#/[^/]*$##;

open(MAKEFILE, ">Makefile");

print MAKEFILE <<"SUBS";
CC = $Config{cc}
WHAT = $WHAT
PERL = perl$]
ARCHNAME = $Config{archname}
JAVA_HOME = $ENV{JAVA_HOME}
JPL_HOME = $ENV{JPL_HOME}
PERLARCHDIR = $Config{archlib}
FLAGS = $Config{cccdlflags} $Config{ccdlflags} $Config{lddlflags} $flags
INCL  = -I\$(PERLARCHDIR)/CORE \\
	-I\$(JAVA_HOME)/include \\
	-I\$(JAVA_HOME)/include/$^O \\
	-I\$(JAVA_HOME)/include/genunix
LIBS = $libs

SUBS

print MAKEFILE <<'NOSUBS';
.SUFFIXES: .jpl .class

.jpl.class:
	$(PERL) -MJPL::Compile -e "file('$*.jpl')"

all: $(WHAT).class lib$(WHAT).so

debug: $(WHAT)_g.class lib$(WHAT)_g.so

lib$(WHAT).so: $(WHAT).c $(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter.so
	$(CC) $(FLAGS) $(INCL) $(WHAT).c \
	$(PERLARCHDIR)/CORE/libperl.so \
	$(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter.so \
	$(LIBS) \
	-o lib$(WHAT).so

lib$(WHAT)_g.so: $(WHAT).c $(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter_g.so
	$(CC) -g $(FLAGS) $(INCL) $(WHAT).c \
	$(PERLARCHDIR)/CORE/libperl.so \
	$(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter_g.so \
	$(LIBS) \
	-o lib$(WHAT)_g.so

test:

install: all
	cp $(WHAT).class	$(JPL_HOME)/lib
	cp lib$(WHAT).so	$(JPL_HOME)/lib/$(ARCHNAME)
	cp $(WHAT).pl		$(JPL_HOME)/perl

clean:
	rm -f $(WHAT).c $(WHAT).h \
	$(WHAT)*.class $(WHAT)*.pl lib$(WHAT).so $(WHAT)*.java

distclean: clean
	rm -f Makefile

NOSUBS

close MAKEFILE;




More information about the dslinux-commit mailing list