diff --git a/meson.build b/meson.build
index 29777529a0d9..363de459e537 100644
--- a/meson.build
+++ b/meson.build
@@ -261,6 +261,7 @@ py_mod.find_installation('python3', modules : py_modules)
 summary({
             'Enabled pipelines': pipelines,
             'Enabled IPA modules': enabled_ipa_names,
+            'Hotplug support': libudev.found(),
             'Tracing support': tracing_enabled,
             'Android support': android_enabled,
             'GStreamer support': gst_enabled,
diff --git a/meson_options.txt b/meson_options.txt
index 4405b401d7d3..fad928af4b62 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -66,6 +66,11 @@ option('tracing',
         value : 'auto',
         description : 'Enable tracing (based on lttng)')
 
+option('udev',
+       type : 'feature',
+       value : 'auto',
+       description : 'Enable udev support for hotplug')
+
 option('v4l2',
         type : 'boolean',
         value : false,
diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
index 38fbb41e7d6c..b24f82965764 100644
--- a/src/libcamera/meson.build
+++ b/src/libcamera/meson.build
@@ -76,7 +76,7 @@ libdl = null_dep
 if not cc.has_function('dlopen')
     libdl = cc.find_library('dl')
 endif
-libudev = dependency('libudev', required : false)
+libudev = dependency('libudev', required : get_option('udev'))
 libyaml = dependency('yaml-0.1', required : false)
 
 # Use one of gnutls or libcrypto (provided by OpenSSL), trying gnutls first.
