diff --git a/packages/hxtorch/package.py b/packages/hxtorch/package.py
index 0077e4ed8d5f78796c2675d0b7d6e8e1852bf95b..a470f65bdb39518d6c49648a6f71be0f2fdfde4d 100644
--- a/packages/hxtorch/package.py
+++ b/packages/hxtorch/package.py
@@ -129,11 +129,28 @@ class Hxtorch(WafPackage):
         env.set('WAF_CONFIGURE_LD_LIBRARY_PATH', ':'.join(library))
         env.prepend_path('PATH', ':'.join(path))
 
-    def setup_dependent_build_environment(self, env, dependent_spec):
+    def _setup_common_env(self, env):
+        # TODO: use standard install layout for Python modules and extensions'
+        # shared objects => remove then
         env.prepend_path('PYTHONPATH', self.prefix.lib)
 
+        # grenade needs to find some libraries for the JIT-compilation of
+        # programs for BrainScaleS-2's embedded processor.
+        ppu_include_dirs = []
+        ppu_dep_names = ['bitsery', 'boost']
+        for ppu_dep_name in ppu_dep_names:
+            dep = self.spec[ppu_dep_name]
+            dep_include_dirs = set(dep.headers.directories)
+            print('ppu includes (', dep.name, '):', dep_include_dirs, "\n")
+            ppu_include_dirs.extend(list(dep_include_dirs))
+        env.set('C_INCLUDE_PATH', ':'.join(ppu_include_dirs))
+        env.set('CPLUS_INCLUDE_PATH', ':'.join(ppu_include_dirs))
+
+    def setup_dependent_build_environment(self, env, dependent_spec):
+        self._setup_common_env(env)
+
     def setup_run_environment(self, env):
-        env.prepend_path('PYTHONPATH', self.prefix.lib)
+        self._setup_common_env(env)
 
     # override configure step as we perform a project setup first
     def configure(self, spec, prefix):
diff --git a/packages/pynn-brainscales/package.py b/packages/pynn-brainscales/package.py
index a6e58127c8df775aaf1658b51ba30efd49b521a1..ac532a84d565026c731f61361fe36e60599625ee 100644
--- a/packages/pynn-brainscales/package.py
+++ b/packages/pynn-brainscales/package.py
@@ -106,11 +106,28 @@ class PynnBrainscales(WafPackage):
         env.set('WAF_CONFIGURE_LD_LIBRARY_PATH', ':'.join(library))
         env.prepend_path('PATH', ':'.join(path))
 
-    def setup_dependent_build_environment(self, env, dependent_spec):
+    def _setup_common_env(self, env):
+        # TODO: use standard install layout for Python modules and extensions'
+        # shared objects => remove then
         env.prepend_path('PYTHONPATH', self.prefix.lib)
 
+        # grenade needs to find some libraries for the JIT-compilation of
+        # programs for BrainScaleS-2's embedded processor.
+        ppu_include_dirs = []
+        ppu_dep_names = ['bitsery', 'boost']
+        for ppu_dep_name in ppu_dep_names:
+            dep = self.spec[ppu_dep_name]
+            dep_include_dirs = set(dep.headers.directories)
+            print('ppu includes (', dep.name, '):', dep_include_dirs, "\n")
+            ppu_include_dirs.extend(list(dep_include_dirs))
+        env.set('C_INCLUDE_PATH', ':'.join(ppu_include_dirs))
+        env.set('CPLUS_INCLUDE_PATH', ':'.join(ppu_include_dirs))
+
+    def setup_dependent_build_environment(self, env, dependent_spec):
+        self._setup_common_env(env)
+
     def setup_run_environment(self, env):
-        env.prepend_path('PYTHONPATH', self.prefix.lib)
+        self._setup_common_env(env)
 
     # override configure step as we perform a project setup first
     def configure(self, spec, prefix):