[gnome-control-center/extensible-shell] Add a library for use by extensions



commit f1c215ef6dedea5653f420f74178ef6f0b338939
Author: William Jon McCann <jmccann redhat com>
Date:   Sun Jan 17 15:07:15 2010 -0500

    Add a library for use by extensions
    
    This not only makes it easier to create extensions but also makes
    the module symbol loading and object registration work much better.

 Makefile.am                                        |   24 +++++++++-
 capplets/accessibility/at-properties/Makefile.am   |   15 ++++--
 capplets/appearance/Makefile.am                    |   29 +++++++-----
 capplets/common/Makefile.am                        |    2 +
 capplets/display/Makefile.am                       |    1 +
 capplets/keyboard/Makefile.am                      |   32 ++++++++----
 capplets/network/Makefile.am                       |    5 ++-
 configure.ac                                       |   23 ++++++++-
 libgnome-control-center-extension/Makefile.am      |   50 ++++++++++++++++++++
 .../cc-page.c                                      |    0
 .../cc-page.h                                      |    0
 .../cc-panel.c                                     |    0
 .../cc-panel.h                                     |    0
 ...nome-control-center-extension-uninstalled.pc.in |   12 +++++
 .../libgnome-control-center-extension.pc.in        |   12 +++++
 shell/Makefile.am                                  |   37 ++++++++------
 shell/control-center.c                             |    4 +-
 17 files changed, 194 insertions(+), 52 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index a4fd4fd..eb1eb91 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,25 @@
-SUBDIRS = po libwindow-settings capplets shell font-viewer help
-DIST_SUBDIRS = po libwindow-settings capplets font-viewer help shell typing-break
+NULL =
+
+SUBDIRS =					\
+	po 					\
+	libwindow-settings			\
+	libgnome-control-center-extension	\
+	capplets				\
+	shell					\
+	font-viewer				\
+	help					\
+	$(NULL)
+
+DIST_SUBDIRS =					\
+	po 					\
+	libwindow-settings			\
+	libgnome-control-center-extension	\
+	capplets				\
+	shell					\
+	font-viewer				\
+	help					\
+	typing-break				\
+	$(NULL)
 
 if HAVE_TYPING_BREAK
 SUBDIRS += typing-break
diff --git a/capplets/accessibility/at-properties/Makefile.am b/capplets/accessibility/at-properties/Makefile.am
index c74c1a7..eb8fa70 100644
--- a/capplets/accessibility/at-properties/Makefile.am
+++ b/capplets/accessibility/at-properties/Makefile.am
@@ -19,12 +19,15 @@ pixmap_DATA =					\
 uidir = $(pkgdatadir)/ui
 ui_DATA = at-enable-dialog.ui
 
-INCLUDES   = $(AT_CAPPLET_CFLAGS)     \
-             $(GNOMECC_CAPPLETS_CFLAGS) \
-	     -DUIDIR=\""$(uidir)"\" \
-	     -DPIXMAPDIR=\""$(pixmapdir)"\" \
-	     -DGNOMECC_DATA_DIR="\"$(pkgdatadir)\"" \
-	     -DGNOMELOCALEDIR="\"$(datadir)/locale\""
+INCLUDES   = \
+	$(AT_CAPPLET_CFLAGS)     \
+	-I$(top_srcdir)/capplets/common/ \
+	$(GNOMECC_CAPPLETS_CFLAGS) \
+	-DUIDIR=\""$(uidir)"\" \
+	-DPIXMAPDIR=\""$(pixmapdir)"\" \
+	-DGNOMECC_DATA_DIR="\"$(pkgdatadir)\"" \
+	-DGNOMELOCALEDIR="\"$(datadir)/locale\""
+
 CLEANFILES = $(GNOMECC_CAPPLETS_CLEANFILES) $(Desktop_in_files) $(desktop_DATA)
 EXTRA_DIST = $(ui_DATA) $(pixmap_DATA)
 
diff --git a/capplets/appearance/Makefile.am b/capplets/appearance/Makefile.am
index bfde011..e7fd132 100644
--- a/capplets/appearance/Makefile.am
+++ b/capplets/appearance/Makefile.am
@@ -1,12 +1,13 @@
+NULL =
+
 SUBDIRS = data
 
 # This is used in GNOMECC_CAPPLETS_CFLAGS
 cappletname = appearance
 
