From: Thomas Haller Date: Fri, 12 May 2017 10:47:19 +0000 (+0200) Subject: build: allow building cli without dynamic librarires support X-Git-Tag: libnl3_4_0rc1~9^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c881a27fbda7233405d91d70ec517386e2d85304;p=libnl build: allow building cli without dynamic librarires support Commit 3cb28534d34392ceec4adead0cfa97039796ccb7 enables building of cli always as part of `make check`. As cli previously always included , this broke tests for building with toolchains that don't support dynamic library loading. Add a configure check and disable dlopen() based on whether is available. Signed-off-by: Thomas Haller https://github.com/thom311/libnl/pull/141 --- diff --git a/configure.ac b/configure.ac index e7402fd..387a53b 100644 --- a/configure.ac +++ b/configure.ac @@ -101,6 +101,8 @@ AM_CONDITIONAL([ENABLE_CLI], [test "$enable_cli" != "no"]) AM_CONDITIONAL([ENABLE_CLI_INSTALL_BIN], [test "$enable_cli" = "bin"]) AM_CONDITIONAL([ENABLE_CLI_INSTALL_SBIN], [test "$enable_cli" = "sbin"]) +AC_CHECK_HEADERS(dlfcn.h, [], []) + AC_ARG_ENABLE([pthreads], AS_HELP_STRING([--disable-pthreads], [Disable pthreads support]), [enable_pthreads="$enableval"], [enable_pthreads="yes"]) diff --git a/include/netlink/cli/utils.h b/include/netlink/cli/utils.h index 4c28343..a76fce2 100644 --- a/include/netlink/cli/utils.h +++ b/include/netlink/cli/utils.h @@ -22,7 +22,6 @@ #include #include #include -#include #include #include diff --git a/src/lib/utils.c b/src/lib/utils.c index feb1d4e..6e288b6 100644 --- a/src/lib/utils.c +++ b/src/lib/utils.c @@ -24,6 +24,12 @@ #include #include +#include "lib/defs.h" + +#ifdef HAVE_DLFCN_H +#include +#endif + /** * Parse a text based 32 bit unsigned integer argument * @arg arg Integer in text form. @@ -220,14 +226,23 @@ struct nl_cache *nl_cli_alloc_cache_flags(struct nl_sock *sock, void nl_cli_load_module(const char *prefix, const char *name) { char path[FILENAME_MAX+1]; - void *handle; snprintf(path, sizeof(path), "%s/%s/%s.so", PKGLIBDIR, prefix, name); - if (!(handle = dlopen(path, RTLD_NOW))) - nl_cli_fatal(ENOENT, "Unable to load module \"%s\": %s\n", - path, dlerror()); +#ifdef HAVE_DLFCN_H + { + void *handle; + + if (!(handle = dlopen(path, RTLD_NOW))) { + nl_cli_fatal(ENOENT, "Unable to load module \"%s\": %s\n", + path, dlerror()); + } + } +#else + nl_cli_fatal(ENOTSUP, "Unable to load module \"%s\": built without dynamic libraries support\n", + path); +#endif } /** @} */