diff --git i/meson.build w/meson.build
index b159b4071..2a1c68891 100644
--- i/meson.build
+++ w/meson.build
@@ -313,7 +313,7 @@ endif
 
 if feature_conf.get('CAIRO_HAS_XCB_SURFACE', 0) == 1 and feature_conf.get('CAIRO_HAS_XLIB_SURFACE', 0) == 1
   # FIXME: automagic
-  x11xcb_dep = dependency('x11-xcb', required: false)
+  x11xcb_dep = dependency('x11-xcb', required: get_option('xlib-xcb'))
   if x11xcb_dep.found()
     deps += [x11xcb_dep]
     feature_conf.set('CAIRO_HAS_XLIB_XCB_FUNCTIONS', 1)
diff --git i/meson_options.txt w/meson_options.txt
index ff11fe7ed..d1ae959e1 100644
--- i/meson_options.txt
+++ w/meson_options.txt
@@ -17,6 +17,7 @@ option('qt', type : 'feature', value : 'disabled')
 option('tee', type : 'feature', value : 'disabled')
 option('xcb', type : 'feature', value : 'auto')
 option('xlib', type : 'feature', value : 'auto')
+option('xlib-xcb', type : 'feature', value : 'disabled')
 #option('xml', type : 'feature', value : 'disabled')
 option('zlib', type : 'feature', value : 'auto') # script, ps, pdf, xml surfaces