Added dependency requirement for SWIG to buildsystem
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0387fc5..0d4ee74 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -64,6 +64,13 @@
     message(FATAL_ERROR "Boost required to compile gr-gsm")
 endif()
 
+find_package(SWIG)
+
+if(NOT SWIG_FOUND)
+    message(FATAL_ERROR "SWIG required to compile gr-gsm")
+endif()
+
+
 ########################################################################
 # Install directories
 ########################################################################
diff --git a/cmake/Modules/FindSWIG.cmake b/cmake/Modules/FindSWIG.cmake
new file mode 100644
index 0000000..156bd5e
--- /dev/null
+++ b/cmake/Modules/FindSWIG.cmake
@@ -0,0 +1,141 @@
+#######################################################################
+# Find the library for SWIG
+#
+# The goal here is to intercept calls to "FIND_PACKAGE(SWIG)" in order
+# to do a global version check locally after passing on the "find" to
+# SWIG-provided scripts.
+########################################################################
+
+# make this file non-reentrant within the current context
+
+if(__INCLUDED_FIND_SWIG_CMAKE)
+    return()
+endif()
+set(__INCLUDED_FIND_SWIG_CMAKE TRUE)
+
+# some status messages
+
+message(STATUS "")
+message(STATUS "Checking for module SWIG")
+
+#
+# First check to see if SWIG installed its own CMake file, or if the
+# one provided by CMake finds SWIG.
+#
+
+# save the current MODULE path
+
+set(SAVED_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
+
+# clear the current MODULE path; uses system paths only
+
+unset(CMAKE_MODULE_PATH)
+
+# try to find SWIG via the provided parameters,
+# handle REQUIRED internally later
+
+unset(SWIG_FOUND)
+
+# was the version specified?
+
+unset(LOCAL_SWIG_FIND_VERSION)
+if(SWIG_FIND_VERSION)
+  set(LOCAL_SWIG_FIND_VERSION ${SWIG_FIND_VERSION})
+endif(SWIG_FIND_VERSION)
+
+# was EXACT specified?
+
+unset(LOCAL_SWIG_FIND_VERSION_EXACT)
+if(SWIG_FIND_VERSION_EXACT)
+  set(LOCAL_SWIG_FIND_VERSION_EXACT "EXACT")
+endif(SWIG_FIND_VERSION_EXACT)
+
+# was REQUIRED specified?
+
+unset(LOCAL_SWIG_FIND_REQUIRED)
+if(SWIG_FIND_REQUIRED)
+  set(LOCAL_SWIG_FIND_REQUIRED "REQUIRED")
+endif(SWIG_FIND_REQUIRED)
+
+# try to find SWIG using the provided parameters, quietly;
+#
+# this call will error out internally (and not quietly) if:
+# 1: EXACT is specified and the version found does not match the requested version;
+# 2: REQUIRED is set and SWIG was not found;
+#
+# this call will return SWIG_FOUND == FALSE if REQUIRED is not set, and:
+# 1: SWIG was not found;
+# 2: The version found is less than the requested version.
+
+find_package(
+  SWIG
+  ${LOCAL_SWIG_FIND_VERSION}
+  ${LOCAL_SWIG_FIND_VERSION_EXACT}
+  ${LOCAL_SWIG_FIND_REQUIRED}
+  QUIET
+)
+
+# restore CMAKE_MODULE_PATH
+
+set(CMAKE_MODULE_PATH ${SAVED_CMAKE_MODULE_PATH})
+
+# specific version checks
+
+set(SWIG_VERSION_CHECK FALSE)
+if(SWIG_FOUND)
+
+  # SWIG was found; make sure the version meets GR's needs
+  message(STATUS "Found SWIG version ${SWIG_VERSION}.")
+  if("${SWIG_VERSION}" VERSION_GREATER "1.3.30")
+    if(NOT "${SWIG_VERSION}" VERSION_EQUAL "3.0.3" AND
+       NOT "${SWIG_VERSION}" VERSION_EQUAL "3.0.4")
+      set(SWIG_VERSION_CHECK TRUE)
+    else()
+      message(STATUS "SWIG versions 3.0.3 and 3.0.4 fail to work with GNU Radio.")
+    endif()
+  else()
+    message(STATUS "Minimum SWIG version required is 1.3.31 for GNU Radio.")
+  endif()
+
+else()
+
+  # SWIG was either not found, or is less than the requested version
+  if(SWIG_VERSION)
+    # SWIG_VERSION is set, but SWIG_FOUND is false; probably a version mismatch
+    message(STATUS "Found SWIG version ${SWIG_VERSION}.")
+    message(STATUS "Requested SWIG version is at least ${SWIG_FIND_VERSION}.")
+  endif()
+endif()
+
+# did the version check fail?
+
+if(NOT SWIG_VERSION_CHECK)
+
+  # yes: clear various variables and set FOUND to FALSE
+  message(STATUS "Disabling SWIG because version check failed.")
+  unset(SWIG_VERSION CACHE)
+  unset(SWIG_DIR CACHE)
+  unset(SWIG_EXECUTABLE CACHE)
+  set(SWIG_FOUND FALSE CACHE BOOL "Set to TRUE if a compatible version of SWIG is found" FORCE)
+
+endif()
+
+# check to see if SWIG variables were set
+
+if(SWIG_FOUND AND SWIG_DIR AND SWIG_EXECUTABLE)
+
+  # yes: even if set SWIG_FOUND==TRUE, then these have already been
+  # done, but done quietly.  It does not hurt to redo them here.
+
+  include(FindPackageHandleStandardArgs)
+  find_package_handle_standard_args(SWIG DEFAULT_MSG SWIG_EXECUTABLE SWIG_DIR)
+  mark_as_advanced(SWIG_EXECUTABLE SWIG_DIR)
+
+elseif(SWIG_FIND_REQUIRED)
+
+  if(SWIG_FIND_VERSION)
+    message(FATAL_ERROR "The found SWIG version (${SWIG_VERSION}) is not compatible with the version required (${SWIG_FIND_VERSION}).")
+  else()
+    message(FATAL_ERROR "SWIG is required, but was not found.")
+  endif()
+endif()