--- a/gr-vocoder/lib/CMakeLists.txt
+++ b/gr-vocoder/lib/CMakeLists.txt
@@ -18,6 +18,89 @@
 # Boston, MA 02110-1301, USA.
 
 ########################################################################
+# Check for system libsndfile....
+########################################################################
+if(NOT GR_USE_SYSTEM_LIBSNDFILE)
+  find_path(LIBSNDFILE_INCLUDE_DIR NAMES sndfile.h
+    PATHS
+    ${LIBSNDFILE_PKG_INCLUDE_DIRS}
+    /usr/include
+  )
+
+  find_library(LIBSNDFILE_LIBRARIES NAMES sndfile
+    PATHS
+    ${LIBSNDFILE_PKG_LIBRARY_DIRS}
+    /usr/lib
+  )
+
+if(LIBSNDFILE_INCLUDE_DIR AND LIBSNDFILE_LIBRARIES)
+  set(GR_USE_SYSTEM_LIBSNDFILE TRUE CACHE INTERNAL "system libsndfile found")
+  message(STATUS "Found libsndfile: ${LIBSNDFILE_INCLUDE_DIR}, ${LIBSNDFILE_LIBRARIES}")
+else(LIBSNDFILE_INCLUDE_DIR AND LIBSNDFILE_LIBRARIES)
+  set(GR_USE_SYSTEM_LIBSNDFILE FALSE CACHE INTERNAL "system libsndfile found")
+  message(STATUS "system libsndfile not found.")
+endif(LIBSNDFILE_INCLUDE_DIR AND LIBSNDFILE_LIBRARIES)
+
+mark_as_advanced(LIBSNDFILE_INCLUDE_DIR LIBSNDFILE_LIBRARIES)
+endif(NOT GR_USE_SYSTEM_LIBSNDFILE)
+
+########################################################################
+# Check for system libgsm....
+########################################################################
+if(NOT GR_USE_SYSTEM_LIBGSM)
+  find_path(LIBGSM_INCLUDE_DIR NAMES gsm.h
+    PATHS
+    ${LIBGSM_PKG_INCLUDE_DIRS}
+    /usr/include/gsm
+    /usr/include
+  )
+
+  find_library(LIBGSM_LIBRARIES NAMES gsm
+    PATHS
+    ${LIBGSM_PKG_LIBRARY_DIRS}
+    /usr/lib
+  )
+
+if(LIBGSM_INCLUDE_DIR AND LIBGSM_LIBRARIES)
+  set(GR_USE_SYSTEM_LIBGSM TRUE CACHE INTERNAL "system libgsm found")
+  message(STATUS "Found libgsm: ${LIBGSM_INCLUDE_DIR}, ${LIBGSM_LIBRARIES}")
+else(LIBGSM_INCLUDE_DIR AND LIBGSM_LIBRARIES)
+  set(GR_USE_SYSTEM_LIBGSM FALSE CACHE INTERNAL "system libgsm found")
+  message(STATUS "system libgsm not found.")
+endif(LIBGSM_INCLUDE_DIR AND LIBGSM_LIBRARIES)
+
+mark_as_advanced(LIBGSM_INCLUDE_DIR LIBGSM_LIBRARIES)
+endif(NOT GR_USE_SYSTEM_LIBGSM)
+
+########################################################################
+# Check for system libcodec2....
+########################################################################
+if(NOT GR_USE_SYSTEM_LIBCODEC2)
+  find_path(LIBCODEC2_INCLUDE_DIR NAMES codec2.h
+    PATHS
+    ${LIBCODEC2_PKG_INCLUDE_DIRS}
+    /usr/include/codec2
+    /usr/include
+  )
+
+  find_library(LIBCODEC2_LIBRARIES NAMES codec2
+    PATHS
+    ${LIBCODEC2_PKG_LIBRARY_DIRS}
+    /usr/lib
+  )
+
+if(LIBCODEC2_INCLUDE_DIR AND LIBCODEC2_LIBRARIES)
+  set(GR_USE_SYSTEM_LIBCODEC2 TRUE CACHE INTERNAL "system libcodec2 found")
+  message(STATUS "Found libcodec2: ${LIBCODEC2_INCLUDE_DIR}, ${LIBCODEC2_LIBRARIES}")
+else(LIBCODEC2_INCLUDE_DIR AND LIBCODEC2_LIBRARIES)
+  set(GR_USE_SYSTEM_LIBCODEC2 FALSE CACHE INTERNAL "system libcodec2 found")
+  message(STATUS "system libcodec2 not found.")
+endif(LIBCODEC2_INCLUDE_DIR AND LIBCODEC2_LIBRARIES)
+
+mark_as_advanced(LIBCODEC2_INCLUDE_DIR LIBCODEC2_LIBRARIES)
+endif(NOT GR_USE_SYSTEM_LIBCODEC2)
+
+########################################################################
 # Setup the include and linker paths
 ########################################################################
 include_directories(
@@ -77,15 +160,31 @@
 ########################################################################
 # Include subdirs rather to populate to the sources lists.
 ########################################################################
-GR_INCLUDE_SUBDIRECTORY(codec2)
-GR_INCLUDE_SUBDIRECTORY(g7xx)
-GR_INCLUDE_SUBDIRECTORY(gsm)
+if(NOT GR_USE_SYSTEM_LIBCODEC2)
+ GR_INCLUDE_SUBDIRECTORY(codec2)
+endif(NOT GR_USE_SYSTEM_LIBCODEC2)
+# TODO - let sndfile replace use of code in g7xx directory
+#if(NOT GR_USE_SYSTEM_LIBSNDFILE)
+ GR_INCLUDE_SUBDIRECTORY(g7xx)
+#endif(NOT GR_USE_SYSTEM_LIBSNDFILE)
+if(NOT GR_USE_SYSTEM_LIBGSM)
+ GR_INCLUDE_SUBDIRECTORY(gsm)
+endif(NOT GR_USE_SYSTEM_LIBGSM)
 
 list(APPEND vocoder_libs
     gnuradio-runtime
     ${Boost_LIBRARIES}
     ${LOG4CPP_LIBRARIES}
 )
+if(GR_USE_SYSTEM_LIBCODEC2)
+  list(APPEND vocoder_libs ${LIBCODEC2_LIBRARIES})
+endif(GR_USE_SYSTEM_LIBCODEC2)
+if(GR_USE_SYSTEM_LIBSNDFILE)
+  list(APPEND vocoder_libs ${LIBSNDFILE_LIBRARIES})
+endif(GR_USE_SYSTEM_LIBSNDFILE)
+if(GR_USE_SYSTEM_LIBGSM)
+  list(APPEND vocoder_libs ${LIBGSM_LIBRARIES})
+endif(GR_USE_SYSTEM_LIBGSM)
 
 add_library(gnuradio-vocoder SHARED ${gr_vocoder_sources})
 target_link_libraries(gnuradio-vocoder ${vocoder_libs})
