diff --git a/tools/FindIMP.cmake b/tools/FindIMP.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..1b11f974fefb925944a7a3dfa5d78c2d4ace94f6
--- /dev/null
+++ b/tools/FindIMP.cmake
@@ -0,0 +1,80 @@
+#
+# The following module is based on FindVTK.cmake
+#
+
+# - Find an IMP installation or binary tree.
+# The following variables are set if IMP is found.  If IMP is not
+# found, IMP_FOUND is set to false.
+#
+#  IMP_FOUND         - Set to true when IMP is found.
+#  IMP_USE_FILE      - CMake file to use IMP.
+#
+
+# Construct consistent error messages for use below.
+set(IMP_DIR_DESCRIPTION "directory containing IMPConfig.cmake. This is either the cmake binary directory where IMP was configured or PREFIX/lib/cmake/IMP if you installed IMP.")
+set(IMP_DIR_MESSAGE     "IMP not found.  Set the IMP_DIR cmake variable or environment variable to the ${IMP_DIR_DESCRIPTION}")
+ 
+if ( NOT IMP_DIR )
+  
+  # Get the system search path as a list.
+  if(UNIX)
+    string(REGEX MATCHALL "[^:]+" IMP_DIR_SEARCH1 "$ENV{PATH}")
+  else()
+    string(REGEX REPLACE "\\\\" "/" IMP_DIR_SEARCH1 "$ENV{PATH}")
+  endif()
+  
+  string(REGEX REPLACE "/;" ";" IMP_DIR_SEARCH2 "${IMP_DIR_SEARCH1}")
+
+  # Construct a set of paths relative to the system search path.
+  set(IMP_DIR_SEARCH "")
+  
+  foreach(dir ${IMP_DIR_SEARCH2})
+  
+    set(IMP_DIR_SEARCH ${IMP_DIR_SEARCH} ${dir}/../lib/cmake/IMP )
+      
+  endforeach()
+
+
+  #
+  # Look for an installation or build tree.
+  #
+  find_path(IMP_DIR IMPConfig.cmake
+
+    # Look for an environment variable IMP_DIR.
+    $ENV{IMP_DIR}
+
+    # Look in places relative to the system executable search path.
+    ${IMP_DIR_SEARCH}
+
+    # Look in standard UNIX install locations.
+    /usr/local/lib/IMP
+    /usr/local/lib/cmake/IMP
+    /usr/lib64/IMP
+    /usr/lib64/cmake/IMP
+    /usr/lib/IMP
+    /usr/lib/cmake/IMP
+
+    # Help the user find it if we cannot.
+    DOC "The ${IMP_DIR_DESCRIPTION}"
+  )
+  
+endif()
+
+if ( IMP_DIR )
+  
+  if ( EXISTS "${IMP_DIR}/IMPConfig.cmake" )
+    include( "${IMP_DIR}/IMPConfig.cmake" )
+    set( IMP_FOUND TRUE )
+  endif()
+
+endif()
+
+if( NOT IMP_FOUND)
+  if(IMP_FIND_REQUIRED)
+    MESSAGE(FATAL_ERROR ${IMP_DIR_MESSAGE})
+  else()
+    if(NOT IMP_FIND_QUIETLY)
+      MESSAGE(STATUS ${IMP_DIR_MESSAGE})
+    endif()
+  endif()
+endif()