summaryrefslogtreecommitdiff
path: root/do_autogen.sh
diff options
context:
space:
mode:
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>2011-02-03 06:50:32 -0800
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>2011-02-03 09:15:59 -0800
commit52866751c48ec0caa2f08186e775b012ecd5b258 (patch)
tree8af2ce5ad857b100fe509e63674d2bb30e07454f /do_autogen.sh
parent09c38e8edadb3a5bf470ff9b0409172e0c61e012 (diff)
downloadceph-52866751c48ec0caa2f08186e775b012ecd5b258.tar.gz
Add do_autogen.sh
It's handy when making builds with various different warning levels. Also saves you from having to remember --prefix, etc. all the time. Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
Diffstat (limited to 'do_autogen.sh')
-rwxr-xr-xdo_autogen.sh97
1 files changed, 97 insertions, 0 deletions
diff --git a/do_autogen.sh b/do_autogen.sh
new file mode 100755
index 00000000000..ba57bfd3eaa
--- /dev/null
+++ b/do_autogen.sh
@@ -0,0 +1,97 @@
+#!/bin/bash
+
+usage() {
+ cat <<EOF
+do_autogen.sh: make a ceph build by running autogen, etc.
+
+-h: this help message
+-3: build 32-bit
+-6: build 64-bit
+-d <level> debug build
+ level 0: no debug
+ level 1: -g
+ level 2: -Wall
+ level 3: -Wextra
+ level 4: even more...
+
+EOF
+}
+
+die() {
+ echo $@
+ exit 1
+}
+
+debug_level=0
+verbose=0
+CFLAGS=""
+CXXFLAGS=""
+while getopts "36d:hv" flag
+do
+ case $flag in
+ 3) CFLAGS="$CFLAGS -m32";;
+
+ 6) CFLAGS="$CFLAGS -m64";;
+
+ d) debug_level=$OPTARG;;
+
+ h) usage
+ exit 0;;
+
+ v) verbose=1;;
+
+ *)
+ echo
+ usage
+ exit 1;;
+ esac
+done
+
+if [ "${debug_level}" -ge 1 ]; then
+ CFLAGS="${CFLAGS} -g"
+fi
+if [ "${debug_level}" -ge 2 ]; then
+ CFLAGS="${CFLAGS} -Wall -Wvolatile-register-var"
+fi
+if [ "${debug_level}" -ge 3 ]; then
+ CFLAGS="${CFLAGS} -Wextra \
+-Wno-missing-field-initializers -Wno-missing-declarations"
+fi
+if [ "${debug_level}" -ge 4 ]; then
+ CXXFLAGS="${CXXFLAGS} -Wstrict-null-sentinel -Woverloaded-virtual"
+ CFLAGS="${CFLAGS} \
+-Wuninitialized -Winit-self \
+-Wformat=2 -Wunused -Wfloat-equal \
+-Wundef -Wunsafe-loop-optimizations -Wpointer-arith -Wcast-qual \
+-Wcast-align -Wwrite-strings -Wlogical-op \
+-Wmissing-format-attribute -Wredundant-decls -Winvalid-pch"
+fi
+
+if [ "${debug_level}" -ge 5 ]; then
+ CFLAGS="${CFLAGS} -Wswitch-enum -Wpacked"
+fi
+if [ "${debug_level}" -ge 2000 ]; then
+ CFLAGS="${CFLAGS} -Wsign-promo -Wconversion -Waggregate-return -Wlong-long"
+ CXXFLAGS="${CXXFLAGS} -Wold-style-cast"
+fi
+
+# Warning about unused parameters just leads to a lot of pointless spew when
+# using C++. It doesn't interact well with class inheritance.
+CFLAGS="${CFLAGS} -Wno-unused-parameter"
+
+CXXFLAGS="${CXXFLAGS} ${CFLAGS}"
+
+if [ "${verbose}" -ge 1 ]; then
+ echo "CFLAGS=${CFLAGS}"
+ echo "CXXFLAGS=${CFLAGS}"
+fi
+
+export CFLAGS
+export CXXFLAGS
+
+./autogen.sh || die "autogen failed"
+
+./configure \
+--prefix=/usr --sbindir=/sbin --localstatedir=/var --sysconfdir=/etc \
+--with-gtk2=yes --with-debug \
+|| die "configure failed"