forked from ariadne/pkgconf
main: if PKG_CONFIG_FDO_SYSROOT_RULES is set, or DESTDIR matches PKG_CONFIG_SYSROOT_DIRS, disable the automatic sysroot rewriting
Closes #205.master
parent
b6c8f6fb0a
commit
fd1b8ccca6
13
cli/main.c
13
cli/main.c
|
@ -1015,6 +1015,9 @@ main(int argc, char *argv[])
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (getenv("PKG_CONFIG_FDO_SYSROOT_RULES"))
|
||||||
|
want_client_flags |= PKGCONF_PKG_PKGF_FDO_SYSROOT_RULES;
|
||||||
|
|
||||||
if ((want_flags & PKG_SHORT_ERRORS) == PKG_SHORT_ERRORS)
|
if ((want_flags & PKG_SHORT_ERRORS) == PKG_SHORT_ERRORS)
|
||||||
want_client_flags |= PKGCONF_PKG_PKGF_SIMPLIFY_ERRORS;
|
want_client_flags |= PKGCONF_PKG_PKGF_SIMPLIFY_ERRORS;
|
||||||
|
|
||||||
|
@ -1101,8 +1104,18 @@ main(int argc, char *argv[])
|
||||||
pkgconf_client_set_buildroot_dir(&pkg_client, builddir);
|
pkgconf_client_set_buildroot_dir(&pkg_client, builddir);
|
||||||
|
|
||||||
if ((sysroot_dir = getenv("PKG_CONFIG_SYSROOT_DIR")) != NULL)
|
if ((sysroot_dir = getenv("PKG_CONFIG_SYSROOT_DIR")) != NULL)
|
||||||
|
{
|
||||||
|
const char *destdir;
|
||||||
|
|
||||||
pkgconf_client_set_sysroot_dir(&pkg_client, sysroot_dir);
|
pkgconf_client_set_sysroot_dir(&pkg_client, sysroot_dir);
|
||||||
|
|
||||||
|
if ((destdir = getenv("DESTDIR")) != NULL)
|
||||||
|
{
|
||||||
|
if (!strcmp(destdir, sysroot_dir))
|
||||||
|
want_client_flags |= PKGCONF_PKG_PKGF_FDO_SYSROOT_RULES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* we have determined what features we want most likely. in some cases, we override later. */
|
/* we have determined what features we want most likely. in some cases, we override later. */
|
||||||
pkgconf_client_set_flags(&pkg_client, want_client_flags);
|
pkgconf_client_set_flags(&pkg_client, want_client_flags);
|
||||||
|
|
||||||
|
|
|
@ -251,6 +251,7 @@ PKGCONF_API pkgconf_cross_personality_t *pkgconf_cross_personality_find(const ch
|
||||||
#define PKGCONF_PKG_PKGF_SIMPLIFY_ERRORS 0x1000
|
#define PKGCONF_PKG_PKGF_SIMPLIFY_ERRORS 0x1000
|
||||||
#define PKGCONF_PKG_PKGF_DONT_FILTER_INTERNAL_CFLAGS 0x2000
|
#define PKGCONF_PKG_PKGF_DONT_FILTER_INTERNAL_CFLAGS 0x2000
|
||||||
#define PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS 0x4000
|
#define PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS 0x4000
|
||||||
|
#define PKGCONF_PKG_PKGF_FDO_SYSROOT_RULES 0x8000
|
||||||
|
|
||||||
#define PKGCONF_PKG_DEPF_INTERNAL 0x1
|
#define PKGCONF_PKG_DEPF_INTERNAL 0x1
|
||||||
|
|
||||||
|
|
|
@ -254,8 +254,11 @@ pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const
|
||||||
const char *ptr;
|
const char *ptr;
|
||||||
char *bptr = buf;
|
char *bptr = buf;
|
||||||
|
|
||||||
if (*value == '/' && client->sysroot_dir != NULL && strncmp(value, client->sysroot_dir, strlen(client->sysroot_dir)))
|
if (!(client->flags & PKGCONF_PKG_PKGF_FDO_SYSROOT_RULES))
|
||||||
bptr += pkgconf_strlcpy(buf, client->sysroot_dir, sizeof buf);
|
{
|
||||||
|
if (*value == '/' && client->sysroot_dir != NULL && strncmp(value, client->sysroot_dir, strlen(client->sysroot_dir)))
|
||||||
|
bptr += pkgconf_strlcpy(buf, client->sysroot_dir, sizeof buf);
|
||||||
|
}
|
||||||
|
|
||||||
for (ptr = value; *ptr != '\0' && bptr - buf < PKGCONF_BUFSIZE; ptr++)
|
for (ptr = value; *ptr != '\0' && bptr - buf < PKGCONF_BUFSIZE; ptr++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -213,6 +213,10 @@ The format of the debug log messages is implementation-specific.
|
||||||
If set, disables the path relocation feature.
|
If set, disables the path relocation feature.
|
||||||
.It Va PKG_CONFIG_MSVC_SYNTAX
|
.It Va PKG_CONFIG_MSVC_SYNTAX
|
||||||
If set, uses MSVC syntax for fragments.
|
If set, uses MSVC syntax for fragments.
|
||||||
|
.It Va PKG_CONFIG_FDO_SYSROOT_RULES
|
||||||
|
If set, follow the sysroot prefixing rules that freedesktop.org pkg-config uses.
|
||||||
|
.It Va DESTDIR
|
||||||
|
If set to PKG_CONFIG_SYSROOT_DIR, assume that PKG_CONFIG_FDO_SYSROOT_RULES is set.
|
||||||
.El
|
.El
|
||||||
.Sh EXAMPLES
|
.Sh EXAMPLES
|
||||||
Displaying the CFLAGS of a package:
|
Displaying the CFLAGS of a package:
|
||||||
|
|
Loading…
Reference in New Issue