diff --git a/cmake/modules/DunePerftoolMacros.cmake b/cmake/modules/DunePerftoolMacros.cmake
index 08f6b98bc72910c005c86bdd36f82d6525f923a0..c2bda2cfcfdf3ae0f7cb77de06a6f6074e1e23c9 100644
--- a/cmake/modules/DunePerftoolMacros.cmake
+++ b/cmake/modules/DunePerftoolMacros.cmake
@@ -108,8 +108,8 @@ function(add_generated_executable)
                     )
 
   add_executable(${GEN_TARGET} ${GEN_SOURCE} ${GEN_OPERATOR})
-
+  target_include_directories(${GEN_TARGET} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
   add_dependencies(generation ${GEN_TARGET})
 endfunction()
 
-include(GeneratedSystemtests)
\ No newline at end of file
+include(GeneratedSystemtests)
diff --git a/python/dune/perftool/compile.py b/python/dune/perftool/compile.py
index 694d7f1292630f5bf6f451cc5497746c5599a4b9..8a95f17a3e8f2a22fd99aadb2b1c28d1e4e6bec0 100644
--- a/python/dune/perftool/compile.py
+++ b/python/dune/perftool/compile.py
@@ -19,7 +19,9 @@ from dune.perftool.generation import (delete_cache_items,
 from dune.perftool.options import (get_option,
                                    initialize_options,
                                    )
-from dune.perftool.pdelab.driver import generate_driver
+from dune.perftool.pdelab.driver import (generate_driver,
+                                         set_driver_data,
+                                         )
 from dune.perftool.pdelab.localoperator import (generate_localoperator_basefile,
                                                 generate_localoperator_file,
                                                 generate_localoperator_kernels,
@@ -118,6 +120,9 @@ def compile_form():
     formdatas, data = read_ufl(get_option("uflfile"))
 
     with global_context(data=data, formdatas=formdatas):
+        # The driver module uses a global dictionary for storing necessary data
+        set_driver_data(formdatas, data)
+
         # Generate driver file
         if get_option("driver_file"):
             generate_driver(formdatas, data)
diff --git a/python/dune/perftool/pdelab/driver/__init__.py b/python/dune/perftool/pdelab/driver/__init__.py
index 14d0bd6ccee946ce78cf311685b0ac44d685edfd..acab1a5e4ddcb06f6cec34a17529a4c3678ee40c 100644
--- a/python/dune/perftool/pdelab/driver/__init__.py
+++ b/python/dune/perftool/pdelab/driver/__init__.py
@@ -12,6 +12,7 @@ NB: Previously this __init__.py was a module driver.py. As it was growing,
 """
 from dune.perftool.error import PerftoolCodegenError
 from dune.perftool.generation import (generator_factory,
+                                      get_global_context_value,
                                       global_context,
                                       include_file,
                                       cached,
@@ -74,7 +75,7 @@ def is_stationary():
 
 def form_name_suffix(name, formdata):
     from dune.perftool.pdelab.localoperator import name_form
-    data = _driver_data['data']
+    data = get_global_context_value('data')
     form_name = name_form(formdata, data)
     return name + '_' + form_name
 
@@ -262,9 +263,6 @@ def check_parallel_execution():
 
 
 def generate_driver(formdatas, data):
-    # The driver module uses a global dictionary for storing necessary data
-    set_driver_data(formdatas, data)
-
     # Add check to c++ file if this program should only be used in parallel mode
     if get_option("parallel"):
         check_parallel_execution()