From cad7852a7b2c7cfc5f418b854c960abdb265544b Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Wed, 25 Jan 2012 01:58:07 -0500
Subject: [PATCH] Make NM optional

Derived from a patch for gnome-shell by Michael Biebl <biebl@debian.org>
(see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652482#29)
---
 configure.ac         | 48 ++++++++++++++++++++++++++++++++++++++++++++++--
 js/misc/config.js.in |  2 ++
 js/ui/main.js        |  3 ++-
 src/Makefile.am      | 17 ++++++++++++-----
 4 files changed, 62 insertions(+), 8 deletions(-)

--- ./configure.ac
+++ ./configure.ac
@@ -81,8 +81,40 @@ PKG_CHECK_MODULES(CINNAMON, gio-2.0 >= $GIO_MIN_VERSION
                                libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
                                gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
 			       libcanberra
-                               polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
-                               libnm-glib libnm-util gnome-keyring-1)
+                               polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes)
+
+##########################
+# Check for NetworkManager
+##########################
+NM_MIN_VERSION=0.9
+AC_ARG_ENABLE(networkmanager,
+              AS_HELP_STRING([--disable-networkmanager],
+                             [disable NetworkManager support @<:@default=auto@:>@]),,
+              [enable_networkmanager=auto])
+
+if test "x$enable_networkmanager" != "xno"; then
+   PKG_CHECK_MODULES(NETWORKMANAGER,
+                     [libnm-glib libnm-util gnome-keyring-1],
+                     [have_networkmanager=yes],
+                     [have_networkmanager=no])
+
+   CINNAMON_CFLAGS="$CINNAMON_CFLAGS $NETWORKMANAGER_CFLAGS"
+   CINNAMON_LIBS="$CINNAMON_LIBS $NETWORKMANAGER_LIBS"
+else
+   have_networkmanager="no  (disabled)"
+fi
+
+if test "x$have_networkmanager" = "xyes"; then
+   AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager])
+   AC_SUBST([HAVE_NETWORKMANAGER], [1])
+else
+   if test "x$enable_networkmanager" = "xyes"; then
+      AC_MSG_ERROR([Couldn't find NetworkManager.])
+   fi
+   AC_SUBST([HAVE_NETWORKMANAGER], [0])
+fi
+
+AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes")
 
 PKG_CHECK_MODULES(CINNAMON_PERF_HELPER, gtk+-3.0 gio-2.0)
 
@@ -266,3 +266,15 @@ AC_CONFIG_FILES([
   files/Makefile
 ])
 AC_OUTPUT
+
+echo "
+Build configuration:
+
+	Prefix:                                 ${prefix}
+	Source code location:                   ${srcdir}
+	Compiler:                               ${CC}
+	Compiler Warnings:                      $enable_compile_warnings
+
+	Support for NetworkManager:             $have_networkmanager
+	Support for GStreamer recording:        $build_recorder
+"
--- ./js/misc/config.js.in
+++ ./js/misc/config.js.in
@@ -8,5 +8,7 @@ const PACKAGE_VERSION = '@PACKAGE_VERSION@';
 const GJS_VERSION = '@GJS_VERSION@';
 /* 1 if gnome-bluetooth is available, 0 otherwise */
 const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
+/* 1 if networkmanager is available, 0 otherwise */
+const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@;
 /* The system TLS CA list */
 const CINNAMON_SYSTEM_CA_FILE = '@CINNAMON_SYSTEM_CA_FILE@';
--- ./js/ui/main.js
+++ ./js/ui/main.js
@@ -11,6 +11,7 @@ const St = imports.gi.St;
 
 const AutomountManager = imports.ui.automountManager;
 const AutorunManager = imports.ui.autorunManager;
+const Config = imports.misc.config;
 const EndSessionDialog = imports.ui.endSessionDialog;
 const PolkitAuthenticationAgent = imports.ui.polkitAuthenticationAgent;
 const ExtensionSystem = imports.ui.extensionSystem;
@@ -24,7 +25,7 @@ const PlacesManager = imports.ui.placesManager;
 const RunDialog = imports.ui.runDialog;
 const Layout = imports.ui.layout;
 const LookingGlass = imports.ui.lookingGlass;
-const NetworkAgent = imports.ui.networkAgent;
+const NetworkAgent = Config.HAVE_NETWORKMANAGER ? imports.ui.networkAgent : null;
 const NotificationDaemon = imports.ui.notificationDaemon;
 const WindowAttentionHandler = imports.ui.windowAttentionHandler;
 const Scripting = imports.ui.scripting;
--- ./src/Makefile.am
+++ ./src/Makefile.am
@@ -110,9 +110,7 @@ cinnamon_public_headers_h =		\
 	cinnamon-generic-container.h	\
 	cinnamon-gtk-embed.h		\
 	cinnamon-global.h			\
-	cinnamon-mobile-providers.h	\
 	cinnamon-mount-operation.h		\
-	cinnamon-network-agent.h		\
 	cinnamon-perf-log.h		\
 	cinnamon-screenshot.h	\
 	cinnamon-screen-grabber.h	\
@@ -125,6 +123,10 @@ cinnamon_public_headers_h =		\
 	cinnamon-wm.h			\
 	cinnamon-xfixes-cursor.h
 
+if HAVE_NETWORKMANAGER
+cinnamon_public_headers_h += cinnamon-mobile-providers.h cinnamon-network-agent.h
+endif
+
 libcinnamon_la_SOURCES =		\
 	$(cinnamon_built_sources)		\
 	$(cinnamon_public_headers_h)	\
@@ -147,9 +149,7 @@ libcinnamon_la_SOURCES =		\
 	cinnamon-generic-container.c	\
 	cinnamon-gtk-embed.c		\
 	cinnamon-global.c			\
-	cinnamon-mobile-providers.c	\
 	cinnamon-mount-operation.c		\
-	cinnamon-network-agent.c		\
 	cinnamon-perf-log.c		\
 	cinnamon-polkit-authentication-agent.h	\
 	cinnamon-polkit-authentication-agent.c	\
@@ -164,6 +164,10 @@ libcinnamon_la_SOURCES =		\
 	cinnamon-wm.c			\
 	cinnamon-xfixes-cursor.c
 
+if HAVE_NETWORKMANAGER
+libcinnamon_la_SOURCES += cinnamon-mobile-providers.c cinnamon-network-agent.c
+endif
+
 libcinnamon_la_gir_sources = \
 	$(filter-out %-private.h $(cinnamon_recorder_non_gir_sources), $(cinnamon_public_headers_h) $(libcinnamon_la_SOURCES))
 
@@ -275,7 +279,10 @@ libcinnamon_la_LIBADD =		\
 libcinnamon_la_CPPFLAGS = $(cinnamon_cflags)
 
 Cinnamon-0.1.gir: libcinnamon.la St-1.0.gir
-Cinnamon_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 Soup-2.4 GMenu-3.0 NetworkManager-1.0 NMClient-1.0
+Cinnamon_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 Soup-2.4 GMenu-3.0
+if HAVE_NETWORKMANAGER
+Cinnamon_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
+endif
 Cinnamon_0_1_gir_CFLAGS = $(libcinnamon_la_CPPFLAGS) -I $(srcdir)
 Cinnamon_0_1_gir_LIBS = libcinnamon.la
 Cinnamon_0_1_gir_FILES = $(libcinnamon_la_gir_sources)
-- 
1.7.12

