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