On Fri, 2008-03-28 at 21:06 -0300, Felipe Sateler wrote: > Helmut Grohne wrote: > >> Why is my library architecture-dependent? How can I make it > >> architecture-independent, assuming the source code doesn't care about the > >> architecture (I don't think a printf should be a problem)?
Take a look at /usr/share/pkgconfig/ - the pc files in there are icon
themes, mime data, doc preparation - those are the only things that
should have .pc files in /usr/share, basically build tools and system
data, not compiled libraries.
The packaged library (libfoo.so) must be architecture-dependent and
therefore the .pc file needs to be in /usr/lib/ with all the other
library .pc files.
If this is unclear, maybe you should not be packaging a library in the
first place as shared library packages are always more complex than a
typical application package.
> I'd say that in pretty much all non-trivial libraries the pc file is
> system-dependant, so I would go with /usr/lib by default even if in your case
> the pkgconfig file is trivial.
Most .pc files are trivial - they must be complete, that's the main
point.
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
...
That may look like a template but there are various modes that will need
each and all of those to be specified in full. One or two packages seem
to think that these are expendable - they are *not*. The shortest a .pc
file can get would be:
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: foo
Description: foo Library.
Version: 0.7.5
Requires: glib-2.0
Requires.private: bar
Libs: -L${libdir} -lfoo
Libs.private: -lm
Cflags: -I${includedir}/foo
Requires.private and Libs.private should be used wherever possible.
--
Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/
signature.asc
Description: This is a digitally signed message part

