[gnome-control-center/extensible-shell] Add a library for use by extensions
- From: William Jon McCann <mccann src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-control-center/extensible-shell] Add a library for use by extensions
- Date: Mon, 18 Jan 2010 10:33:12 +0000 (UTC)
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]