-module_flags = -export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload)'
-
 INCLUDES = \
 	$(METACITY_CFLAGS) \
+	-I$(top_srcdir)/capplets/common/ \
 	$(GNOMECC_CAPPLETS_CFLAGS) \
 	$(FONT_CAPPLET_CFLAGS) \
 	-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
@@ -29,7 +30,7 @@ libappearance_common_la_SOURCES = \
 	theme-util.c \
 	theme-util.h
 
-ccmodulesdir = $(libdir)/control-center-1/extensions
+ccmodulesdir = $(EXTENSIONSDIR)
 ccmodules_LTLIBRARIES = libappearance.la
 
 libappearance_la_SOURCES = \
@@ -43,17 +44,21 @@ libappearance_la_SOURCES = \
 	cc-appearance-panel.h \
 	cc-appearance-panel.c
 
-libappearance_la_LDFLAGS = \
-	$(module_flags)
+libappearance_la_LDFLAGS =		\
+	$(EXTENSION_LIBTOOL_FLAGS)	\
+	$(NULL)
 
-libappearance_la_LIBADD = \
-	libappearance-common.la \
-	$(GNOMECC_CAPPLETS_LIBS) \
-	$(LIBGNOMEKBDUI_LIBS)
+libappearance_la_LIBADD =		\
+	$(EXTENSION_LIBS)		\
+	$(EXTENSION_COMMON_LIBS)	\
+	$(NULL)
+
+libappearance_la_CFLAGS =		\
+	$(EXTENSION_CFLAGS)		\
+	$(EXTENSION_COMMON_CFLAGS)	\
+	$(NULL)
 
-libappearance_la_CFLAGS = \
-	-I$(top_builddir)/shell \
-	-I$(top_srcdir)/shell
+libappearance_la_LIBTOOLFLAGS = --tag=disable-static
 
 gnome_appearance_properties_SOURCES = \
 	appearance.h \
diff --git a/capplets/common/Makefile.am b/capplets/common/Makefile.am
index 70ad44f..9bbdbd7 100644
--- a/capplets/common/Makefile.am
+++ b/capplets/common/Makefile.am
@@ -50,6 +50,8 @@ libcommon_la_LIBADD =							\
 	$(GNOME_DESKTOP_LIBS)						\
 	$(GIO_LIBS)
 
+libcommon_la_LDFLAGS = -export-dynamic -no-undefined -avoid-version
+
 gnome_theme_test_SOURCES = \
 	gnome-theme-test.c
 
diff --git a/capplets/display/Makefile.am b/capplets/display/Makefile.am
index 14bba49..3f87317 100644
--- a/capplets/display/Makefile.am
+++ b/capplets/display/Makefile.am
@@ -37,6 +37,7 @@ desktop_DATA = $(Desktop_in_files:.desktop.in=.desktop)
 
 INCLUDES   = $(DISPLAY_CAPPLET_CFLAGS) \
              $(GNOMECC_CAPPLETS_CFLAGS) \
+	     -I$(top_srcdir)/capplets/common/ \
 	     -DUIDIR="\"$(uidir)\"" \
 	     -DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
 	     -DGNOMECC_DATA_DIR="\"$(pkgdatadir)\""
diff --git a/capplets/keyboard/Makefile.am b/capplets/keyboard/Makefile.am
index ff4bb68..f5336f5 100644
--- a/capplets/keyboard/Makefile.am
+++ b/capplets/keyboard/Makefile.am
@@ -1,11 +1,12 @@
+NULL =
+
 # This is used in GNOMECC_CAPPLETS_CFLAGS
 cappletname = keyboard
 
-module_flags = -export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload)'
-
 INCLUDES = \
 	$(GNOMECC_CAPPLETS_CFLAGS) \
 	$(LIBGNOMEKBDUI_CFLAGS) \
+	-I$(top_srcdir)/capplets/common/ \
 	-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
 	-DGNOMECC_DATA_DIR="\"$(pkgdatadir)\"" \
 	-DGNOMECC_KEYBINDINGS_DIR="\"$(pkgdatadir)/keybindings\"" \
@@ -13,7 +14,7 @@ INCLUDES = \
 
 bin_PROGRAMS = gnome-keyboard-properties
 
-ccmodulesdir = $(libdir)/control-center-1/extensions
+ccmodulesdir = $(EXTENSIONSDIR)
 ccmodules_LTLIBRARIES = libkeyboard.la
 
 libkeyboard_la_SOURCES = \
