forked from ariadne/pkgconf
libpkgconf: personality: add stub cross personality loader
parent
6b0e346c28
commit
9439b683ca
|
@ -5,10 +5,11 @@ includedir = @includedir@
|
||||||
system_includedir = @SYSTEM_INCLUDEDIR@
|
system_includedir = @SYSTEM_INCLUDEDIR@
|
||||||
system_libdir = @SYSTEM_LIBDIR@
|
system_libdir = @SYSTEM_LIBDIR@
|
||||||
pkg_default_dir = @PKG_DEFAULT_PATH@
|
pkg_default_dir = @PKG_DEFAULT_PATH@
|
||||||
|
personality_dir = @PERSONALITY_PATH@
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
nodist_pkgconfig_DATA = libpkgconf.pc
|
nodist_pkgconfig_DATA = libpkgconf.pc
|
||||||
|
|
||||||
AM_CFLAGS = -DPKG_DEFAULT_PATH=\"$(pkg_default_dir)\" -DSYSTEM_INCLUDEDIR=\"$(system_includedir)\" -DSYSTEM_LIBDIR=\"$(system_libdir)\"
|
AM_CFLAGS = -DPERSONALITY_PATH=\"$(personality_dir)\" -DPKG_DEFAULT_PATH=\"$(pkg_default_dir)\" -DSYSTEM_INCLUDEDIR=\"$(system_includedir)\" -DSYSTEM_LIBDIR=\"$(system_libdir)\"
|
||||||
|
|
||||||
bin_PROGRAMS = pkgconf
|
bin_PROGRAMS = pkgconf
|
||||||
lib_LTLIBRARIES = libpkgconf.la
|
lib_LTLIBRARIES = libpkgconf.la
|
||||||
|
|
|
@ -30,6 +30,13 @@ LT_INIT
|
||||||
|
|
||||||
AC_SYS_LARGEFILE
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
|
AC_ARG_WITH([personality-dir],[AC_HELP_STRING([--with-personality-dir],[specify
|
||||||
|
the place where cross-compile personality files will be found])],
|
||||||
|
PERSONALITY_PATH="$withval",
|
||||||
|
PERSONALITY_PATH="${datadir}/pkgconfig/personality.d:${etcdir}/pkgconfig/personality.d")
|
||||||
|
|
||||||
|
AC_SUBST([PERSONALITY_PATH])
|
||||||
|
|
||||||
AC_ARG_WITH([pkg-config-dir],[AC_HELP_STRING([--with-pkg-config-dir],[specify
|
AC_ARG_WITH([pkg-config-dir],[AC_HELP_STRING([--with-pkg-config-dir],[specify
|
||||||
the place where pc files will be found])],PKG_DEFAULT_PATH="$withval",
|
the place where pc files will be found])],PKG_DEFAULT_PATH="$withval",
|
||||||
PKG_DEFAULT_PATH="${libdir}/pkgconfig:${datadir}/pkgconfig")
|
PKG_DEFAULT_PATH="${libdir}/pkgconfig:${datadir}/pkgconfig")
|
||||||
|
|
|
@ -94,3 +94,57 @@ pkgconf_cross_personality_default(void)
|
||||||
default_personality_init = true;
|
default_personality_init = true;
|
||||||
return &default_personality;
|
return &default_personality;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
valid_triplet(const char *triplet)
|
||||||
|
{
|
||||||
|
const char *c = triplet;
|
||||||
|
|
||||||
|
for (; c != '\0'; c++)
|
||||||
|
if (!isalnum(*c) && *c != '-')
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static pkgconf_cross_personality_t *
|
||||||
|
load_personality_with_path(const char *path, const char *triplet)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* !doc
|
||||||
|
*
|
||||||
|
* .. c:function:: pkgconf_cross_personality_t *pkgconf_cross_personality_find(const char *triplet)
|
||||||
|
*
|
||||||
|
* Attempts to find a cross-compile personality given a triplet.
|
||||||
|
*
|
||||||
|
* :rtype: pkgconf_cross_personality_t*
|
||||||
|
* :return: the default cross-compile personality
|
||||||
|
*/
|
||||||
|
pkgconf_cross_personality_t *
|
||||||
|
pkgconf_cross_personality_find(const char *triplet)
|
||||||
|
{
|
||||||
|
pkgconf_list_t plist;
|
||||||
|
pkgconf_node_t *n;
|
||||||
|
pkgconf_cross_personality_t *out = NULL;
|
||||||
|
|
||||||
|
if (!valid_triplet(triplet))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
pkgconf_path_split(PERSONALITY_PATH, &plist, true);
|
||||||
|
|
||||||
|
PKGCONF_FOREACH_LIST_ENTRY(plist.head, n)
|
||||||
|
{
|
||||||
|
pkgconf_path_t *pn = n->data;
|
||||||
|
|
||||||
|
out = load_personality_with_path(pn->path, triplet);
|
||||||
|
if (out != NULL)
|
||||||
|
goto finish;
|
||||||
|
}
|
||||||
|
|
||||||
|
finish:
|
||||||
|
pkgconf_path_free(&plist);
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue