diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py
index 3c288e79337ef22c17940a64c003d67a1a532cf0..82a6b06b1f1c718c4228f10d11fbe260b6803bb3 100644
--- a/var/spack/repos/builtin/packages/hypre/package.py
+++ b/var/spack/repos/builtin/packages/hypre/package.py
@@ -35,6 +35,7 @@ class Hypre(Package):
     homepage = "http://computation.llnl.gov/project/linear_solvers/software.php"
     url      = "http://computation.llnl.gov/project/linear_solvers/download/hypre-2.10.0b.tar.gz"
 
+    version('develop', git='https://github.com/LLNL/hypre', tag='master')
     version('2.11.1', '3f02ef8fd679239a6723f60b7f796519')
     version('2.10.1', 'dc048c4cabb3cd549af72591474ad674')
     version('2.10.0b', '768be38793a35bb5d055905b271f5b8e')
diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py
index e9c345eeb226b1ce84ec90c84dd3a5123a54f0fc..7d04673182bfe31bbbffd3bae2461d291be1dd2e 100644
--- a/var/spack/repos/builtin/packages/superlu-dist/package.py
+++ b/var/spack/repos/builtin/packages/superlu-dist/package.py
@@ -24,6 +24,7 @@
 ##############################################################################
 from spack import *
 import glob
+import os
 
 
 class SuperluDist(Package):
@@ -32,6 +33,7 @@ class SuperluDist(Package):
     homepage = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/"
     url = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz"
 
+    version('develop', git='https://github.com/xiaoyeli/superlu_dist', tag='master')
     version('5.1.1', '12638c631733a27dcbd87110e9f9cb1e')
     version('5.1.0', '6bb86e630bd4bd8650243aed8fd92eb9')
     version('5.0.0', '2b53baf1b0ddbd9fcf724992577f0670')
@@ -77,6 +79,7 @@ def install(self, spec, prefix):
         with open('make.inc', 'w') as fh:
             fh.write('\n'.join(makefile_inc))
 
+        mkdirp(os.path.join(self.stage.source_path, 'lib'))
         make("lib", parallel=False)
 
         # FIXME:
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index 6c0fa4926232afa471d747dc8a0477ce11d69a12..beb1b38ba58b02a076b224a806f2a500ffde97c8 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -45,6 +45,7 @@ class Trilinos(CMakePackage):
     homepage = "https://trilinos.org/"
     base_url = "https://github.com/trilinos/Trilinos/archive"
 
+    version('develop', git='https://github.com/trilinos/Trilinos.git', tag='master')
     version('12.10.1', '40f28628b63310f9bd17c26d9ebe32b1')
     version('12.8.1', '01c0026f1e2050842857db941060ecd5')
     version('12.6.4', 'c2ea7b5aa0d10bcabdb9b9a6e3bac3ea')
@@ -62,6 +63,8 @@ def url_for_version(self, version):
         return '%s/trilinos-release-%s.tar.gz' % \
             (Trilinos.base_url, version.dashed)
 
+    variant('xsdkflags',        default=False,
+            description='Compile using the default xSDK configuration')
     variant('metis',        default=True,
             description='Compile with METIS and ParMETIS')
     variant('mumps',        default=True,
@@ -157,11 +160,24 @@ def cmake_args(self):
             '-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON',
             '-DTrilinos_ENABLE_CXX11:BOOL=ON',
             '-DTPL_ENABLE_Netcdf:BOOL=ON',
-            '-DTPL_ENABLE_HYPRE:BOOL=%s' % (
-                'ON' if '+hypre' in spec else 'OFF'),
             '-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % self.prefix
         ])
 
+        # Force Trilinos to use the MPI wrappers instead of raw compilers
+        # this is needed on Apple systems that require full resolution of
+        # all symbols when linking shared libraries
+        options.extend([
+            '-DCMAKE_C_COMPILER=%s'       % spec['mpi'].mpicc,
+            '-DCMAKE_CXX_COMPILER=%s'     % spec['mpi'].mpicxx,
+            '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc
+        ])
+        if '+hypre' in spec:
+            options.extend([
+                '-DTPL_ENABLE_HYPRE:BOOL=ON',
+                '-DHYPRE_INCLUDE_DIRS:PATH=%s' % spec['hypre'].prefix.include,
+                '-DHYPRE_LIBRARY_DIRS:PATH=%s' % spec['hypre'].prefix.lib
+            ])
+
         if spec.satisfies('%intel') and spec.satisfies('@12.6.2'):
             # Panzer uses some std:chrono that is not recognized by Intel
             # Don't know which (maybe all) Trilinos versions this applies to
@@ -170,6 +186,8 @@ def cmake_args(self):
                 '-DTrilinos_ENABLE_Panzer:BOOL=OFF'
             ])
 
+        if '+xsdkflags' in spec:
+            options.extend(['-DUSE_XSDK_DEFAULTS=YES'])
         if '+hdf5' in spec:
             options.extend([
                 '-DTPL_ENABLE_HDF5:BOOL=ON',