@@ -29,16 +30,22 @@ libkeyboard_la_SOURCES = \
 	cc-keyboard-panel.h \
 	cc-keyboard-panel.c
 
-libkeyboard_la_LDFLAGS = \
-	$(module_flags)
+libkeyboard_la_LDFLAGS =		\
+	$(EXTENSION_LIBTOOL_FLAGS)	\
+	$(NULL)
 
-libkeyboard_la_LIBADD = \
-	$(GNOMECC_CAPPLETS_LIBS) \
-	$(LIBGNOMEKBDUI_LIBS)
+libkeyboard_la_LIBADD =			\
+	$(EXTENSION_LIBS)		\
+	$(EXTENSION_COMMON_LIBS)	\
+	$(LIBGNOMEKBDUI_LIBS)		\
+	$(NULL)
+
+libkeyboard_la_CFLAGS =			\
+	$(EXTENSION_CFLAGS)		\
+	$(EXTENSION_COMMON_CFLAGS)	\
+	$(NULL)
 
-libkeyboard_la_CFLAGS = \
-	-I$(top_builddir)/shell \
-	-I$(top_srcdir)/shell
+libkeyboard_la_LIBTOOLFLAGS = --tag=disable-static
 
 gnome_keyboard_properties_SOURCES = \
 	gnome-keyboard-properties-a11y.c \
@@ -53,9 +60,12 @@ gnome_keyboard_properties_SOURCES = \
 	gnome-keyboard-properties.c
 
 gnome_keyboard_properties_LDADD = \
+	$(top_builddir)/capplets/common/libcommon.la \
 	$(GNOMECC_CAPPLETS_LIBS) \
 	$(LIBGNOMEKBDUI_LIBS)
 
+gnome_keyboard_properties_LDFLAGS = -export-dynamic
+
 @INTLTOOL_DESKTOP_RULE@
 
 uidir   = $(pkgdatadir)/ui
diff --git a/capplets/network/Makefile.am b/capplets/network/Makefile.am
index 1ec5571..2b7f8b6 100644
--- a/capplets/network/Makefile.am
+++ b/capplets/network/Makefile.am
@@ -4,7 +4,9 @@ cappletname = network
 bin_PROGRAMS = gnome-network-properties
 
 gnome_network_properties_SOURCES = gnome-network-properties.c
-gnome_network_properties_LDADD = $(GNOMECC_CAPPLETS_LIBS)
+gnome_network_properties_LDADD = \
+	$(top_builddir)/capplets/common/libcommon.la \
+	$(GNOMECC_CAPPLETS_LIBS)
 
 @INTLTOOL_DESKTOP_RULE@
 
@@ -30,6 +32,7 @@ desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
 
 INCLUDES = \
 	$(GNOMECC_CAPPLETS_CFLAGS) \
+	-I$(top_srcdir)/capplets/common/ \
 	-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
 	-DGNOMECC_UI_DIR="\"$(uidir)\""
 
diff --git a/configure.ac b/configure.ac
index 7e7a54f..4334b7f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -102,6 +102,24 @@ gtk_binary_version=`$PKG_CONFIG --variable gtk_binary_version gtk+-2.0`
 GTK_ENGINE_DIR="$gtk_lib_dir/gtk-2.0/$gtk_binary_version/engines"
 AC_SUBST(GTK_ENGINE_DIR)
 
+dnl ================================================================
+dnl Extensions
+dnl ================================================================
+
+PKG_CHECK_MODULES(EXTENSION_COMMON, $COMMON_MODULES)
+
+EXTENSION_LIBTOOL_FLAGS="-export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload)'"
+AC_SUBST(EXTENSION_LIBTOOL_FLAGS)
+
+EXTENSIONSDIR="${libdir}/control-center-1/extensions"
+AC_SUBST(EXTENSIONSDIR)
+
+EXTENSION_CFLAGS="-I\$(top_srcdir)/libgnome-control-center-extension"
+AC_SUBST(EXTENSION_CFLAGS)
+
+EXTENSION_LIBS="\$(top_builddir)/libgnome-control-center-extension/libgnome-control-center-extension.la"
+AC_SUBST(EXTENSION_LIBS)
+
 dnl
 dnl Check for Xft version 2; we build in extra functionality to the font capplet
 dnl when we have it.
