diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py
index 45353ec6402e3abdb95ee95388eaea72e9d4012e..70b5c89411b381cd136fcacd5c8d13889a4da370 100644
--- a/lib/spack/spack/build_environment.py
+++ b/lib/spack/spack/build_environment.py
@@ -183,6 +183,10 @@ def set_module_variables_for_package(pkg):
     if platform.mac_ver()[0]:
         m.std_cmake_args.append('-DCMAKE_FIND_FRAMEWORK=LAST')
 
+    # Set up CMake rpath
+    m.std_cmake_args.append('-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE')
+    m.std_cmake_args.append('-DCMAKE_INSTALL_RPATH=%s' % ":".join(get_rpaths(pkg)))
+
     # Emulate some shell commands for convenience
     m.pwd        = os.getcwd
     m.cd         = os.chdir
@@ -202,6 +206,16 @@ def set_module_variables_for_package(pkg):
     m.prefix  = pkg.prefix
 
 
+def get_rpaths(pkg):
+    """Get a list of all the rpaths for a package."""
+    rpaths = [pkg.prefix.lib, pkg.prefix.lib64]
+    rpaths.extend(d.prefix.lib for d in pkg.spec.traverse(root=False)
+                  if os.path.isdir(d.prefix.lib))
+    rpaths.extend(d.prefix.lib64 for d in pkg.spec.traverse(root=False)
+                  if os.path.isdir(d.prefix.lib64))
+    return rpaths
+
+
 def setup_package(pkg):
     """Execute all environment setup routines."""
     set_compiler_environment_variables(pkg)