diff --git a/bin/metatest b/bin/metatest
new file mode 100755
index 0000000000000000000000000000000000000000..5daa5c9df32de17bfd446781bba7a8cc922cb9a4
--- /dev/null
+++ b/bin/metatest
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+SRCPATH=`dirname $0`
+SRCPATH=`dirname $SRCPATH`
+
+case $SRCPATH in
+  /*) ;;
+  *) SRCPATH=`pwd`/$SRCPATH ;;
+esac
+
+set -e
+set -x
+
+docompile() {
+  mkdir test1
+  cd test1
+  $SRCPATH/src/configure --cache-file ../testcache
+  make "$1"
+  make verify "$1"
+  make verify LPCOPTS=-d2 "$1"
+  cd ..
+  rm -rf test1
+}
+
+docompile2() {
+  docompile DEBUGDEF="$1 -DDEBUG"
+  docompile DEBUGDEF="$1"
+}
+
+docompile3() {
+  docompile2 "$1 -DALWAYS_GC"
+  docompile2 "$1 -DNO_GC"
+  docompile2 "$1"
+}
+
+docompile3
+rm testcache