commit b9accdd
Author: Mike Hommey <mh+mozilla@glandium.org>
Date:   Thu Oct 18 14:47:10 2012 +0200

    Bug 799441 - Build GIO module in libxul. r=ted
---
 configure.in                              |  6 ++++++
 extensions/gio/Makefile.in                | 14 +++-----------
 toolkit/library/Makefile.in               |  5 +++++
 toolkit/library/nsStaticXULComponents.cpp |  7 +++++++
 toolkit/toolkit-tiers.mk                  |  4 ++++
 5 files changed, 25 insertions(+), 11 deletions(-)

diff --git configure.in configure.in
index a9fb5f1..37e6db8 100644
--- configure.in
+++ configure.in
@@ -6086,6 +6086,12 @@ if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; th
     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
 fi
 
+if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
+    MOZ_GIO_COMPONENT=1
+    MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
+fi
+AC_SUBST(MOZ_GIO_COMPONENT)
+
 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
diff --git extensions/gio/Makefile.in extensions/gio/Makefile.in
index ccf2846..79112a8 100644
--- extensions/gio/Makefile.in
+++ extensions/gio/Makefile.in
@@ -14,6 +14,9 @@ MODULE		= nkgio
 LIBRARY_NAME	= nkgio
 SHORT_LIBNAME	= nkgio
 IS_COMPONENT	= 1
+EXPORT_LIBRARY	= 1
+MODULE_NAME	= nsGIOModule
+LIBXUL_LIBRARY	= 1
 
 CPPSRCS		= \
 		nsGIOProtocolHandler.cpp \
@@ -21,15 +24,4 @@ CPPSRCS		= \
 
 LOCAL_INCLUDES	= $(MOZ_GIO_CFLAGS)
 
-EXTRA_DSO_LDOPTS = \
-		   $(XPCOM_GLUE_LDOPTS) \
-		   $(MOZ_COMPONENT_LIBS) \
-		   $(MOZ_GIO_LIBS) \
-		   $(NULL)
-
-# make sure this component is never statically linked into the main
-# application.  this is necessary since we don't want to force users
-# to install gio in order to use the rest of mozilla ;-)
-FORCE_SHARED_LIB= 1
-
 include $(topsrcdir)/config/rules.mk
diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in
index 7f9046e..6499758 100644
--- toolkit/library/Makefile.in
+++ toolkit/library/Makefile.in
@@ -333,6 +333,11 @@ COMPONENT_LIBS += gkdebug
 endif
 endif
 
+ifdef MOZ_GIO_COMPONENT
+DEFINES += -DMOZ_GIO_COMPONENT
+COMPONENT_LIBS += nkgio
+endif
+
 ifdef MOZ_APP_COMPONENT_LIBS
 COMPONENT_LIBS += $(MOZ_APP_COMPONENT_LIBS)
 endif
diff --git toolkit/library/nsStaticXULComponents.cpp toolkit/library/nsStaticXULComponents.cpp
index e1d90f2..85b21a2 100644
--- toolkit/library/nsStaticXULComponents.cpp
+++ toolkit/library/nsStaticXULComponents.cpp
@@ -164,6 +164,12 @@
 #define PROFILER_MODULE
 #endif
 
+#if defined(MOZ_GIO_COMPONENT)
+#define GIO_MODULE MODULE(nsGIOModule)
+#else
+#define GIO_MODULE
+#endif
+
 #define XUL_MODULES                          \
     MODULE(nsUConvModule)                    \
     MODULE(nsI18nModule)                     \
@@ -220,6 +226,7 @@
     MODULE(nsTelemetryModule)                \
     MODULE(jsinspector)                      \
     MODULE(jsdebugger)                       \
+    GIO_MODULE                               \
     /* end of list */
 
 #define MODULE(_name) \
diff --git toolkit/toolkit-tiers.mk toolkit/toolkit-tiers.mk
index e87d7af..4b16d23 100644
--- toolkit/toolkit-tiers.mk
+++ toolkit/toolkit-tiers.mk
@@ -252,6 +252,10 @@ tier_platform_dirs += js/ductwork/debugger
 
 tier_platform_dirs += other-licenses/snappy
 
+ifdef MOZ_GIO_COMPONENT
+tier_platform_dirs += extensions/gio
+endif
+
 ifdef APP_LIBXUL_STATICDIRS
 # Applications can cheat and ask for code to be
 # built before libxul so libxul can be linked against it.
