build-sys: create libkmod-util.la convenience lib

Util functions can be shared betweeing libkmod and tools. Start with the
hash implementation.
diff --git a/Makefile.am b/Makefile.am
index fdba51b..9fecc2c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -40,6 +40,10 @@
 LIBKMOD_REVISION=0
 LIBKMOD_AGE=1
 
+noinst_LTLIBRARIES = libkmod/libkmod-util.la
+libkmod_libkmod_util_la_SOURCES = libkmod/libkmod-hash.c \
+				  libkmod/libkmod-hash.h
+
 include_HEADERS = libkmod/libkmod.h
 lib_LTLIBRARIES = libkmod/libkmod.la
 
@@ -49,7 +53,6 @@
 	libkmod/macro.h \
 	libkmod/libkmod.c \
 	libkmod/libkmod-list.c \
-	libkmod/libkmod-hash.c \
 	libkmod/libkmod-config.c \
 	libkmod/libkmod-util.c \
 	libkmod/libkmod-index.c \
@@ -64,8 +67,10 @@
 libkmod_libkmod_la_LDFLAGS = $(AM_LDFLAGS) \
 	-version-info $(LIBKMOD_CURRENT):$(LIBKMOD_REVISION):$(LIBKMOD_AGE) \
 	-Wl,--version-script=$(top_srcdir)/libkmod/libkmod.sym
-libkmod_libkmod_la_DEPENDENCIES = ${top_srcdir}/libkmod/libkmod.sym
-libkmod_libkmod_la_LIBADD = ${liblzma_LIBS} ${zlib_LIBS}
+libkmod_libkmod_la_DEPENDENCIES = libkmod/libkmod-util.la \
+				  ${top_srcdir}/libkmod/libkmod.sym
+libkmod_libkmod_la_LIBADD = libkmod/libkmod-util.la \
+			    ${liblzma_LIBS} ${zlib_LIBS}
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libkmod/libkmod.pc
diff --git a/libkmod/libkmod-hash.c b/libkmod/libkmod-hash.c
index 43cbc02..15140ec 100644
--- a/libkmod/libkmod-hash.c
+++ b/libkmod/libkmod-hash.c
@@ -19,7 +19,7 @@
  */
 
 #include "libkmod.h"
-#include "libkmod-private.h"
+#include "libkmod-hash.h"
 
 #include <stdlib.h>
 #include <string.h>
diff --git a/libkmod/libkmod-hash.h b/libkmod/libkmod-hash.h
new file mode 100644
index 0000000..53e6c81
--- /dev/null
+++ b/libkmod/libkmod-hash.h
@@ -0,0 +1,13 @@
+#ifndef _LIBKMOD_HASH_H_
+#define _LIBKMOD_HASH_H_
+
+struct hash;
+struct hash *hash_new(unsigned int n_buckets, void (*free_value)(void *value));
+void hash_free(struct hash *hash);
+int hash_add(struct hash *hash, const char *key, const void *value);
+int hash_add_unique(struct hash *hash, const char *key, const void *value);
+int hash_del(struct hash *hash, const char *key);
+void *hash_find(const struct hash *hash, const char *key);
+unsigned int hash_get_count(const struct hash *hash);
+
+#endif
diff --git a/libkmod/libkmod-private.h b/libkmod/libkmod-private.h
index ee76e70..5c9eeaf 100644
--- a/libkmod/libkmod-private.h
+++ b/libkmod/libkmod-private.h
@@ -129,14 +129,8 @@
 void kmod_module_set_remove_commands(struct kmod_module *mod, const char *cmd) __attribute__((nonnull(1)));
 
 /* libkmod-hash.c */
-struct hash;
-struct hash *hash_new(unsigned int n_buckets, void (*free_value)(void *value));
-void hash_free(struct hash *hash);
-int hash_add(struct hash *hash, const char *key, const void *value);
-int hash_add_unique(struct hash *hash, const char *key, const void *value);
-int hash_del(struct hash *hash, const char *key);
-void *hash_find(const struct hash *hash, const char *key);
-unsigned int hash_get_count(const struct hash *hash);
+
+#include "libkmod-hash.h"
 
 /* libkmod-file.c */
 struct kmod_file *kmod_file_open(const char *filename) __must_check __attribute__((nonnull(1)));