diff --git a/configure.ac b/configure.ac
index eff2324c989aaaac4e6a335179efd414082658a4..2ff1919c8f9a39f11c3ddde4913dc38929a630c2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@ dnl
 dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.59)
 AC_INIT([SFLPhone],[0.7],[sflphoneteam@savoirfairelinux.com],[sflphone])
-AC_COPYRIGHT([[Copyright (c) Savoir-Faire Linux 2004-2007]])
+AC_COPYRIGHT([[Copyright (c) Savoir-Faire Linux 2004-2008]])
 AC_REVISION([$Revision$])
 
 dnl Compute canonical system name
@@ -192,27 +192,52 @@ PKG_CHECK_MODULES(libdbuscpp, dbus-c++-1 >= ${LIBDBUSCPP_MIN_VERSION})
 SFLPHONE_CFLAGS="$SFLPHONE_CFLAGS $libdbuscpp_CFLAGS"
 SFLPHONE_LIBS="$SFLPHONE_LIBS $libdbuscpp_LIBS"
 
-dnl Check for speex
-AC_ARG_ENABLE(speex, 
-  AS_HELP_STRING(
-    [--enable-speex],
-    [compile with speex codec @<:@default=no@:>@]
-  ), 
-  [with_speex=$enableval], 
-  [with_speex=no]
-)
+# check for libboost (doesn't use pkg-config)
+AC_CHECK_HEADER(boost/tokenizer.hpp, , AC_MSG_ERROR("Unable to find the libboost tokenizer headers; you may need to install the libboost-dev package" ) )
+
+# check for libgsm1 (doesn't use pkg-config)
+dnl Check for libspeex
+AC_ARG_WITH([gsm],
+  [AS_HELP_STRING([--without-gsm],
+    [disable support for gsm codec])],
+  [],
+  [with_gsm=yes])
+
+LIBGSM=
+AS_IF([test "x$with_gsm" != xno],
+  [AC_CHECK_HEADER([gsm.h], , AC_MSG_FAILURE([Unable to find the libgsm1 headers (you may need to install the dev package).  You may use --without-gsm to compile without gsm codec support.]))]
+  [AC_CHECK_LIB([gsm], [gsm_decode],
+    [],
+    [AC_MSG_FAILURE(
+       [libgsm link test failed.   You may use --without-gsm to compile without gsm codec support.])]
+       )
+   ]
+   )
+    
+AC_DEFINE([HAVE_GSM], test "x$with_gsm" = "xyes", [Define if you have libgsm])
+AM_CONDITIONAL(BUILD_GSM, test "x$with_gsm" = "xyes" )
+
+dnl Check for libspeex
+AC_ARG_WITH([speex],
+  [AS_HELP_STRING([--without-speex],
+    [disable support for speex codec])],
+  [],
+  [with_speex=yes])
+
+LIBSPEEX=
+AS_IF([test "x$with_speex" != xno],
+  [AC_CHECK_HEADER([speex/speex.h], , AC_MSG_FAILURE([Unable to find the libspeex headers (you may need to install the dev package).  You may use --without-speex to compile without speex codec support.]))]
+  [AC_CHECK_LIB([speex], [speex_decode_int],
+    [],
+    [AC_MSG_FAILURE(
+       [libspeex link test failed.   You may use --without-speex to compile without speex codec support.])]
+       )
+   ]
+   )
+    
+AC_DEFINE([HAVE_SPEEX], test "x$with_speex" = "xyes", [Define if you have libspeex])
+AM_CONDITIONAL(BUILD_SPEEX, test "x$with_speex" = "xyes" )
 
