diff --git a/contrib/src/basu/SHA512SUMS b/contrib/src/basu/SHA512SUMS
new file mode 100644
index 0000000000000000000000000000000000000000..1157f6976c587601dabbefd6d1e832b6315f888d
--- /dev/null
+++ b/contrib/src/basu/SHA512SUMS
@@ -0,0 +1 @@
+dbc2f72b6e1a880fa41fe6067a38a301f456e4305dae6eb4d465089d7d9c2f629677ba23752b3e1a1fd476cb440db01ef3a218c1c976f38d0058eed584c80165  basu-0.2.0.tar.gz
diff --git a/contrib/src/basu/rules.mak b/contrib/src/basu/rules.mak
new file mode 100644
index 0000000000000000000000000000000000000000..114e91ae7fa8dda672a71b98b44414a078186001
--- /dev/null
+++ b/contrib/src/basu/rules.mak
@@ -0,0 +1,30 @@
+# basu
+BASU_VERSION := 0.2.0
+BASU_URL := http://git.sr.ht/~emersion/basu/refs/download/v$(BASU_VERSION)/basu-$(BASU_VERSION).tar.gz
+
+ifdef HAVE_LINUX
+ifndef HAVE_ANDROID
+PKGS += basu
+endif
+endif
+
+ifdef HAVE_BSD
+ifndef HAVE_DARWIN_OS
+PKGS += basu
+endif
+endif
+
+$(TARBALLS)/basu-$(BASU_VERSION).tar.gz:
+	$(call download_pkg,$(BASU_URL),basu)
+
+.sum-basu: basu-$(BASU_VERSION).tar.gz
+
+basu: basu-$(BASU_VERSION).tar.gz .sum-basu
+	$(UNPACK)
+	$(MOVE)
+
+.basu: basu crossfile.meson
+	cd $< && rm -rf ./build
+	cd $< && $(HOSTVARS_MESON) $(MESON) build
+	cd $< && cd build && ninja install
+	touch $@