Improve SWIG detection
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f0643f9..c1843e1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -233,6 +233,17 @@
       NAMES swig-1.3 swig
       PATHS ${SWIG_DIR} ${SWIG_DIR}/.. ${SWIG_DIR}/../../bin /usr/bin /usr/local/bin ${CMAKE_INSTALL_PREFIX}/bin
     )
+    SET(SWIG_VERSION "(unknown version)")
+  ELSE ( NOT SWIG_EXECUTABLE)
+    # FIND_PACKAGE(SWIG) succeeded, now check the version
+    # swig 2.0.4 is known to be broken
+    IF (SWIG_VERSION)
+      IF(${SWIG_VERSION} VERSION_GREATER "2.0.0")
+        IF(${SWIG_VERSION} VERSION_LESS "2.0.5")
+          MESSAGE( FATAL "Found SWIG version ${SWIG_VERSION}, please upgrade SWIG to 2.0.5 or later" )
+        ENDIF(${SWIG_VERSION} VERSION_LESS "2.0.5")
+      ENDIF(${SWIG_VERSION} VERSION_GREATER "2.0.0")
+    ENDIF (SWIG_VERSION)
   ENDIF( NOT SWIG_EXECUTABLE)
 ENDIF( BUILD_BINDINGS )
 
@@ -246,7 +257,7 @@
     MESSAGE( ERROR "Cannot build client bindings" )
   ENDIF( BUILD_PYTHON_EXPLICIT OR BUILD_RUBY_EXPLICIT OR BUILD_PERL_EXPLICIT OR BUILD_JAVA_EXPLICIT)
 ELSE ( NOT SWIG_EXECUTABLE )
-  MESSAGE( STATUS "SWIG found at ${SWIG_EXECUTABLE}" )
+  MESSAGE( STATUS "SWIG ${SWIG_VERSION} found at ${SWIG_EXECUTABLE}" )
   ADD_SUBDIRECTORY(bindings)
 ENDIF ( NOT SWIG_EXECUTABLE )