-if test "x$with_speex" = "xyes" ; then
-  AC_CHECK_HEADER([speex/speex.h], [
-    AC_CHECK_LIB(speex, speex_decode_int, 
-     [
-      with_speex=yes
-     ], [ with_speex=no ]
-    ) 
-   ], [ with_speex=no ]
-  )
-fi
-AM_CONDITIONAL(USE_SPEEX, test "x$with_speex" = "xyes" )
 
 dnl Check for IAX
 AC_ARG_ENABLE(iax2,
diff --git a/m4/speex.m4 b/m4/speex.m4
deleted file mode 100644
index 884d5684b2e84dad3ff90fc76a8909586e7d4802..0000000000000000000000000000000000000000
--- a/m4/speex.m4
+++ /dev/null
@@ -1,24 +0,0 @@
-AC_DEFUN([LP_CHECK_SPEEX],[
-dnl only accept speex>=1.1.6 or 1.0.5 (the versions that have speex_encode_int )
-AC_ARG_WITH( speex,
-      [  --with-speex      Set prefix where speex lib can be found (ex:/usr, /usr/local) [default=/usr] ],
-      [ speex_prefix=${withval}],[ speex_prefix="/usr" ])
-
-SPEEX_CFLAGS=" -I${speex_prefix}/include -I${speex_prefix}/include/speex"
-SPEEX_LIBS="-L${speex_prefix}/lib -lspeex -lm"
-CPPFLAGS_save=$CPPFLAGS
-CPPFLAGS=$SPEEX_CFLAGS
-LDFLAGS_save=$LDFLAGS
-LDFLAGS=$SPEEX_LIBS
-AC_CHECK_HEADERS(speex.h,[AC_CHECK_LIB(speex,speex_encode_int,speex_found=yes,speex_found=no)
-],speex_found=no)
-
-if test "$speex_found" = "no" ; then
-AC_MSG_ERROR([Could not find a libspeex version that have the speex_encode_int() function. Please install libspeex=1.0.5 or libspeex>=1.1.6])
-fi
-
-AC_SUBST(SPEEX_CFLAGS)
-AC_SUBST(SPEEX_LIBS)
-CPPFLAGS=$CPPFLAGS_save
-LDFLAGS=$LDFLAGS_save
-])
diff --git a/src/audio/codecs/Makefile.am b/src/audio/codecs/Makefile.am
index 41655e97390543456795d027ad4687ae02535d6a..a6c8c39c39b468f18a4f3308a5b04d0613884d45 100644
--- a/src/audio/codecs/Makefile.am
+++ b/src/audio/codecs/Makefile.am
@@ -1,6 +1,19 @@
 sflcodecdir = $(libdir)/sflphone/codecs
-
-noinst_PROGRAMS = libcodec_ulaw.so libcodec_alaw.so libcodec_gsm.so libcodec_speex.so libcodec_ilbc.so
+if BUILD_GSM
+	GSM_LIB = libcodec_gsm.so
+	libcodec_gsm_so_SOURCES = gsmcodec.cpp
+	libcodec_gsm_so_CFLAGS = -fPIC -g -Wall
+	libcodec_gsm_so_LDFLAGS = -shared -lc -lgsm
+endif
+
+if BUILD_SPEEX
+	SPEEX_LIB = libcodec_speex.so
+	libcodec_speex_so_SOURCES = speexcodec.cpp
+	libcodec_speex_so_CFLAGS = -fPIC -g -Wall
+	libcodec_speex_so_LDFLAGS = -shared -lc -lspeex
+endif
+
+noinst_PROGRAMS = libcodec_ulaw.so libcodec_alaw.so $(GSM_LIB) $(SPEEX_LIB) libcodec_ilbc.so
 
 noinst_HEADERS = audiocodec.h
 
@@ -12,14 +25,6 @@ libcodec_alaw_so_SOURCES = alaw.cpp
 libcodec_alaw_so_CFLAGS = -fPIC -g -Wall
 libcodec_alaw_so_LDFLAGS = -shared -lc
 
-libcodec_gsm_so_SOURCES = gsmcodec.cpp
-libcodec_gsm_so_CFLAGS = -fPIC -g -Wall
-libcodec_gsm_so_LDFLAGS = -shared -lc -lgsm
-
-libcodec_speex_so_SOURCES = speexcodec.cpp
-libcodec_speex_so_CFLAGS = -fPIC -g -Wall
-libcodec_speex_so_LDFLAGS = -shared -lc -lspeex
-
 libcodec_ilbc_so_SOURCES = ilbc.cpp
 libcodec_ilbc_so_CFLAGS = -fPIC -g -Wall
 libcodec_ilbc_so_LDFLAGS = -shared ilbc/*.o -lc