diff --git a/meson.build b/meson.build
index d02f9917965c..df9099d0b996 100644
--- a/meson.build
+++ b/meson.build
@@ -164,6 +164,23 @@ liblttng = dependency('lttng-ust', required : get_option('tracing'))
 # are enabled.
 pipelines = get_option('pipelines')
 
+if pipelines.contains('auto')
+    host_cpu = host_machine.cpu_family()
+    pipelines = []
+    if host_cpu == 'x86' or host_cpu == 'x86_64'
+        pipelines += ['ipu3']
+    elif host_cpu == 'aarch64'
+        pipelines += ['imx8-isi', 'rkisp1']
+    endif
+
+    if host_cpu == 'arm' or host_cpu == 'aarch64'
+        pipelines += ['raspberrypi', 'simple']
+    endif
+
+    # Always include the uvcvideo pipeline handler.
+    pipelines += ['uvcvideo']
+endif
+
 if get_option('test') and 'vimc' not in pipelines
     message('Enabling vimc pipeline handler to support tests')
     pipelines += ['vimc']
diff --git a/meson_options.txt b/meson_options.txt
index 1ba6778ce257..1a68bcd37e88 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -37,8 +37,18 @@ option('lc-compliance',
 
 option('pipelines',
         type : 'array',
-        choices : ['imx8-isi', 'ipu3', 'raspberrypi', 'rkisp1', 'simple', 'uvcvideo', 'vimc'],
-        description : 'Select which pipeline handlers to include')
+        value : ['auto'],
+        choices : [
+            'auto',
+            'imx8-isi',
+            'ipu3',
+            'raspberrypi',
+            'rkisp1',
+            'simple',
+            'uvcvideo',
+            'vimc'
+        ],
+        description : 'Select which pipeline handlers to build. If it this set to auto, all the pipelines applicable to the target architecture will be built.')
 
 option('qcam',
         type : 'feature',
