summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--include/netlink/cli/utils.h1
-rw-r--r--src/lib/utils.c23
3 files changed, 21 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac
index e7402fdf..387a53b4 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 4c283437..a76fce28 100644
--- a/include/netlink/cli/utils.h
+++ b/include/netlink/cli/utils.h
@@ -22,7 +22,6 @@
#include <stdint.h>
#include <ctype.h>
#include <getopt.h>
-#include <dlfcn.h>
#include <sys/types.h>
#include <sys/socket.h>
diff --git a/src/lib/utils.c b/src/lib/utils.c
index feb1d4ef..6e288b60 100644
--- a/src/lib/utils.c
+++ b/src/lib/utils.c
@@ -24,6 +24,12 @@
#include <netlink/cli/utils.h>
#include <locale.h>
+#include "lib/defs.h"
+
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+#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
}
/** @} */