diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py
index aedd5edc85a2b1a6f7166d98d854bc40689e8c4b..e4a23c67e5ba933cd5eb761cccfa8a7d29278637 100644
--- a/var/spack/repos/builtin/packages/libxsmm/package.py
+++ b/var/spack/repos/builtin/packages/libxsmm/package.py
@@ -46,6 +46,8 @@ class Libxsmm(MakefilePackage):
             description='Unoptimized with call-trace (LIBXSMM_TRACE).')
     variant('header-only', default=False,
             description='Produce header-only installation')
+    variant('generator', default=False,
+            description='build generator executables')
     conflicts('+header-only', when='@:1.6.2',
               msg='Header-only is available since v1.6.2!')
 
@@ -88,6 +90,10 @@ def build(self, spec, prefix):
 
         make(*make_args)
 
+        if '+generator' in spec:
+            make_args += ['generator']
+            make(*make_args)
+
     def install(self, spec, prefix):
         install_tree('include', prefix.include)
 
@@ -101,6 +107,10 @@ def install(self, spec, prefix):
             install_tree('src', prefix.src)
         else:
             install_tree('lib', prefix.lib)
+
+        if '+generator' in spec:
+            install_tree('bin', prefix.bin)
+
         mkdirp(prefix.doc)
         for doc_file in glob(join_path('documentation', '*.md')):
             install(doc_file, prefix.doc)