diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build
index f14869f3a3c0..059c68bb964f 100644
--- a/src/libcamera/pipeline/meson.build
+++ b/src/libcamera/pipeline/meson.build
@@ -3,6 +3,15 @@
 # Location of pipeline specific configuration files
 pipeline_data_dir = libcamera_datadir / 'pipeline'
 
+# Allow multi-level directory structuring for the pipeline handlers if needed.
+subdirs = []
+
 foreach pipeline : pipelines
+    pipeline = pipeline.split('/')[0]
+    if pipeline in subdirs
+        continue
+    endif
+
     subdir(pipeline)
+    subdirs += [pipeline]
 endforeach
