bootstrap: Add dev mode

Running `./bootstrap.sh dev` enables various sanitisers in GCC and
code-coverage targets in the generated Makefile. `./configure` is run
automatically as part of dev mode, as it is a shortcut for adding the
above options to the configure script invocation.

Change-Id: I48b9a312f438efd070ad5f982be80326894b1141
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
diff --git a/bootstrap.sh b/bootstrap.sh
index 50b75b7..11c8ae9 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -1,10 +1,20 @@
 #!/bin/sh
 
+set -eu
+
 AUTOCONF_FILES="Makefile.in aclocal.m4 ar-lib autom4te.cache compile \
         config.guess config.h.in config.sub configure depcomp install-sh \
         ltmain.sh missing *libtool test-driver"
 
-case $1 in
+BOOTSTRAP_MODE=""
+
+if [ $# -gt 0 ];
+then
+    BOOTSTRAP_MODE="${1}"
+    shift 1
+fi
+
+case ${BOOTSTRAP_MODE} in
     clean)
         test -f Makefile && make maintainer-clean
         for file in ${AUTOCONF_FILES}; do
@@ -15,4 +25,17 @@
 esac
 
 autoreconf -i
-echo 'Run "./configure ${CONFIGURE_FLAGS} && make"'
+
+case ${BOOTSTRAP_MODE} in
+    dev)
+        FLAGS="-fsanitize=address -fsanitize=leak -fsanitize=undefined -Wall -Werror"
+        ./configure \
+            CFLAGS="${FLAGS}" \
+            CXXFLAGS="${FLAGS}" \
+            --enable-code-coverage \
+            "$@"
+        ;;
+    *)
+        echo 'Run "./configure ${CONFIGURE_FLAGS} && make"'
+        ;;
+esac