Find a file
Oneric bb8f1b7b91 Add Cflags.private field
Those Cflags will be added if linking statically against a library;
this is necessary if the public headers need to be mutated depending on
linkage mode. Eg on Microsoft Windows varaibles whose definition resides
in a shared library need to be declared with a special attribute;
if linked to statically this attribute must not be used.

With Cflags.private their headers can eg check if 'LIBRARYNAME_STATIC'
is not defined to know that the special attribute is needed; without it
everyone linking against the library will need to manually research what
the expected macro is and set it depending on linkage mode.

This field is also supported by pkgconf since version 0.9.3 and
already used by (some) affected libraries targeting Microsoft Windows.

Note that _do_parse_cflags always adds the flags to pkg->cflags
and there is no pkg->cflags_private; instead the call to
parse_cflags_private is conditional. This matches the
existing implementation of Libs.private.

Closes: https://gitlab.freedesktop.org/pkg-config/pkg-config/-/issues/38
2021-09-30 19:02:01 +02:00
check Add Cflags.private field 2021-09-30 19:02:01 +02:00
glib glib: Fix bundled build with GCC 6 2017-03-20 06:01:57 -05:00
glib-patches glib: Fix bundled build with GCC 6 2017-03-20 06:01:57 -05:00
.gitignore Ignore automake's compile wrapper 2017-03-20 10:05:16 -05:00
AUTHORS 2005-03-26 Tollef Fog Heen <tfheen@err.no> 2005-07-14 13:06:24 +00:00
autogen.sh autogen: consider configure error 2016-08-22 15:08:43 -07:00
ChangeLog Mark Changelog as no longer kept up to date. 2010-05-08 22:16:12 +02:00
config.h.win32.in build: Add a pre-configure config.h template for MSVC builds 2015-10-26 09:16:27 -07:00
configure.ac Update URL for bug reporting 2021-01-24 20:42:36 +01:00
COPYING Add COPYING files to give general licensing terms 2010-05-27 21:40:47 +02:00
detectenv-msvc.mak build: Add NMake makefiles for Visual Studio builds 2015-10-26 09:16:56 -07:00
main.c Add Cflags.private field 2021-09-30 19:02:01 +02:00
Makefile.am build: Add NMake makefiles for Visual Studio builds 2015-10-26 09:16:56 -07:00
Makefile.sources build: Split Out Source Listing 2015-10-26 09:15:53 -07:00
Makefile.vc build: Add NMake makefiles for Visual Studio builds 2015-10-26 09:16:56 -07:00
NEWS Fix spelling of rra's name 2020-04-21 20:50:40 +02:00
parse.c Add Cflags.private field 2021-09-30 19:02:01 +02:00
parse.h Add Cflags.private field 2021-09-30 19:02:01 +02:00
pkg-config-guide.html Add Cflags.private field 2021-09-30 19:02:01 +02:00
pkg-config.1 Add Cflags.private field 2021-09-30 19:02:01 +02:00
pkg.c Add Cflags.private field 2021-09-30 19:02:01 +02:00
pkg.h Add Cflags.private field 2021-09-30 19:02:01 +02:00
pkg.m4.in Spelling and grammar in pkg.m4 2020-04-21 20:52:02 +02:00
README Use https for developer.gnome.org URL 2020-04-21 20:49:00 +02:00
README.win32 README.win32: Add info on building with MSVC 2015-10-28 08:39:10 -07:00
rpmvercmp.c rpmvercmp: Use helper macros to match upstream code better 2013-05-17 05:36:12 -07:00
rpmvercmp.h Split rpmvercmp code into separate file 2013-05-17 05:36:12 -07:00

pkg-config is a script to make putting together all the build
flags when compiling/linking a lot easier.

Report bugs at https://gitlab.freedesktop.org/pkg-config/pkg-config/-/issues

To use pkg-config, do something like the following in your configure.ac

    PKG_CHECK_MODULES([GNOME], [gtk > 1.2.8 gnomeui >= 1.2.0])

This puts the neccesary include flags to compile/link something against
libgnomeui and all its dependencies in $(GNOME_CFLAGS), and the -L/-l flags
for linking in $(GNOME_LIBS).

Users can define the PKG_CONFIG environment variable to point at the
right one, or if they cross-compile and have a correctly named pkg-config
(eg. arm-linux-pkg-config) in their PATH that will be used in preference.

Users can also define the GNOME_CFLAGS and GNOME_LIBS environment variables
if they think they know better, pkg-config will not be called if they do
that.

The "gtk > 1.2.8" part is only neccesary if you want to specifically check
if libgtk is version 1.2.8 or higher. Otherwise, the flags for gtk
will be included automatically, since libgnomeui depends on gtk.
So you could just say:

     PKG_CHECK_MODULES([GNOME], [gnomeui])

for any version of gnomeui.

For more info, there's even a man page, try 'man pkg-config'

Building
========
pkg-config depends on glib.  Note that glib build-depends on pkg-config,
but you can just set the corresponding environment variables (ZLIB_LIBS,
ZLIB_CFLAGS are the only needed ones when this is written) to build it.

pkg-config also either needs an earlier version of itself to find glib
or you need to set GLIB_CFLAGS and GLIB_LIBS to the correct values for
where it's installed in your system.

If this requirement is too cumbersome, a bundled copy of a recent glib
stable release is included. Pass --with-internal-glib to configure to
use this copy.

If you're cross-compiling and you need to build the bundled glib, refer
to the glib documentation for cross-compiling glib. In short, this will
require setting some autoconf cache variables in cases where glib would
need to run a program to determine the correct value. See the glib
documentation:

https://developer.gnome.org/glib/stable/glib-cross-compiling.html

If you need to use the bundled glib on Mac OS X, you'll most likely need
to build for a single architecture rather than as a universal binary.
This is because glib (as of version 2.32) does not support building for
multiple architectures out of the box. The glib2 from MacPorts or
Homebrew may be available as a universal binary and usable for
pkg-config as described above. Nothing in pkg-config itself precludes
being built as a universal binary.