src/connman.service
src/*-connman.rules
plugins/connman.policy
+plugins/builtin.h
scripts/connman
scripts/udhcpc-script
scripts/dhclient-script
-SUBDIRS = gdbus include src plugins client tools scripts test doc
+SUBDIRS = gdbus include plugins src client tools scripts test doc
pkgconfigdir = $(libdir)/pkgconfig
*/
#ifdef CONNMAN_PLUGIN_BUILTIN
#define CONNMAN_PLUGIN_DEFINE(name, description, version, priority, init, exit) \
- extern struct connman_plugin_desc connman_builtin_ ## name \
- __attribute__ ((visibility("default"))); \
- struct connman_plugin_desc connman_builtin_ ## name = { \
+ struct connman_plugin_desc __connman_builtin_ ## name = { \
#name, description, version, priority, init, exit \
};
#else
plugin_LTLIBRARIES =
+builtin_modules =
+builtin_sources =
+
if LOOPBACK
plugin_LTLIBRARIES += loopback.la
endif
plugin_LTLIBRARIES += fake.la
endif
+noinst_LTLIBRARIES = libbuiltin.la
+
+libbuiltin_la_SOURCES = $(builtin_sources)
+libbuiltin_la_LDFLAGS =
+libbuiltin_la_CFLAGS = $(AM_CFLAGS) -DCONNMAN_PLUGIN_BUILTIN
+
+BUILT_SOURCES = builtin.h
+
+nodist_libbuiltin_la_SOURCES = $(BUILT_SOURCES)
+
AM_LDFLAGS = -no-undefined -module -avoid-version
statedir = $(localstatedir)/run/connman
INCLUDES = -I$(top_builddir)/include
-CLEANFILES = connman.policy
+CLEANFILES = $(BUILT_SOURCES) connman.policy
EXTRA_DIST = polkit.policy
MAINTAINERCLEANFILES = Makefile.in
+builtin.h:
+ echo "" > $@
+ list='$(builtin_modules)'; for i in $$list; \
+ do echo "extern struct connman_plugin_desc __connman_builtin_$$i;" > $@; done
+ echo "static struct connman_plugin_desc *__connman_builtin[] = {" >> $@
+ list='$(builtin_modules)'; for i in $$list; \
+ do echo "&__connman_builtin_$$i," >> $@; done
+ echo "NULL };" >> $@
+
connman.policy: polkit.policy
cp $< $@
endif
endif
-connmand_LDADD = @GDBUS_LIBS@ @GLIB_LIBS@ @GTHREAD_LIBS@ @UDEV_LIBS@ -ldl
+connmand_LDADD = $(top_builddir)/plugins/libbuiltin.la \
+ @GDBUS_LIBS@ @GLIB_LIBS@ @GTHREAD_LIBS@ @UDEV_LIBS@ -ldl
connmand_LDFLAGS = -Wl,--export-dynamic -Wl,--version-script=connman.ver
-DPLUGINDIR=\""$(plugindir)"\" \
-DSTORAGEDIR=\""$(storagedir)\""
-INCLUDES = -I$(top_builddir)/include
+INCLUDES = -I$(top_builddir)/include -I$(top_builddir)/plugins
EXTRA_DIST = connman-dbus.conf connman-polkit.conf connman.rules
return TRUE;
}
+#include "builtin.h"
+
int __connman_plugin_init(const char *pattern, const char *exclude)
{
GSList *list;
GDir *dir;
const gchar *file;
gchar *filename;
+ unsigned int i;
DBG("");
+ for (i = 0; __connman_builtin[i]; i++)
+ add_plugin(NULL, __connman_builtin[i]);
+
dir = g_dir_open(PLUGINDIR, 0, NULL);
if (dir != NULL) {
while ((file = g_dir_read_name(dir)) != NULL) {
if (plugin->active == TRUE && plugin->desc->exit)
plugin->desc->exit();
- dlclose(plugin->handle);
+ if (plugin->handle != NULL)
+ dlclose(plugin->handle);
g_free(plugin);
}