Commit graph

43 commits

Author SHA1 Message Date
Dan Nicholson
3ead3dfb78 Enable Requires and Requires.private for --exists
Prior to pkg-config 0.24, --exists honored Requires and
Requires.private. This was regressed in commits 02d5ae3f and 669bfe2e,
which split the handling of Requires and Requires.private out more
correctly for other options. This adds exists to the group of options
that enable the Requires functionality.

Freedesktop #43149
2012-07-11 05:24:23 -07:00
Dan Nicholson
5345892b8e Always use g_free when allocating memory from glib 2012-05-29 17:17:55 -07:00
LRN
7ac6f32625 Don't use deprecated glib function to construct path on win32
g_win32_get_package_installation_subdirectory() has been deprecated
since GLib 2.18 and in recent (2.31) GLib versions disabled entirely by
default. This patch replaces usage of that function by
g_win32_get_package_installation_directory_of_module() and
g_build_filename(). Use the new functions and rework the code a bit so
it leaks less memory.

g_win32_get_package_installation_directory_of_module() is supported
since GLib 2.16. The minimal GLib version is bumped accordingly.

Freedesktop #45742
2012-05-21 21:08:49 -07:00
Dan Nicholson
b87359cc9b Kill unused result variable
Gets rid of a compiler warning.
2012-05-18 09:44:49 -07:00
Dan Nicholson
e91ab1009a Convert to GOption for command line option parsing
Use glib's GOption instead of popt for command line option
handling. The APIs and output are very similar. A couple minor
differences are:

* The callback for handling --define-variable is associated only with
  that option where popt was just leaving the argument and then it was
  handled in a generic callback.

* Remaining arguments after option parsing are in argc/argv while they
  are collected through poptGetArg with popt.

* GOption does not provide the short --usage summary.

This also works around bugs in the command line option handling with
the ancient internal popt.
2012-05-14 14:19:10 -07:00
Dan Nicholson
a83a14c291 Unify handling of operator and command line option version checking
The code for --exact/atleast/max-version was taking a different path
than the handling of operators like =/>=/<=. Make the long option
versions override the operators and take place during the standard
package checking stage. This also means that --print-errors is
respected.

Fixes Freedesktop #8653
2012-05-10 05:51:35 -07:00
Dieter Verfaillie
79c768aadf Revert "Print out \r\n on windows, not just \n"
This reverts commit 25e8ca84ac. This was
working around a bug with mingw/msys shell which seems to be fixed now.

Freedesktop #17053
2012-05-05 10:49:58 -07:00
Tollef Fog Heen
7c45ef3c84 Drop dead code 2011-05-15 11:05:42 +02:00
Johannes Schmid
d690466af4 Add --print-provides and --print-requires(-private) options
These are useful for applications that need to query the pkg-config
database, e.g.  managers or IDEs.
2010-05-10 20:02:53 +02:00
Dan Nicholson
aa4634eb31 Move popt to subdirectory and make a convenience library of it
This keeps a cleaner separation of the pkg-config sources and the
imported popt sources.
2010-05-09 10:22:02 +02:00
Jorn Amundsen
4b80e49ff8 Add listing of variables
Fixes Freedesktop #133
2010-05-09 09:49:13 +02:00
Tollef Fog Heen
25e8ca84ac Print out \r\n on windows, not just \n
This should hopefully fix bug #17053
2009-12-06 22:34:35 +01:00
Tollef Fog Heen
e04ee5a1b8 Fix up help for --silence-errors
Bug #8616
2009-12-06 22:28:30 +01:00
Tollef Fog Heen
0ff14c5ba8 Reduce the width of arguments
This makes the --help output flow easier and look better.
2009-12-06 22:28:08 +01:00
Tollef Fog Heen
39663612a6 2009-06-12 Tor Lillqvist <tml@iki.fi>
* parse.c: On Win32, if the value of a a variable other than the
	"prefix" one starts with the non-overridden value of "prefix",
	then replace that prefix, too, with the run-time one.

	To avoid shadowing warnings, rename a 'p' variable to 'q'.

	* pkg-config.1: Corresponding update.

	* main.c
	* pkg.h: Move the Win32 redefinition of PKG_CONFIG_PC_PATH from
	main.c to pkg.h as it now is needed in pkg.c, too.
