From: Rafael L. <rla...@us...> - 2004-07-13 06:46:06
|
* Alan W. Irwin <ir...@be...> [2004-07-11 15:06]: > On 2004-07-11 21:14+0200 Rafael Laboissiere wrote: > > > (1) I think that the make code for generating the plplot.jar file should be > > in bindings/java/Makefile.am instead of examples/java/Makefile.am. > > > (2) Instead of using install-data-hook for generating plplot.jar, it is > > better to use the automake machinery for that. In particular, it is > > interesting to make plplot.jar depend on $(javaclasses). > > Please don't do (1). Both core and examples should be in the jar file so > that it is self-contained with every aspect (both *.java files and *.class > files) of our interface and examples included (aside from the dynamically > loaded shared object wrapper and the libplplot library it requires.) Oh, I failed to notice that the examples classes were also included in the jar file. Note taken. > The proper way to put both our interface and examples in the jar file is > create the jar file in bindings with jar -c, and append to it in examples > with jar -u, but for the fastjar version of jar, the -u option is disabled. > So to work around this limitation you have to do only one jar -c, and since > examples are treated later than bindings, that is where we chose to do that > one jar -c execution that is available to us. I commented about this > already in examples/java/Makefile.am. > > # Note the java package is actually assembled in the java bindings > directory. > # Fastjar doesn't update packages properly so we need to do it all in one > go. > > Perhaps you may want to rewrite that comment to make it a bit more clear. Yes, the comment is not clear enough and should be rewritten. > I think this jar limitation also means you should not do (2) since probably > the automake machinery is not aware of the limitation in fastjar. > > I see nothing wrong with the rest of your ideas (although I haven't looked > in detail) so I suggest go ahead and make that part of the commit, but I > would avoid (1) and (2) for the reasons I have mentioned. I reworked my solution add propose a new patch, attached below. It addresses all the issues that I mentioned before, but the building of the plplot.jar file is now in examples/java, using a Makefile rule instead of the previous install-hook. In bindings/java, there is now a noinst_DATA target called jar-stamp, which is an empty file, dependent on the *.class files. It is used in examples/java/Makefile.am as a dependency to plplot.jar. As before, this patch eliminates the non-portable pattern rule and created AC_SUBST variables for the java and jar commands. Comments are welcome. -- Rafael |