diff --git a/proofs/qfo/.gitignore b/proofs/qfo/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..93b95a23816f1aacc5e0b8e98be1cc23bae41ce5
--- /dev/null
+++ b/proofs/qfo/.gitignore
@@ -0,0 +1,2 @@
+psnj-qfo
+_build
diff --git a/proofs/qfo/Makefile b/proofs/qfo/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..0dc23571f980e4539c71167cf031247f976ad7d4
--- /dev/null
+++ b/proofs/qfo/Makefile
@@ -0,0 +1,29 @@
+PREFIX ?= /usr/local
+dune ?= dune
+
+_EXE = _build/default/bin/qfo.exe
+
+all: psnj-qfo psnj-qfo.1
+
+${_EXE}:
+	@dune build
+	
+psnj-qfo: ${_EXE}
+	@ln -sf ${_EXE} $@
+
+psnj-qfo.1: psnj-qfo
+	@./psnj-qfo --help=groff > $@
+
+install: psnj-qfo psnj-qfo.1
+	cp -Lf psnj-qfo ${PREFIX}/bin/
+	cp -Lf psnj-qfo.1 ${PREFIX}/man/man1/
+
+uninstall:
+	rm -f ${PREFIX}/bin/psnj-qfo
+	rm -f ${PREFIX}/man/man1/psnj-qfo.1
+
+clean:
+	rm -f psnj-qfo psnj-qfo.1
+	dune clean
+
+.PHONY: install uninstall clean