2009-06-30 03:47:01 +02:00
Tollef Fog Heen
669bfe2e0d 2009-03-30 Tollef Fog Heen <tfheen@err.no>
* pkg.[ch], main.c, check/check-missing: Don't recurse Requires at
	all unless we need to.  Add check.  Again, thanks to Loïc Minier
	for most of the idea and the implementation.
2009-03-30 20:49:17 +02:00
Tollef Fog Heen
02d5ae3fb6 2009-03-30 Tollef Fog Heen <tfheen@err.no>
* pkg.[ch], parse.[ch], main.c, check/Makefile.am,
	check/check-missing, check/missing-requires-private.pc:
	Skip Requires.private unless we need to look at them for cflags.
	Add test case.  Thanks to Loïc Minier for most of the idea and the
	implementation.  Debian #475031
2009-03-30 20:40:53 +02:00
Tollef Fog Heen
5998a08da4 2008-04-28 Tollef Fog Heen <tfheen@err.no>
* main.c (main): Make sure log is initialized to prevent
	segfaults.
2008-04-28 20:58:36 +02:00
Tollef Fog Heen
cebb308ce4 2008-03-23 Tollef Fog Heen <tfheen@err.no>
* main.c (main): Add logging support from NetBSD.  Thanks to Julio
       M. Merino Vidal for forwarding the patch from ages ago.
2008-03-23 20:51:50 +01:00
Tollef Fog Heen
dce0339076 2008-02-19 Tor Lillqvist <tml@novell.com>
* main.c: Remove the possibility to have a default PKG_CONFIG_PATH
	in the Registry. It is much more flexible to just use environment
	variables. In general the Registry is not used in the ports of
	GTK+ or GNOME libraries and software to Windows.

	* parse.c (parse_line): On Windows, handle also .pc files found in
	a share/pkgconfig folder when automatically redefining a prefix
	variable for the package.

	* pkg-config.1: Corresponding changes.

2008-02-18  Tor Lillqvist  <tml@novell.com>

	* main.c: Fix some bitrot: On Windows, don't use the compile-time
	PKG_CONFIG_PC_PATH, but deduce a default one at run-time based on
	the location of the executable. This was originally what
	pkg-config did on Windows, but it had bit-rotted.
2008-03-23 20:00:00 +01:00
Tollef Fog Heen
89932ecfcf 2008-03-23 Tollef Fog Heen <tfheen@err.no>
* main.c (main): Fix small portability problem by defining all the
	variables in main that are used in the static initialiser as
	static variables.  This makes the IRIX/mipseb compiler happier.
	Thanks to Roland Illig of NetBSD for the patch.  This doesn't
	apply to some of the Win32 variables, but I don't believe that is
	a problem with the existing compilers there.
2008-03-23 17:34:33 +01:00
Tollef Fog Heen
ed75a7dd4b 2008-01-16 Tollef Fog Heen <tfheen@err.no>
* pkg.h, pkg.c (string_list_to_string), pkg-config.1, main.c
             (main): Add sysroot support and document same.  Triggered by
             setting PKG_CONFIG_SYSROOT_DIR in the environment.
2008-01-16 23:10:25 +01:00
Tollef Fog Heen
69f5752d7d 2006-08-16 Tollef Fog Heen <tfheen@err.no>
* main.c (main): Always add the elements from PKG_CONFIG_PATH.
	Freedesktop #4795.
2006-08-16 19:57:14 +02:00
Tollef Fog Heen
3f5c1fa1b6 Try to print out all the errors and not just the first.
2005-10-16  Tollef Fog Heen  <tfheen@err.no>

	* main.c (main): Try to print out all the errors and not just the
	first.
2005-10-16 18:06:02 +00:00
Tollef Fog Heen
ec5f06d60f Add --short-errors
2005-10-16  Tollef Fog Heen  <tfheen@err.no>

	* pkg.c (get_package_quiet): Add get_package_quiet which is just
	the same as get_package except it sets warn to false.

	* pkg.h: Add prototype for get_package_quiet.

	* main.c (main): Add --short-errors flag to suppress most of the
	output when a module is not found.
