Commit | Line | Data |
---|---|---|
d50cb536 GS |
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"; | |
c529f79d | 17 | } else { |
d50cb536 GS |
18 | $flags = ""; |
19 | $libs = "-lc -lm -ldl"; | |
20 | } | |
c529f79d CB |
21 | |
22 | # Needed for JNI | |
23 | if ($^O eq 'solaris') { | |
24 | $libs .= " -lthread"; | |
25 | } | |
26 | ||
d50cb536 GS |
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 | ||
c529f79d CB |
73 | test: all |
74 | java $(WHAT) | |
d50cb536 GS |
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; |