diff --git a/meson_options.txt b/meson_options.txt
index 8121cf5d2..58cf52ad1 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -16,6 +16,21 @@ option('cam',
         value : 'auto',
         description : 'Compile the cam test application')
 
+option('cam-output-kms',
+        type : 'feature',
+        value : 'auto',
+        description : 'Enable KMS output in the cam application')
+
+option('cam-output-sdl2',
+        type : 'feature',
+        value : 'auto',
+        description : 'Enable SDL2 output in the cam application')
+
+option('cam-output-sdl2-jpeg',
+        type : 'feature',
+        value : 'auto',
+        description : 'Enable JPEG support in the SDL2 output in the cam application')
+
 option('documentation',
         type : 'feature',
         value : 'auto',
diff --git a/src/apps/cam/meson.build b/src/apps/cam/meson.build
index cd7f120f9..c73c0f5d9 100644
--- a/src/apps/cam/meson.build
+++ b/src/apps/cam/meson.build
@@ -17,9 +17,18 @@ cam_sources = files([
 
 cam_cpp_args = [apps_cpp_args]
 
-libdrm = dependency('libdrm', required : false)
-libjpeg = dependency('libjpeg', required : false)
-libsdl2 = dependency('SDL2', required : false)
+cam_deps = [
+    libatomic,
+    libcamera_public,
+    libevent,
+    libthreads,
+    libyaml,
+    libtiff,
+]
+
+libdrm = dependency('libdrm', required : get_option('cam-output-kms'))
+libsdl2 = dependency('SDL2', required : get_option('cam-output-sdl2'))
+libjpeg = dependency('libjpeg', required : get_option('cam-output-sdl2-jpeg'))
 
 if libdrm.found()
     cam_cpp_args += [ '-DHAVE_KMS' ]
@@ -27,6 +36,9 @@ if libdrm.found()
         'drm.cpp',
         'kms_sink.cpp'
     ])
+    cam_deps += [
+        libdrm,
+    ]
 endif
 
 if libsdl2.found()
@@ -37,28 +49,24 @@ if libsdl2.found()
         'sdl_texture_1plane.cpp',
         'sdl_texture_yuv.cpp',
     ])
+    cam_deps += [
+        libsdl2,
+    ]
 
     if libjpeg.found()
         cam_cpp_args += ['-DHAVE_LIBJPEG']
         cam_sources += files([
             'sdl_texture_mjpg.cpp'
         ])
+        cam_deps += [
+            libjpeg,
+        ]
     endif
 endif
 
 cam  = executable('cam', cam_sources,
                   link_with : apps_lib,
-                  dependencies : [
-                      libatomic,
-                      libcamera_public,
-                      libdrm,
-                      libevent,
-                      libjpeg,
-                      libsdl2,
-                      libtiff,
-                      libthreads,
-                      libyaml,
-                  ],
+                  dependencies : cam_deps,
                   cpp_args : cam_cpp_args,
                   install : true,
                   install_tag : 'bin')