2005-10-16 17:31:41 +00:00
Arch Librarian
20d118d57a 2005-05-21 Tollef Fog Heen <tfheen@err.no>
Author: tfheen
Date: 2005-05-21 09:14:47 GMT
2005-05-21  Tollef Fog Heen  <tfheen@err.no>

    * check/check-libs-private: New test to check for support for
    private libraries.

    * check/simple.pc (prefix): Add Libs.private header.

    * check/Makefile.am (TESTS): Add check-libs-private test

    * pkg.h: Adjust function prototypes.

    * pkg.c: Add global ignore_private_libs variable.
    (scan_dir): Use the correct free function.  Stop leaking file
    descriptors.
    (package_get_l_libs, packages_get_l_libs, package_get_L_libs,
    packages_get_L_libs): Stop the recursive silliness and go back to
    old behaviour.
    (packages_get_all_libs): Adjust parameters to packages_get_*_libs
    (enable_private_libs, disable_private_libs): Trivial helper
    functions.

    * pkg-config.1: Update documentation wrt search path (Debian
    #308942), update docs for Libs.private and add the problematic
    handling of mixing = and non-= arguments to the bugs section.

    * parse.h: Adjust parameters for parse_package_file to get private
    libs or not.

    * parse.c (trim_and_sub): Fix memory leak.
    (_do_parse_libs): New function including what's common between
    parse_libs and parse_private_libs.
    (parse_libs_private): New function.  Handle private libraries.
    (parse_line): Add . to the list of valid characters in headers (so
    Libs.private works correctly.
    (parse_line): Fix memory leaks.
    (parse_line): Handle Libs.private.
    (parse_package_file): Fix memory leak.

    * main.c (main): Fix memory leak.

    * NEWS: Document changes to inter-library handling.

    * main.c (main): Handle inter-library dependencies old-style, but
    do private libraries too.  Adjust parameters to
    packages_get_*_libs.

    * configure.in: Change comment wrt inter-library handling to talk
    about private libraries instead.
2005-07-14 13:07:18 +00:00
Arch Librarian
c22e6a1838 2005-04-22 Tollef Fog Heen <tfheen@err.no>
Author: tfheen
Date: 2005-04-22 00:19:24 GMT
2005-04-22  Tollef Fog Heen  <tfheen@err.no>

    * main.c (main): Re-add PKG_CONFIG_LIBDIR support which was
    removed by mistake.
2005-07-14 13:07:11 +00:00
Arch Librarian
986e4ebb03 2005-04-01 Tollef Fog Heen <tfheen@err.no>
Author: tfheen
Date: 2005-04-01 21:46:07 GMT
2005-04-01  Tollef Fog Heen  <tfheen@err.no>

    * configure.in: Try to detect whether this architecture supports
    inter-library dependencies.  If so, we default to assuming that
    this support is used and link to the minimal set of libraries
    rather than traversing the full depends set.

    * main.c (main): Only recurse if we want a static library list or
    if this architecture doesn't support inter-library dependencies.
    This will probably expose bugs for libraries which declare
    dependencies in their .pc files but don't actually link against
    each other.

    * pkg.c (packages_get_all_libs): Add recurse option
    (packages_get_L_libs): Add recurse option
    (package_get_L_libs): Add recurse option
    (packages_get_l_libs): Add recurse option
    (package_get_l_libs): Add recurse option

    * pkg.h: Update prototypes to handle the recurse option.
2005-07-14 13:06:42 +00:00
Arch Librarian
d2080ec6d8 2005-03-18 Tollef Fog Heen <tfheen@err.no>
Author: tfheen
Date: 2005-03-26 14:59:26 GMT
 2005-03-18  Tollef Fog Heen  <tfheen@err.no>

       * main.c (main): Use add_search_dirs for both the compile-time
       defined pc_path and the run-time defined PKG_CONFIG_PATH.

       * pkg.h: Add prototype for add_search_dirs.

       * pkg.c (add_search_dirs): Add new function which takes a
       delimiter-separated list as input and add_search_dir's it.
       (package_init): Remove knowledge about which dirs should be
       initially added.  Moved this to main.c(main)

       * ChangeLog: Add emacs variables to set the date to this
       ChangeLog's standard format

       * Makefile.am (INCLUDES): Pass PKG_CONFIG_PCPATH on to main.c

       * configure.in: Add --with-pc-path to define the default search
       path for .pc files.  (Freedesktop #119, #648)
2005-07-14 13:06:23 +00:00
Arch Librarian
971b0cd7c6 Unstaticify variables. (Freedesktop #2459)
Author: tfheen
Date: 2005-02-21 06:46:31 GMT
Unstaticify variables.  (Freedesktop #2459)
2005-07-14 13:06:06 +00:00
Arch Librarian
72b5088eae Obvious fix:
Author: jamesh
Date: 2003-02-22 07:04:02 GMT
Obvious fix:

2003-02-22  James Henstridge  <james@daa.com.au>

    * pkg.h: add missing prototype.

    * main.c (main): print the url if the package is too old, to match
    the output of verify_package().
2005-07-14 13:05:51 +00:00
Arch Librarian
7207c289d8 2003-02-15 Havoc Pennington <hp@pobox.com>
Author: hp
Date: 2003-02-15 15:04:07 GMT
2003-02-15  Havoc Pennington  <hp@pobox.com>

	Fixes suggested by Werner Trobin

	* main.c (verbose_error): honor --errors-to-stdout and flush
	the same stream we write to

	* parse.c (parse_url): support an "url" field so if someone
	has a .pc file they can figure out where to go for newer
	versions and such
2005-07-14 13:05:41 +00:00
Arch Librarian
1a2fa277bd Adding --libs-only-other and --cflags-only-other arguments.
Author: zack
Date: 2003-01-02 03:56:26 GMT
Adding --libs-only-other and --cflags-only-other arguments.
2005-07-14 13:05:34 +00:00
Arch Librarian
e3b14fd5e8 add copyright notices to files
Author: hp
Date: 2002-09-06 19:32:18 GMT
add copyright notices to files
2005-07-14 13:05:14 +00:00
Arch Librarian
d192f98006 2002-02-01 Havoc Pennington <hp@redhat.com>
Author: hp
Date: 2002-02-01 22:24:24 GMT
2002-02-01  Havoc Pennington  <hp@redhat.com>

        Throughout: cast chars to guchar before passing to isspace, etc.,
	noted by Morten Welinder

	* pkg.c (verify_package): actually strip system -I/-L out of the
	cflags/libs, unless you set an environment variable asking to
	leave them in.
2005-07-14 13:04:51 +00:00
Arch Librarian
b890f705eb 2001-10-27 Tor Lillqvist <tml@iki.fi>
Author: tml
Date: 2001-10-27 17:55:11 GMT
2001-10-27  Tor Lillqvist  <tml@iki.fi>

	New Win32 feature to make pkg-config useful for users of MSVC:
	with the flag --msvc-syntax, munge -L and -l flags appropriately
	for the MSVC command-line compiler. (-I flags are the same.)

	* README.win32: Update.

	* main.c (main): Add --msvc-syntax flag.

	* pkg-config.1: Document it.

	* pkg.h: Declare msvc_syntax.

	* parse.c (parse_libs): Obey msvc_syntax.
2005-07-14 13:04:41 +00:00
Arch Librarian
d86ec30f0a 2001-10-25 Tor Lillqvist <tml@iki.fi>
Author: tml
Date: 2001-10-24 21:22:33 GMT
2001-10-25  Tor Lillqvist  <tml@iki.fi>

	Improve Windows behaviour: Make it even easier to install
	developer packages in random locations, without having to modify
	the .pc files. Don't set "prefix" globally, instead override it
	for each .pc file parsed, if the path where the .pc file is seems
	to be the standard .../lib/pkgconfig.

	* main.c (main): Add search directories also from two Registry
	keys, in addition to the PKG_CONFIG_PATH environment
	variable. Don't define prefix globally.

	* parse.c (parse_line): Instead, if a .pc file is in
	/foo/bar/lib/pkgconfig, define prefix as /foo/bar for that package
	only.

	* pkg.c: Case-fold file names on Windows, in case they have been
	uppercasified by some tool.

	* pkg-config.1: Document Windows behaviour.
2005-07-14 13:04:37 +00:00
Arch Librarian
1f90ccce9a 2001-10-21 Tor Lillqvist <tml@iki.fi>
Author: tml
Date: 2001-10-21 17:23:14 GMT
2001-10-21  Tor Lillqvist  <tml@iki.fi>

	* main.c (main): (Win32): Add option --prefix-variable in case the
	variable used in a .pc file as "prefix" isn't called
	"prefix".

	* pkg-config.1: Document it.
2005-07-14 13:04:32 +00:00
Arch Librarian
1aa1db96e5 2001-10-19 Tor Lillqvist <tml@iki.fi>
Author: tml
Date: 2001-10-18 22:39:22 GMT
2001-10-19  Tor Lillqvist  <tml@iki.fi>

	* main.c: (Win32): Add option --dont-define-prefix on Windows. The
	option prevents pkg-config from automatically defining an
	overriding value for the "prefix" variable.

	Unless this option is used, set "prefix" to pkg-config's
	installation directory, i.e. assume that the packages whose
	configuration files are found in the same tree where
	pkg-config.exe itself is, also have been configured to use the
	same prefix. This means that a typical "developer package"
	containg a subtree of headers, libraries, etc, including .pc
	files, can be installed in any random location. As long as
	pkg-config.exe is installed the same tree, things just should
	work.

	* pkg-config.1: Document it.
2005-07-14 13:04:31 +00:00
Arch Librarian
1aaee14cab 2001-09-30 Tor Lillqvist <tml@iki.fi>
Author: tml
Date: 2001-09-29 21:05:25 GMT
2001-09-30  Tor Lillqvist  <tml@iki.fi>

	Changes for "pure" Win32 (without Cygwin or similar)
	support. The most important differences compared to pkg-config
	on Unix are:

	We don't use hardcoded PKGLIBDIR paths but deduce the
	installation prefix at runtime.

	Use the normal GLib DLL, not a private copy. Yes, this does
	introduce a circular dependency, but that can be worked around.

	* README.win32: New file.

	* configure.in: Check for Win32. If so, define USE_INSTALLED_GLIB,
	and don't configure in the included glib-1.2.8. Set GLIB_CFLAGS
	and GLIB_LIBS assuming that GLib is installed in the same location
	pkgconfig will be. Check for dirent.h, unistd.h and sys/wait.h
	headers.

	* Makefile.am: If USE_INSTALLED_GLIB, use the GLIB_* values set
	above, and don't make in the glib-1.2.8 subdir.

	* autogen.sh: Use perl -p -i.bak, works better on Win32 (and Cygwin).

	* *.c: Conditionalize inclusions of unistd.h and sys/wait.h.

	* findme.c: Define X_OK on Win32 if necessary.

	* parse.c
	* popthelp.c: Minor Win32 portability ifdefs.

	* parse.c: No need to include <windows.h>.

	* pkg.c: Don't hardcode PKGLIBDIR, but use
	g_win32_get_package_installation_directory() to deduce it.
	(scan_dir): Make a temp copy of dirname with potential superfluous
	trailing slash removed. The Win32 opendir implementation doesn't
	always like those.

	* pkg.h: If USE_INSTALLED_GLIB, include <glib.h> instead of
	partial-glib.h.

	* popt.c (execCommand): Don't compile on Win32.

	* poptconfig.c (configLine): Don't bother with the "exec" stuff on
	Win32, too complex to port, at least for now.
	(poptReadDefaultConfig) Don't bother compiling on Win32, this
	function isn't even called.
2005-07-14 13:04:29 +00:00
Arch Librarian
e7323695df 2001-07-11 Havoc Pennington <hp@pobox.com>
Author: hp
Date: 2001-07-10 22:51:39 GMT
2001-07-11  Havoc Pennington  <hp@pobox.com>

	* parse.c (parse_cflags): fix failure to put space between cflags,
	reported by Chema
	(parse_line): allow spelling Cflags as CFlags, pointed out by Tim
	(get_compat_package): support legacy script gnome-vfs-config for
	package name "libgnomevfs"
2005-07-14 13:04:19 +00:00
Arch Librarian
1dd0d3d262 2001-06-05 Havoc Pennington <hp@redhat.com>
Author: hp
Date: 2001-06-05 18:41:27 GMT
2001-06-05  Havoc Pennington  <hp@redhat.com>

	* main.c: add --errors-to-stdout so you can capture them with backticks

	* pkg.m4: set FOO_PKG_ERRORS after a failed check, so people can
	print the errors.
2005-07-14 13:04:10 +00:00
Arch Librarian
2ac96cbcc7 import
Author: hp
Date: 2001-06-05 16:39:09 GMT
import
2005-07-14 13:04:01 +00:00