From: Rafael L. <rla...@us...> - 2003-12-31 16:14:22
|
Since pkg-config is so a elegant and useful tool and since pkg-config support in PLplot is doing pretty well, I decided that it is time to start advertising its use. The best way to do this is to show how to use it in the Makefile.examples. Of course, we cannot impose this to all users, since some of them may not have pkg-config installed in their systems. I decided then to go for a principled approach. I have a working implementation here and if nobody objects, I will cvs commit the changes. In general terms this is how it works: - Makefile.examples will now be under Automake control. This means that Makefile.examples.in are removed from the CVS repository and replaced by Makefile.examples.am. The Makefile.examples.in are automatically generated by bootstrap.sh (no change to the script was needed for that). - In the Makefile.examples.am, the rule to build the examples will look like this: .c$(EXEEXT): if have_pkg_config $(CC) $< -o $@ `pkg-config --cflags --libs plplot$(LIB_TAG)` else plplot_libtool --mode=link $(CC) $(CFLAGS) $< $(INCLUDEANDLIB) -o $@ endif - The AM_CONDITIONAL have_pkg_config is exercised in configure.ac and will be "true" when the pkg-config program is found in the system. Also, there is a configure option --without-pkg-config (or --with-pkg-config=no) that will disable the use of pkg-config and fallback to plplot_libtool. What do you think? -- Rafael |
From: Alan W. I. <ai...@us...> - 2003-12-31 18:49:22
|
On 2003-12-31 17:10+0100 Rafael Laboissiere wrote: > Since pkg-config is so a elegant and useful tool and since pkg-config > support in PLplot is doing pretty well, I decided that it is time to start > advertising its use. [...] > I decided then to go for a principled approach. [...] > What do you think? Sounds fine. Nobody likes the huge size and impenetrability of the configured libtool script that is copied to plplot_libtool. Nevertheless, plplot_libtool has always produced reliable results so it is good that you are using it as a backup in case your new vastly simplified method of doing the same task fails. And forcing users to opt-out of your new approach to use plplot_libtool is okay with me as well since that is the only way your new approach will get thoroughly tested. In sum, go for it! Alan __________________________ Alan W. Irwin email: ir...@be... phone: 250-727-2902 Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the PLplot scientific plotting software package (plplot.org), the Yorick front-end to PLplot (yplot.sf.net), the Loads of Linux Links project (loll.sf.net), and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |
From: Rafael L. <rla...@us...> - 2004-01-01 18:09:13
|
* Alan W. Irwin <ai...@us...> [2003-12-31 10:49]: > Sounds fine. Nobody likes the huge size and impenetrability of the > configured libtool script that is copied to plplot_libtool. Nevertheless, > plplot_libtool has always produced reliable results so it is good that you > are using it as a backup in case your new vastly simplified method of doing > the same task fails. With my last cvs commit, I am pleased to see now: $ cd examples/c $ make -f Makefile.examples x01c gcc x01c.c -o x01c `pkg-config --cflags --libs plplotd` $ cd ../c++ $ make -f Makefile.examples x01 g++ x01.cc -o x01 `pkg-config --cflags --libs plplotd-c++` $ cd ../f77 $ make -f Makefile.examples x01f g77 x01f.f -o x01f `pkg-config --cflags --libs plplotd-f77` The main problem with the plplot_libtool approach is that it hijacks the whole command line. Although this is okay for users compiling programs linking against just libplplot, it is unacceptable for larger projects, where PLplot is just one of the linking libraries. To see how the pkg-config approach is appropriate, imagine that the user have a program that must be linked against PLplot, libfoo, and libbar. She will do: gcc prog.c -o prog \ `pkg-config --cflags --libs plplotd` \ `pkg-config --cflags --libs foo` \ `pkg-config --cflags --libs bar` How could that be done if each library provides its own *_libtool script (foo_libtool, bar_libtool, and plplot_libtool)? > And forcing users to opt-out of your new approach to use plplot_libtool is > okay with me as well since that is the only way your new approach will get > thoroughly tested. The users can always force the old behavior by calling ./configure --without-pkg-config, even if the pkg-config is available in the system. -- Rafael |