diff --git a/data/capsule-mkstublib b/data/capsule-mkstublib
index 6dd127c70f185f31ff3712e8a7635c341190166f..435f4b6437fd3045d612e9bf522cf161db542598 100755
--- a/data/capsule-mkstublib
+++ b/data/capsule-mkstublib
@@ -30,6 +30,9 @@ usage ()
 cat << EOF
 Usage: $me [OPTIONS] TARGET EXCLUDES EXPORTS OUTPUT [DSO-VERSION [TREE]]"
     Options:
+        --capsule-pkgdatadir=PATH
+                                Use supporting files from PATH
+                                [default: libcapsule's \${pkgdatadir}]
         --capsule-symbols-tool=PATH
                                 Use replacement capsule-symbols(1)
         --symbols-from=PATH     Use symbols from this file
@@ -173,8 +176,6 @@ then
     symbol_file=${proxy_src%.c}.symbols;
 fi
 
-sharedir=$($PKG_CONFIG --variable=makeinc capsule)
-
 exec >$proxy_src.tmp;
 
 echo '#include "capsule/capsule-shim.h"'
diff --git a/debian/.gitignore b/debian/.gitignore
index ac17ff818e8d58310db93ef59a5a892cc8504056..8d3085c413d33b85e13210a8d07fa228576bbc28 100644
--- a/debian/.gitignore
+++ b/debian/.gitignore
@@ -3,6 +3,8 @@
 /*.substvars
 /autoreconf*
 /files
+/libGL-proxy/
+/libGL-proxy-build/
 /libcapsule-dev
 /libcapsule-dev-bin
 /libcapsule-tests
diff --git a/debian/libcapsule-dev.examples b/debian/libcapsule-dev.examples
new file mode 100644
index 0000000000000000000000000000000000000000..06bcb71ab4c700205540493a652834d6adc50790
--- /dev/null
+++ b/debian/libcapsule-dev.examples
@@ -0,0 +1 @@
+debian/libGL-proxy
diff --git a/debian/libcapsule-tests.install b/debian/libcapsule-tests.install
index c564fec23484316244c5a664df78fe055ed9f97e..f7923db252571c777029258edb3ff3693bf7ec83 100644
--- a/debian/libcapsule-tests.install
+++ b/debian/libcapsule-tests.install
@@ -1,2 +1,3 @@
+usr/lib/*/libcapsule/shims
 usr/lib/libcapsule/installed-tests/libcapsule
 usr/share/installed-tests/libcapsule
diff --git a/debian/rules b/debian/rules
index c42c5141713515cdde56732a5beb5d4f8f097105..5dd1d65158d61fa7059e1c35cd9b25fa1e4bfa63 100755
--- a/debian/rules
+++ b/debian/rules
@@ -10,8 +10,50 @@ confflags = --libexecdir=\$${exec_prefix}/lib/libcapsule --enable-gtk-doc
 override_dh_auto_configure:
 	dh_auto_configure -- $(confflags)
 
+proxy_vars = \
+	CAPSULE_CFLAGS="-I$(CURDIR)" \
+	CAPSULE_LIBS="-L$(CURDIR)/.libs -lcapsule" \
+	CAPSULE_MKINC="$(CURDIR)/data" \
+	CAPSULE_MKSTUBLIB_TOOL="$(CURDIR)/data/capsule-mkstublib" \
+	CAPSULE_SYMBOLS_TOOL="$(CURDIR)/capsule-symbols" \
+	CAPSULE_VERSION_TOOL="$(CURDIR)/capsule-version" \
+	$(NULL)
+
+override_dh_auto_build:
+	dh_auto_build
+	$(proxy_vars) ./data/capsule-init-project \
+		--capsule-pkgdatadir="$(CURDIR)/data" \
+		--destination="$(CURDIR)/debian/libGL-proxy" \
+		--no-autoreconf \
+		--package-name=libGL-proxy \
+		--search-tree=/nonexistent \
+		--symbols-from-dir="$(CURDIR)/examples/shim" \
+		libGL.so.1/1 \
+		libX11.so.6/6 \
+		libXext.so.6/6 \
+		libxcb-dri2.so.0/0 \
+		libxcb-glx.so.0/0 \
+		libxcb-present.so.0/0 \
+		libxcb-sync.so.1/1 \
+		libxcb.so.1/1 \
+		$(NULL)
+	# Copy it, so we can install the original source as an example
+	cp -a debian/libGL-proxy debian/libGL-proxy-build
+	cd debian/libGL-proxy-build && autoreconf -fi
+	cd debian/libGL-proxy-build && ./configure --prefix=/usr $(proxy_vars)
+	$(MAKE) -C debian/libGL-proxy-build V=1 $(proxy_vars)
+
+override_dh_auto_install:
+	dh_auto_install
+	$(MAKE) -C debian/libGL-proxy-build install V=1 $(proxy_vars) \
+		DESTDIR=$(CURDIR)/debian/libGL-proxy-build/shims
+	install -d debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libcapsule/shims
+	mv debian/libGL-proxy-build/shims/usr/lib/* \
+		debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libcapsule/shims
+
 override_dh_install:
 	rm -f debian/tmp/usr/lib/*/*.la
+	rm -f debian/tmp/usr/lib/*/libcapsule/shims/*.la
 	find debian/tmp/usr/lib/libcapsule/installed-tests -name '*.la' -print -delete
 	# Only keep the architecture-qualified version, delete the unprefixed
 	# version, so we can be Multi-Arch: same