@@ -237,8 +255,6 @@ AM_GCONF_SOURCE_2
 dnl ==============================================
 dnl Define the main variables
 dnl ==============================================
-COMMON_CFLAGS="-I\$(top_srcdir)/capplets/common"
-COMMON_LIBS="\$(top_builddir)/capplets/common/libcommon.la"
 
 EXTRA_CFLAGS="-I\$(top_srcdir)/ -DG_LOG_DOMAIN=\"\\\"\$(cappletname)-properties\\\"\""
 
@@ -349,6 +365,9 @@ font-viewer/gnome-font-viewer.desktop.in
 help/Makefile
 libwindow-settings/Makefile
 libwindow-settings/gnome-window-settings-2.0.pc
+libgnome-control-center-extension/Makefile
+libgnome-control-center-extension/libgnome-control-center-extension.pc
+libgnome-control-center-extension/libgnome-control-center-extension-uninstalled.pc
 po/Makefile.in
 shell/Makefile
 shell/gnomecc.desktop.in
diff --git a/libgnome-control-center-extension/Makefile.am b/libgnome-control-center-extension/Makefile.am
new file mode 100644
index 0000000..67349c6
--- /dev/null
+++ b/libgnome-control-center-extension/Makefile.am
@@ -0,0 +1,50 @@
+NULL =
+
+INCLUDES =						\
+	$(EXTENSION_COMMON_CFLAGS)			\
+	$(NULL)
+
+lib_LTLIBRARIES = libgnome-control-center-extension.la
+
+libgnome_control_center_extension_include_HEADERS =	\
+	cc-page.h					\
+	cc-panel.h					\
+	$(NULL)
+
+libgnome_control_center_extension_la_SOURCES =		\
+	cc-page.h					\
+	cc-page.c					\
+	cc-panel.h					\
+	cc-panel.c					\
+	$(NULL)
+
+#        -version-info @GNOME_CONTROL_CENTER_EXTENSION_VERSION_INFO@
+libgnome_control_center_extension_la_LDFLAGS =		\
+        -no-undefined					\
+        $(NULL)
+
+libgnome_control_center_extension_la_LIBADD = 		\
+	$(top_builddir)/capplets/common/libcommon.la	\
+	$(EXTENSION_COMMON_CFLAGS)			\
+	$(NULL)
+
+libgnome_control_center_extension_la_LIBTOOLFLAGS = --tag=disable-static
+
+libgnome_control_center_extension_includedir =		\
+	$(includedir)/gnome-control-center-1/libgnome-control-center-extension	\
+	$(NULL)
+
+pkgconfigdir=$(libdir)/pkgconfig
+pkgconfig_DATA=libgnome-control-center-extension.pc
+
+EXTRA_DIST =					\
+        libgnome-control-center-extension.pc.in	\
+        $(NULL)
+
+AM_CPPFLAGS =							\
+	-DGNOMELOCALEDIR="\"$(datadir)/locale\""		\
+	-DEXTENSION_DIR="\"$(libdir)/control-center-1/extensions\""					\
+	-DUIDIR="\"$(uidir)\""					\
+	-DMENUDIR="\"$(menudir)\""
+
+-include $(top_srcdir)/git.mk
diff --git a/shell/cc-page.c b/libgnome-control-center-extension/cc-page.c
similarity index 100%
rename from shell/cc-page.c
rename to libgnome-control-center-extension/cc-page.c
diff --git a/shell/cc-page.h b/libgnome-control-center-extension/cc-page.h
similarity index 100%
rename from shell/cc-page.h
rename to libgnome-control-center-extension/cc-page.h
diff --git a/shell/cc-panel.c b/libgnome-control-center-extension/cc-panel.c
similarity index 100%
rename from shell/cc-panel.c
rename to libgnome-control-center-extension/cc-panel.c
diff --git a/shell/cc-panel.h b/libgnome-control-center-extension/cc-panel.h
similarity index 100%
rename from shell/cc-panel.h
rename to libgnome-control-center-extension/cc-panel.h
diff --git a/libgnome-control-center-extension/libgnome-control-center-extension-uninstalled.pc.in b/libgnome-control-center-extension/libgnome-control-center-extension-uninstalled.pc.in
new file mode 100644
index 0000000..fbf6c2b
--- /dev/null
+++ b/libgnome-control-center-extension/libgnome-control-center-extension-uninstalled.pc.in
@@ -0,0 +1,12 @@
+prefix= prefix@
+exec_prefix= exec_prefix@
+libdir= libdir@
+includedir= includedir@
+extensiondir= libdir@/control-center-1/extensions
+
+Name: libgnome-control-center-extension
+Description: A library to create GNOME Control Center extensions
+Version: @VERSION@
+Requires: glib-2.0 gtk+-2.0
+Libs: ${pc_top_builddir}/${pcfiledir}/libgnome-control-center-extension.la
+Cflags: -I${pc_top_builddir}/${pcfiledir}/..
diff --git a/libgnome-control-center-extension/libgnome-control-center-extension.pc.in b/libgnome-control-center-extension/libgnome-control-center-extension.pc.in
new file mode 100644
index 0000000..5e8637f
--- /dev/null
+++ b/libgnome-control-center-extension/libgnome-control-center-extension.pc.in
@@ -0,0 +1,12 @@
+prefix= prefix@
+exec_prefix= exec_prefix@
+libdir= libdir@
+includedir= includedir@
+extensiondir= libdir@/control-center-1/extensions
+
+Name: libgnome-control-center-extension
+Description: A library to create GNOME Control Center extensions
+Version: @VERSION@
+Requires: glib-2.0 gio-2.0 gtk+-2.0
+Libs: -L${libdir} -lgnome-control-center-extension
+Cflags: -I${includedir}/gnome-control-center-1
diff --git a/shell/Makefile.am b/shell/Makefile.am
index da62c63..a11fc8d 100644
--- a/shell/Makefile.am
+++ b/shell/Makefile.am
@@ -1,33 +1,38 @@
+NULL =
+
 INCLUDES =					\
 	-I$(top_srcdir)				\
