diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..7a685260023df9d4d1cd28886e5669897799a9f5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,56 @@
+
+# Toplevel Makefile for Purr Data. Please note that at present this is just a
+# thin wrapper around l2ork_addons/tar_em_up.sh, the traditional Pd-l2ork
+# build script.
+
+# The Pd-l2ork build system is very arcane and intricate. Its main purpose is
+# building installers for the supported platforms, compiling sources is just a
+# byproduct. Therefore `make` will most likely rebuild lots of things even if
+# you just finished another build.
+
+# The available build targets are:
+
+# all: produce a native installer for the host platform (equivalent to
+# `tar_em_up.sh -Tk`); note that in order to force a complete rebuild (like
+# what `tar_em_up.sh -T` does), you'll have to run `make clean` first
+
+# incremental: like `all`, but does an "incremental build" (equivalent to
+# `tar_em_up.sh -tk`), bypassing Gem which takes an eternity to compile; please
+# check the tar_em_up.sh script for details
+
+# checkout: convenience target to check out all submodules in preparation for
+# a subsequent build (the `all` and `rebuild` targets also do this
+# automatically when needed)
+
+# clean: does something similar to what `tar_em_up.sh` does in order to start
+# from a clean slate, so that a subsequent build starts from scratch again
+
+# realclean: put the sources into pristine state again (WARNING: this will get
+# rid of any uncommitted source changes, too); use this as a last resort to
+# get the sources into a compilable state again after things have gone awry
+
+all:
+	cd l2ork_addons && ./tar_em_up.sh -Tk
+
+incremental:
+	cd l2ork_addons && ./tar_em_up.sh -tk
+
+checkout:
+	git submodule update --init
+
+clean:
+	test $os == "osx" && make -C packages/darwin_app clean || true
+	cd pd/src && aclocal && autoconf && make clean || true
+	cd externals/miXed && make clean || true
+	cd Gem/src/ && test -f Makefile && make distclean || true
+	cd Gem/src/ && rm -rf ./.libs && rm -rf ./*/.libs
+	cd Gem/ && test -f Makefile && make distclean || true
+	cd Gem/ && rm -f gemglutwindow.pd_linux Gem.pd_linux
+
+realclean:
+	git submodule deinit --all -f
+	git checkout .
+	git clean -dff
+# git clean doesn't see these, but we need to get rid of them to prevent
+# subsequent mysterious build failures
+	rm -rf pd/lib $(addprefix externals/disis/, flext/configure stk/configure)