diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
index ca64bf110dde..a144d7d2b4eb 100644
--- a/src/gstreamer/meson.build
+++ b/src/gstreamer/meson.build
@@ -13,13 +13,23 @@ libcamera_gst_c_args = [
     '-DPACKAGE="@0@"'.format(meson.project_name()),
 ]
 
+glib_dep = dependency('glib', required : get_option('gstreamer'))
+
 gst_dep_version = '>=1.14.0'
 gstvideo_dep = dependency('gstreamer-video-1.0', version : gst_dep_version,
                           required : get_option('gstreamer'))
 gstallocator_dep = dependency('gstreamer-allocators-1.0', version : gst_dep_version,
                               required : get_option('gstreamer'))
 
-if gstvideo_dep.found() and gstallocator_dep.found()
+if glib_dep.found() and gstvideo_dep.found() and gstallocator_dep.found()
+    # The G_DECLARE_FINAL_TYPE macro from GLib creates static inline functions
+    # that, prior to GLib v2.63.0, were not marked as possibly unused. This
+    # causes clang to complain about the ones we are not using. Silence the
+    # -Wunused-function warning in that case.
+    if cc.get_id() == 'clang' and glib_dep.version().version_compare('<2.63.0')
+        libcamera_gst_c_args += [ '-Wno-unused-function' ]
+    endif
+
     libcamera_gst = shared_library('gstlibcamera',
         libcamera_gst_sources,
         c_args : libcamera_gst_c_args,
