|
From: | Kevin Bowling |
Subject: | Re: [Gnucap-devel] Autotools build system |
Date: | Fri, 19 Jun 2009 19:42:45 -0700 |
User-agent: | Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20090223 Thunderbird/3.0b2 |
On 6/19/2009 6:19 PM, al davis wrote:
I consider choosing which plugins to static link to be something a regular user building the program should be able to do. This is not supported by autotools as far as I know.With a plain Makefile, I would just edit the Makefile to add the files I want to include. On Sunday 14 June 2009, Kevin Bowling wrote:I believe we can set conditionals. For example, in configure.in: AM_CONDITIONAL(STATICPSS, test "$enable_staticpss" = yes) When the user specifies ./configure --enable-staticpss, this variable will be passed to the Makefile. In the plugin directory's Makefile.am (gnucap/plugins/pss): if STATICPSS lib_LIBRARIES = libpss.a libpss_a_SOURCES = pss.cc endif In the main Makefile.am: if STATICPSS gnucap_LDADD += $(top_builddir)/plugins/pss/libpss.a gnucap_CPPFLAGS += -I $(top_builddir)/plugins/pss/pss.h endif This is a bit simplified, but I think a solution using something like this would be elegant. We would need to set defaults for which modules to build, but could also parse --disable-<x> statements to remove core static modules.You can't list the plugins in the main Makefile. You can't know the entire list of possible plugins. This rule applies to the program source too. The core has no listing of what plugins might be used. The only way I can think of to let the user specify what plugins to static link is to let the user explicitly list them, somewhere, or to include a file containing such a list.
Hi Al,I deferred to Diego Pettenò of the Gentoo Linux project (among many others). He is an expert on packaging and building GNU software. He is heavily involved with the Xine project. If you know about multimedia, Codecs are basically plugins that the build file might not know about at runtime, just as you said we need in Gnucap.
Introduction aside, he is publishing a fantastic autotools guide: http://www.flameeyes.eu/autotools-mythbuster/index.html. When I discussed the requirements of Gnucap with him, he did a blog post about plugins vs. builtins for everyone to see: http://blog.flameeyes.eu/2009/06/18/plugins-and-builtins-what-s-the-best.
I don't think your buildsystem is bad by any means, so I asked Diego for advice on choosing how to proceed. He stated essentially "its not about the developers, but rather the distributions" Supporting hundreds of custom build systems must truly be a nightmare. Like it or not, autotools is the de facto system for GNU software.
The average user should be able to simply install Gnucap from their distro of choice (Fedora and Gentoo already do this -- I checked Gentoo and they use the autotools build. I'd bet the SRPMs of Fedora are the same). We make that easier by sticking to the standards.
Again, I don't think there is anything we are doing that can't be handled by autotools. In fact, it should keep things seemless when building across platforms like Mac OS X that do libraries completely differently. I'm interested in improving Gnucap, not handling bizarre build quirks in operating systems I don't care about.
Regards, Kevin Bowling
[Prev in Thread] | Current Thread | [Next in Thread] |