autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: generating pc files


From: Peter Johansson
Subject: Re: generating pc files
Date: Wed, 19 Sep 2012 18:01:23 +1000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.7) Gecko/20120825 Thunderbird/10.0.7

On 09/19/2012 05:53 PM, Vincent Torri wrote:
On Wed, Sep 19, 2012 at 9:46 AM, Russ Allbery<address@hidden>  wrote:
Vincent Torri<address@hidden>  writes:

But it seems that several projects use sed in their Makefile.am to use
the value of $libdir, $includedir, etc.. to generate their pc files. So
they have in foo.pc
libdir=${libdir}
So I would like to know the opinion of the autoconf dev about what the
correct way to generate pc file is.
Well, I'm not an Autoconf developer, so feel free to ignore this, but I've
been very happy with the following recipe.  A *.pc.in file that looks
like:

     address@hidden@
     address@hidden@
     address@hidden@
     address@hidden@

     Name:<name>
     Description:<description>
     URL:<url>
     Version: @PACKAGE_VERSION@
     Cflags: -I${includedir}
     Libs: -L${libdir} -l<library>
     Libs.private:<other-libs>

with the<...>  bits replaced with whatever is appropriate for your
library, and then the following in Makefile.am (adjusting file paths
accordingly, of course:

client/libremctl.pc: $(srcdir)/client/libremctl.pc.in
         sed -e 'address@hidden@]!$(prefix)!g'                     \
             -e 'address@hidden@]!$(exec_prefix)!g'           \
             -e 'address@hidden@]!$(includedir)!g'             \
             -e 'address@hidden@]!$(libdir)!g'                     \
             -e 'address@hidden@]!$(PACKAGE_VERSION)!g'   \
             -e 'address@hidden@]!$(GSSAPI_LDFLAGS)!g'     \
             -e 'address@hidden@]!$(GSSAPI_LIBS)!g'           \
             $(srcdir)/client/libremctl.pc.in>  $@
I know that way. I mentioned it (" But it seems that several projects
use sed in their Makefile.am etc..." See above)

My question is : which solution is the correct one, as they obviously
don't give the same result ?


The major difference compared with using AC_CONFIG_FILES is that the sed version allows user to set e.g. prefix at make time.

./configure
make prefix=/opt

will work for Russ's method while it won't work using a simpler AC_CONFIG_FILES approach. Not sure how important that behavior is for you. But I if you care about GCS, I think the behavior is mandated there.

Cheers,
Peter



reply via email to

[Prev in Thread] Current Thread [Next in Thread]