diff --git a/cmake_integration.py b/cmake_integration.py
index fba134ded1415aeb0fc36a449522cd8e0a2a1406..00321a58768549452a12d4edcec242650bf0916e 100644
--- a/cmake_integration.py
+++ b/cmake_integration.py
@@ -40,11 +40,12 @@ class CodeGeneration:
 
 def parse_json_args():
     default = {'EXPECTED_FILES': [],
-                  'CMAKE_VARS': {'WALBERLA_BUILD_WITH_OPENMP': False,
-                                 'WALBERLA_OPTIMIZE_FOR_LOCALHOST': False,
-                                 'WALBERLA_DOUBLE_ACCURACY': True,
-                                 'WALBERLA_BUILD_WITH_MPI': True}
-                  }
+               'CMAKE_VARS': {'WALBERLA_BUILD_WITH_OPENMP': False,
+                              'WALBERLA_OPTIMIZE_FOR_LOCALHOST': False,
+                              'WALBERLA_DOUBLE_ACCURACY': True,
+                              'WALBERLA_BUILD_WITH_MPI': True,
+                              'WALBERLA_BUILD_WITH_CUDA': False}
+               }
 
     if len(sys.argv) == 2:
         try:
@@ -72,6 +73,7 @@ class CodeGenerationContext:
         self.optimize_for_localhost = cmake_vars['WALBERLA_OPTIMIZE_FOR_LOCALHOST']
         self.mpi = cmake_vars['WALBERLA_BUILD_WITH_MPI']
         self.double_accuracy = cmake_vars['WALBERLA_DOUBLE_ACCURACY']
+        self.cuda = cmake_vars['WALBERLA_BUILD_WITH_CUDA']
 
     def write_file(self, name, content):
         self.files_written.append(os.path.abspath(name))
@@ -90,6 +92,7 @@ class ManualCodeGenerationContext:
         self.mpi = mpi
         self.double_accuracy = double_accuracy
         self.files = dict()
+        self.cuda = False
 
     def write_file(self, name, content):
         self.files[name] = content
diff --git a/codegen.py b/codegen.py
index fb7fc6e3edd8b47d722825089fa7c282accbf710..4d7612dce85673b337e38e09b84d51be4e7ea85f 100644
--- a/codegen.py
+++ b/codegen.py
@@ -23,6 +23,9 @@ def generate_sweep(generation_context, class_name, assignments,
 
     create_kernel_params = default_create_kernel_parameters(generation_context, create_kernel_params)
 
+    if not generation_context.cuda and create_kernel_params['target'] == 'gpu':
+        return
+
     if not staggered:
         ast = create_kernel(assignments, **create_kernel_params)
     else:
@@ -105,6 +108,9 @@ def generate_pack_info(generation_context, class_name: str,
     create_kernel_params = default_create_kernel_parameters(generation_context, create_kernel_params)
     target = create_kernel_params.get('target', 'cpu')
 
+    if not generation_context.cuda and target == 'gpu':
+        return
+
     fields_accessed = set()
     for terms in directions_to_pack_terms.values():
         for term in terms: