1 | #!/usr/bin/perl
|
---|
2 |
|
---|
3 | $JPL_HOME = $ENV{JPL_HOME}
|
---|
4 | or die "You have not run setvars to set your environment variables.\n" .
|
---|
5 | "See the JPL README file for more information.\n";
|
---|
6 |
|
---|
7 | use Config;
|
---|
8 |
|
---|
9 | eval `$JPL_HOME/setvars -perl`;
|
---|
10 |
|
---|
11 | chop($WHAT = `pwd`);
|
---|
12 | $WHAT =~ s#.*/##;
|
---|
13 |
|
---|
14 | if ($^O eq 'linux') {
|
---|
15 | $flags = "-Dbool=char"; # avoid builtin bool altogether
|
---|
16 | $libs = "-lc -lm -ldl";
|
---|
17 | } else {
|
---|
18 | $flags = "";
|
---|
19 | $libs = "-lc -lm -ldl";
|
---|
20 | }
|
---|
21 |
|
---|
22 | # Needed for JNI
|
---|
23 | if ($^O eq 'solaris') {
|
---|
24 | $libs .= " -lthread";
|
---|
25 | }
|
---|
26 |
|
---|
27 | chop($cwd = `pwd`);
|
---|
28 | ($jpldir = $cwd) =~ s#/[^/]*$##;
|
---|
29 |
|
---|
30 | open(MAKEFILE, ">Makefile");
|
---|
31 |
|
---|
32 | print MAKEFILE <<"SUBS";
|
---|
33 | CC = $Config{cc}
|
---|
34 | WHAT = $WHAT
|
---|
35 | PERL = perl$]
|
---|
36 | ARCHNAME = $Config{archname}
|
---|
37 | JAVA_HOME = $ENV{JAVA_HOME}
|
---|
38 | JPL_HOME = $ENV{JPL_HOME}
|
---|
39 | PERLARCHDIR = $Config{archlib}
|
---|
40 | FLAGS = $Config{cccdlflags} $Config{ccdlflags} $Config{lddlflags} $flags
|
---|
41 | INCL = -I\$(PERLARCHDIR)/CORE \\
|
---|
42 | -I\$(JAVA_HOME)/include \\
|
---|
43 | -I\$(JAVA_HOME)/include/$^O \\
|
---|
44 | -I\$(JAVA_HOME)/include/genunix
|
---|
45 | LIBS = $libs
|
---|
46 |
|
---|
47 | SUBS
|
---|
48 |
|
---|
49 | print MAKEFILE <<'NOSUBS';
|
---|
50 | .SUFFIXES: .jpl .class
|
---|
51 |
|
---|
52 | .jpl.class:
|
---|
53 | $(PERL) -MJPL::Compile -e "file('$*.jpl')"
|
---|
54 |
|
---|
55 | all: $(WHAT).class lib$(WHAT).so
|
---|
56 |
|
---|
57 | debug: $(WHAT)_g.class lib$(WHAT)_g.so
|
---|
58 |
|
---|
59 | lib$(WHAT).so: $(WHAT).c $(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter.so
|
---|
60 | $(CC) $(FLAGS) $(INCL) $(WHAT).c \
|
---|
61 | $(PERLARCHDIR)/CORE/libperl.so \
|
---|
62 | $(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter.so \
|
---|
63 | $(LIBS) \
|
---|
64 | -o lib$(WHAT).so
|
---|
65 |
|
---|
66 | lib$(WHAT)_g.so: $(WHAT).c $(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter_g.so
|
---|
67 | $(CC) -g $(FLAGS) $(INCL) $(WHAT).c \
|
---|
68 | $(PERLARCHDIR)/CORE/libperl.so \
|
---|
69 | $(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter_g.so \
|
---|
70 | $(LIBS) \
|
---|
71 | -o lib$(WHAT)_g.so
|
---|
72 |
|
---|
73 | test: all
|
---|
74 | java $(WHAT)
|
---|
75 |
|
---|
76 | install: all
|
---|
77 | cp *.class $(JPL_HOME)/lib
|
---|
78 | cp lib$(WHAT).so $(JPL_HOME)/lib/$(ARCHNAME)
|
---|
79 | cp $(WHAT).pl $(JPL_HOME)/perl
|
---|
80 |
|
---|
81 | clean:
|
---|
82 | rm -f $(WHAT).c $(WHAT).h \
|
---|
83 | $(WHAT)*.class $(WHAT)*.pl lib$(WHAT).so $(WHAT)*.java
|
---|
84 |
|
---|
85 | distclean: clean
|
---|
86 | rm -f Makefile
|
---|
87 |
|
---|
88 | NOSUBS
|
---|
89 |
|
---|
90 | close MAKEFILE;
|
---|