Using # leaves the comments within the generated configure file, which
is just unnecessary bloat since no one would read the generated
configure file for the documentation of the macros.
This was determined by counting the number of changes to pkg.m4 since
the initial serial number was added. The trailing comment is also
updated to have the version number substituted.
While PKG_PROG_PKG_CONFIG checks the version of pkg-config available at
build time, it doesn't check the version of the pkg-config macros being
used. PKG_PREREQ (like AC_PREREQ or LT_PREREQ) can be used to check the
version of the macros in use when configure is being generated by the
developer.
https://bugs.freedesktop.org/show_bug.cgi?id=89267
Wine outputs the paths with carriage returns, which later breaks
commands they're used in. Hopefully this doesn't break the msys case,
but I think it should be safe enough. Really this needs general handling
of Windows paths instead of ad hoc fixes, but that's for another day.
https://bugs.freedesktop.org/show_bug.cgi?id=66939
Since we unquote variables on printing, we want to quote in before adding
to the database. For all other variables defined in .pc files, we assume
that the user has quoted the variable correctly.
This was broken with the fix for bug 67904, but seems to only affect
Windows builds.
Rather than responding to the pcfiledir variable specially, store it
in the hash table with all the other package specific variables. This
does result in pcfiledir showing up in the --print-variables output.
The goal is for pkgname to hold the name without the trailing ".pc"
extension (according to the meaning of EXT_LEN as used in the
ends_in_dotpc() function). But the malloc is hardcoded as 2. If the
extension were to be changed, the number of characters being strncpy'ed
would not match the size of the target buffer. Instead, the malloc
should use the EXT_LEN token (adjusted for the trailing \0).
Freedesktop #80378 (https://bugs.freedesktop.org/show_bug.cgi?id=80378)
This allows the --debug output to follow the actual order of the
directories specified in the path.
$ PKG_CONFIG_PATH=/nosuch1:/nosuch2:/dir-with-foo.pc
$ pkg-config --debug foo
[...]
Path position of 'foo' is 1
With this change, the path position above would be 3, matching the
position in PKG_CONFIG_PATH.
Freedesktop #80380 (https://bugs.freedesktop.org/show_bug.cgi?id=80380)
Provide developers a way to check their .pc files prior to release. This
works the same as --exists except that package dependencies are not
processed. That allows the .pc file to be checked in complete isolation
of others.
Freedesktop #7000 (https://bugs.freedesktop.org/show_bug.cgi?id=7000)
Automake has a nice parallel test driver available since 1.12 which
became the default in 1.13. Unfortunately, it breaks the pkg-config
testsuite, so we need to ensure the serial test driver is used. On 1.12,
we can specify the option 'serial-tests', but this doesn't exist on
1.11. Kludge around this by detecting if the automake version is less
than 1.12 and leaving the option out in that case.
This is the latest stable release from upstream. Patches have been
refreshed, including putting the removal of most pkg-config checks into
the glib-only patch. A few more files, most notably the large NEWS file,
have also been removed from the repo to keep the size of the snapshot
down.
If a --variable is requested, make sure to remove the quoting since it's
likely the value will be used verbatim in shell command substitution. If
the quotes remain in the value, they'd get embedded in the shell
variable, too.
Freedesktop #67904 (https://bugs.freedesktop.org/show_bug.cgi?id=67904)
pkg-config leaves a trailing space on the flags output as it may have to
do multiple iterations to collect all output and adding the space makes
concatenation simple. However, this leaves a trailing space on the full
returned string unless it's empty. Strip the trailing space after all
the processing is complete.
When pkg-config redefines the .pc file's prefix variable, it will be in
the platform's native format. Convert the expected results as
necessary. This only affects the relocatable test because it explicitly
sets --define-prefix or uses .pc files in a pkgconfig/ directory. Other
tests do not have their prefixes redefined for this reason.
PKG_CHECK_MODULES_STATIC is a convenience autoconf macro wrapping
PKG_CHECK_MODULES with --static enabled. This gives developers a way to
get static linking information from a specific set of modules.
Freedesktop #19541 (https://bugs.freedesktop.org/show_bug.cgi?id=19541)
Normally, the parser will exit immediately when it encounters errors in
.pc files. This is good most of the time, but for --list-all, the
purpose is to just get a quick list of packages and not to validate .pc
files. This is especially the case for pkg-config wrappers such as the
Ruby or Bash completion modules that scrape the output from --list-all
and don't expect to encounter errors there.
Freedesktop #26615 (https://bugs.freedesktop.org/show_bug.cgi?id=26615)
When listing all packages, the purpose is to get a quick look at what's
installed and not to scrutinize the validity of each .pc file. To see
errors from the parser during --list-all, the user can just add
--print-errors.
Upstream rpm has some convenience inline functions for strcmp and the
character class functions. Define some macros here to make our code look
more like upstream despite being the same functionally.
One difference noted while investigating the inline functions in
upstream is that the rpm character class functions are slightly
different from the standard functions. The rpm functions are independent
of locale, unlike the libc routines. pkg-config should probably do the
same and could easily use the g_ascii_is* macros from glib.
strcmp is only guaranteed to return !0 when the strings are unmatched
while rpmvercmp says it will return only -1 or 1 in those cases.
pkg-config currently only checks for !0, so this doesn't actually fix
any issues here. However, this is harmless and helps minimize the diff
with upstream rpmvercmp.
http://rpm.org/gitweb?p=rpm.git;a=commitdiff;h=ee64849e
The rpmvercmp code is taken directly from upstream. Moving it to a
separate file allows it to be diffed and synced easily with the upstream
version. It also becomes really easy to switch to the actual rpmlib
version if that's ever desired.
Exercise the ${pcfiledir} and --define-prefix features for allowing
relocation of packages. The --define-prefix test .pc files are put in a
pkgconfig subdirectory since the feature will only be enabled in that
situation.
Define all the autoconf build directories besides srcdir, which is
required to run the test scripts and set by "make check", and builddir,
which is always assumed to be ".".
The derived variables pcfiledir, pc_top_builddir and pc_sysrootdir were
lacking in documentation. Rework the "QUERYING PKG-CONFIG'S DEFAULTS"
section to describe these and pc_path.
The example of using "pkg-config --modversion pkg-config" was removed
since it's superfluous to "pkg-config --version".
Freedesktop #62018 (https://bugs.freedesktop.org/show_bug.cgi?id=62018)
Allowing pkg-config to override the prefix variable in .pc files is a
useful feature for making packages relocatable. There's nothing Windows
specific about it.
Freedesktop #63602 (https://bugs.freedesktop.org/show_bug.cgi?id=63602)
The prefix redefinition feature on Windows to make packages relocatable
was being confined only to locations where the .pc file was in a
directory ending in lib/pkgconfig or share/pkgconfig. This is too
restrictive as it's quite common for the libdir to have a different name
such as lib64. This keeps the convention that the feature will only be
enabled when the .pc file is in a pkgconfig directory, and it continues
to define the prefix to the grandparent of the pkgconfig directory.
The path handling is switched over to standard glib functions
g_path_get_basename and g_path_get_dirname to avoid handrolled handling
of Windows paths.
Currently the native Win32 builds default to redefining the prefix
variable in .pc files based on their installation paths. This behavior
is not always desired when pkg-config is being used in a traditional
fixed path environment (e.g., /mingw like /usr).
Allow the default to be set via configure switch
--enable/disable-define-prefix, and allow it to be set both ways at
runtime through the --[dont-]define-prefix pkg-config option.
Commit 9bf6277b reworked how Libs arguments are parsed but unfortunately
added an extra library suffix component into -L arguments. This only
affects MSVC syntax where the suffix is .libs. All other platforms use a
blank suffix in linker commands.