-	$(GNOMECC_SHELL_CFLAGS)
+	$(EXTENSION_CFLAGS)			\
+	$(EXTENSION_COMMON_CFLAGS)		\
+	$(GNOMECC_SHELL_CFLAGS)			\
+	$(NULL)
 
 bin_PROGRAMS = gnome-control-center
 
-menudir = $(sysconfdir)/xdg/menus
-menu_DATA = gnomecc.menu
-
-uidir = $(pkgdatadir)/ui
-ui_DATA = shell.ui
-
-gnome_control_center_SOURCES =		\
-	cc-page.h			\
-	cc-page.c			\
-	cc-panel.h			\
-	cc-panel.c			\
-	control-center.c
+gnome_control_center_SOURCES =			\
+	control-center.c			\
+	$(NULL)
 
-gnome_control_center_LDADD =						\
-	$(GNOMECC_SHELL_LIBS)
+gnome_control_center_LDADD =			\
+	$(EXTENSION_LIBS)			\
+	$(EXTENSION_COMMON_LIBS)		\
+	$(GNOMECC_SHELL_LIBS)			\
+	$(NULL)
 
 gnome_control_center_LDFLAGS = -export-dynamic
 
 AM_CPPFLAGS =							\
 	-DGNOMELOCALEDIR="\"$(datadir)/locale\""		\
-	-DEXTENSION_DIR="\"$(libdir)/control-center-1/extensions\""					\
+	-DEXTENSIONSDIR="\"$(EXTENSIONSDIR)\""			\
 	-DUIDIR="\"$(uidir)\""					\
 	-DMENUDIR="\"$(menudir)\""
 
+menudir = $(sysconfdir)/xdg/menus
+menu_DATA = gnomecc.menu
+
+uidir = $(pkgdatadir)/ui
+ui_DATA = shell.ui
+
 sysdir = $(datadir)/applications
 sys_in_files = gnomecc.desktop.in
 sys_DATA = $(sys_in_files:.desktop.in=.desktop)
diff --git a/shell/control-center.c b/shell/control-center.c
index 5d29a84..3930e5c 100644
--- a/shell/control-center.c
+++ b/shell/control-center.c
@@ -74,8 +74,8 @@ load_panel_plugins (void)
     }
 
   /* load all modules */
-  g_debug ("Loading all modules in %s", EXTENSION_DIR);
-  modules = g_io_modules_load_all_in_directory (EXTENSION_DIR);
+  g_debug ("Loading all modules in %s", EXTENSIONSDIR);
+  modules = g_io_modules_load_all_in_directory (EXTENSIONSDIR);
 
   g_debug ("Loaded %d modules", g_list_length (modules));
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]