diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py
index 7c65091d49caede579ab8b33ee60637e65b7062b..bdad0f8b3395fe857efe13dd69b84c6427f34565 100644
--- a/lib/spack/spack/build_environment.py
+++ b/lib/spack/spack/build_environment.py
@@ -183,20 +183,20 @@ def set_compiler_environment_variables(pkg, env):
     # and return it
     # TODO : add additional kwargs for better diagnostics, like requestor, ttyout, ttyerr, etc.
     link_dir = spack.build_env_path
-    env.set('CC',  join_path(link_dir, compiler.link_paths['cc']))
-    env.set('CXX', join_path(link_dir, compiler.link_paths['cxx']))
-    env.set('F77', join_path(link_dir, compiler.link_paths['f77']))
-    env.set('FC',  join_path(link_dir, compiler.link_paths['fc']))
 
     # Set SPACK compiler variables so that our wrapper knows what to call
     if compiler.cc:
         env.set('SPACK_CC', compiler.cc)
+        env.set('CC', join_path(link_dir, compiler.link_paths['cc']))
     if compiler.cxx:
         env.set('SPACK_CXX', compiler.cxx)
+        env.set('CXX', join_path(link_dir, compiler.link_paths['cxx']))
     if compiler.f77:
         env.set('SPACK_F77', compiler.f77)
+        env.set('F77', join_path(link_dir, compiler.link_paths['f77']))
     if compiler.fc:
         env.set('SPACK_FC',  compiler.fc)
+        env.set('FC', join_path(link_dir, compiler.link_paths['fc']))
 
     # Set SPACK compiler rpath flags so that our wrapper knows what to use
     env.set('SPACK_CC_RPATH_ARG',  compiler.cc_rpath_arg)
diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py
index 695fb82f622109f75b68e3ab16811041d1b0b466..588d862d968d9d707891e45644c60408f163df09 100644
--- a/var/spack/repos/builtin/packages/openmpi/package.py
+++ b/var/spack/repos/builtin/packages/openmpi/package.py
@@ -24,6 +24,8 @@
 ##############################################################################
 import os
 
+import llnl.util.tty as tty
+
 from spack import *
 
 
@@ -118,6 +120,21 @@ def setup_dependent_package(self, module, dep_spec):
         self.spec.mpifc = join_path(self.prefix.bin, 'mpif90')
         self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77')
 
+    def setup_environment(self, spack_env, run_env):
+        # As of 06/2016 there is no mechanism to specify that packages which
+        # depends on MPI need C or/and Fortran implementation. For now
+        # require both.
+        if (self.compiler.f77 is None) or (self.compiler.fc is None):
+            tty.warn('OpenMPI : FORTRAN compiler not found')
+            tty.warn('OpenMPI : FORTRAN bindings will be disabled')
+            spack_env.unset('FC')
+            spack_env.unset('F77')
+            # Setting an attribute here and using it in the 'install'
+            # method is needed to ensure tty.warn is actually displayed
+            # to user and not redirected to spack-build.out
+            self.config_extra = ['--enable-mpi-fortran=none',
+                                 '--disable-oshmem-fortran']
+
     @property
     def verbs(self):
         # Up through version 1.6, this option was previously named
@@ -129,17 +146,14 @@ def verbs(self):
             return 'verbs'
 
     def install(self, spec, prefix):
-        # As of 06/2016 there is no mechanism to specify that packages which
-        # depends on MPI need C or/and Fortran implementation. For now
-        # require both.
-        if (self.compiler.f77 is None) or (self.compiler.fc is None):
-            raise InstallError('OpenMPI requires both C and Fortran ',
-                               'compilers!')
-
         config_args = ["--prefix=%s" % prefix,
                        "--with-hwloc=%s" % spec['hwloc'].prefix,
                        "--enable-shared",
                        "--enable-static"]
+
+        if getattr(self, 'config_extra', None) is not None:
+            config_args.extend(self.config_extra)
+
         # Variant based arguments
         config_args.extend([
             # Schedulers
@@ -170,9 +184,6 @@ def install(self, spec, prefix):
         if self.version == ver("1.6.5") and '+lanl' in spec:
             config_args.append("--with-platform=contrib/platform/lanl/tlcc2/optimized-nopanasas")  # NOQA: ignore=E501
 
-        if not self.compiler.f77 and not self.compiler.fc:
-            config_args.append("--enable-mpi-fortran=no")
-
         configure(*config_args)
         make()
         make("install")