diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml
index 5c38ddb68354234c755ad2ccbf6d74e879e877ae..aaab12b3efee4c3f8c2c54e7c8163d01e270ac43 100644
--- a/etc/spack/defaults/packages.yaml
+++ b/etc/spack/defaults/packages.yaml
@@ -22,6 +22,7 @@ packages:
       blas: [openblas]
       daal: [intel-daal]
       elf: [elfutils]
+      fftw-api: [fftw]
       gl: [mesa, opengl]
       glu: [mesa-glu, openglu]
       golang: [gcc]
diff --git a/lib/spack/spack/test/package_sanity.py b/lib/spack/spack/test/package_sanity.py
index f31209c7029e8ace57188cd5df592137c46384ed..a8c84bd70d1186f5cef102c0c124130b60a10f1e 100644
--- a/lib/spack/spack/test/package_sanity.py
+++ b/lib/spack/spack/test/package_sanity.py
@@ -47,9 +47,12 @@ def test_all_virtual_packages_have_default_providers():
     defaults = spack.config.get('packages', scope='defaults')
     default_providers = defaults['all']['providers']
     providers = spack.repo.path.provider_index.providers
-
+    default_providers_filename = \
+        spack.config.config.scopes['defaults'].get_section_filename('packages')
     for provider in providers:
-        assert provider in default_providers
+        assert provider in default_providers, \
+            "all providers must have a default in %s" \
+            % default_providers_filename
 
 
 def test_package_version_consistency():
diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py
index 0d424ce029b2155725e6b510eee2f368af85d4d7..d3d8795fee872105db7137ac8f4035d87ec5f09c 100644
--- a/var/spack/repos/builtin/packages/fftw/package.py
+++ b/var/spack/repos/builtin/packages/fftw/package.py
@@ -72,6 +72,9 @@ class Fftw(AutotoolsPackage):
     # https://github.com/FFTW/fftw3/commit/902d0982522cdf6f0acd60f01f59203824e8e6f3
     conflicts('%gcc@8:8.9999', when="@3.3.7")
 
+    provides('fftw-api@2', when='@2.1.5')
+    provides('fftw-api@3', when='@3:')
+
     @property
     def libs(self):
 
diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py
index e11b4c8e47253e1d0a9e9181192ccea902f8435a..4b04e97d34bd7aef650a39543dc23cba3c07c66f 100644
--- a/var/spack/repos/builtin/packages/intel-mkl/package.py
+++ b/var/spack/repos/builtin/packages/intel-mkl/package.py
@@ -53,6 +53,7 @@ class IntelMkl(IntelPackage):
     provides('lapack')
     provides('scalapack')
     provides('mkl')
+    provides('fftw-api@3', when='@2017:')
 
     if sys.platform == 'darwin':
         # there is no libmkl_gnu_thread on macOS