diff --git a/configure.ac b/configure.ac
index adb59981..53ef704e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -288,12 +288,16 @@ fi
 AM_CONDITIONAL(HAVE_LIBDRM_NOUVEAU, [test "x$NOUVEAU" = xyes])
 
 AC_ARG_ENABLE(vc4, AS_HELP_STRING([--disable-vc4],
-	      [Enable building of vc4 tests (default: yes)]),
-	      [VC4=$enableval], [VC4=yes])
+	      [Enable building of vc4 tests (default: auto)]),
+	      [VC4=$enableval], [VC4=auto])
+if test "x$VC4" = xauto; then
+	PKG_CHECK_EXISTS([libdrm_vc4], [VC4=yes], [VC4=no])
+fi
 if test "x$VC4" = xyes; then
-	AC_DEFINE(BUILD_VC4, 1, [Have vc4 support])
+	PKG_CHECK_MODULES(DRM_VC4, [libdrm_vc4])
+	AC_DEFINE(HAVE_LIBDRM_VC4, 1, [Have vc4 support])
 fi
-AM_CONDITIONAL(BUILD_VC4, [test "x$VC4" = xyes])
+AM_CONDITIONAL(HAVE_LIBDRM_VC4, [test "x$VC4" = xyes])
 
 # Define a configure option for the shader debugger
 AC_ARG_ENABLE(shader-debugger, AS_HELP_STRING([--enable-shader-debugger],
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 9c511dc0..7b3d8778 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -10,7 +10,7 @@ libintel_tools_la_SOURCES = $(lib_source_list)
 noinst_LTLIBRARIES = libintel_tools.la
 noinst_HEADERS = check-ndebug.h
 
-if BUILD_VC4
+if HAVE_LIBDRM_VC4
     libintel_tools_la_SOURCES += 	\
         igt_vc4.c			\
         igt_vc4.h
diff --git a/lib/meson.build b/lib/meson.build
index 253548dc..ddf93ec6 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -47,7 +47,6 @@ lib_headers = [
 	'igt_dummyload.h',
 	'uwildmat/uwildmat.h',
 	'igt_kmod.h',
-	'igt_vc4.h',
 ]
 
 lib_sources = [
@@ -96,7 +95,6 @@ lib_sources = [
 	'igt_dummyload.c',
 	'uwildmat/uwildmat.c',
 	'igt_kmod.c',
-	'igt_vc4.c',
 ]
 
 lib_deps = [
@@ -120,6 +118,10 @@ else
 	lib_sources += 'stubs/drm/intel_bufmgr.c'
 endif
 
+if libdrm_vc4.found()
+	lib_headers += 'igt_vc4.h'
+	lib_sources += 'igt_vc4.c'
+endif
 if valgrind.found()
 	lib_deps += valgrind
 endif
diff --git a/meson.build b/meson.build
index 2361866b..b14617a5 100644
--- a/meson.build
+++ b/meson.build
@@ -32,6 +32,7 @@ config = configuration_data()
 
 libdrm = dependency('libdrm', version : '>=2.4.82')
 libdrm_intel = dependency('libdrm_intel', required : false)
+libdrm_vc4 = dependency('libdrm_vc4', required : false)
 libdrm_nouveau = dependency('libdrm_nouveau', required : false)
 libdrm_amdgpu = dependency('libdrm_amdgpu', required : false)
 
diff --git a/tests/Makefile.am b/tests/Makefile.am
index a4a16838..92b7ee6e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -10,7 +10,7 @@ if HAVE_LIBDRM_NOUVEAU
     TESTS_progs += $(NOUVEAU_TESTS)
 endif
 
-if BUILD_VC4
+if HAVE_LIBDRM_VC4
     TESTS_progs += $(VC4_TESTS)
 endif
 
@@ -143,6 +143,16 @@ prime_nv_api_CFLAGS = $(AM_CFLAGS) $(DRM_NOUVEAU_CFLAGS)
 prime_nv_api_LDADD = $(LDADD) $(DRM_NOUVEAU_LIBS)
 prime_nv_pcopy_CFLAGS = $(AM_CFLAGS) $(DRM_NOUVEAU_CFLAGS)
 prime_nv_pcopy_LDADD = $(LDADD) $(DRM_NOUVEAU_LIBS)
+vc4_create_bo_CFLAGS = $(AM_CFLAGS) $(DRM_VC4_CFLAGS)
+vc4_create_bo_LDADD = $(LDADD) $(DRM_VC4_LIBS)
+vc4_lookup_fail_CFLAGS = $(AM_CFLAGS) $(DRM_VC4_CFLAGS)
+vc4_lookup_fail_LDADD = $(LDADD) $(DRM_VC4_LIBS)
+vc4_dmabuf_poll_CFLAGS = $(AM_CFLAGS) $(DRM_VC4_CFLAGS)
+vc4_dmabuf_poll_LDADD = $(LDADD) $(DRM_VC4_LIBS)
+vc4_wait_bo_CFLAGS = $(AM_CFLAGS) $(DRM_VC4_CFLAGS)
+vc4_wait_bo_LDADD = $(LDADD) $(DRM_VC4_LIBS)
+vc4_wait_seqno_CFLAGS = $(AM_CFLAGS) $(DRM_VC4_CFLAGS)
+vc4_wait_seqno_LDADD = $(LDADD) $(DRM_VC4_LIBS)
 
 kms_chamelium_CFLAGS = $(AM_CFLAGS) $(XMLRPC_CFLAGS) $(LIBUDEV_CFLAGS)
 kms_chamelium_LDADD = $(LDADD) $(XMLRPC_LIBS) $(LIBUDEV_LIBS)
diff --git a/tests/meson.build b/tests/meson.build
index 5af4e515..20ff79dc 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -213,13 +213,6 @@ test_progs = [
 	'syncobj_wait',
 	'template',
 	'tools_test',
-	'vc4_create_bo',
-	'vc4_dmabuf_poll',
-	'vc4_label_bo',
-	'vc4_lookup_fail',
-	'vc4_tiling',
-	'vc4_wait_bo',
-	'vc4_wait_seqno',
 	'vgem_basic',
 	'vgem_slow',
 ]
@@ -245,6 +238,17 @@ if libdrm_nouveau.found()
 	test_deps += libdrm_nouveau
 endif
 
+if libdrm_vc4.found()
+	test_progs += [
+		'vc4_create_bo',
+		'vc4_dmabuf_poll',
+		'vc4_lookup_fail',
+		'vc4_wait_bo',
+		'vc4_wait_seqno',
+	]
+	test_deps += libdrm_vc4
+endif
+
 if chamelium.found()
 	test_progs += [
 		'kms_chamelium',
