#! /bin/sh mode="" cxxfilt="" # For g++ 3.X, the PurifyPlus tools needs a program named "cxxfilt", # "c++file" or similar. It is part of libtool. If not found, you can # specify the path to it. while test $# -gt 0 do case "$1" in --debug) EXTRA_CONFIG_FLAGS=--with-debug ;; --purify) mode=purify ;; --purecov*) mode=purecov ;; --quantify) mode=quantify ;; --cxxfilt) shift ; cxxfilt=$1 ;; -h | --help ) echo "Usage: $0 [ options ]" echo "Where the 'options' are" echo " --help | -h Display this help" echo " --debug Compile with DBUG enabled" echo " --purify Only prepare for Purify" echo " --purecov Only prepare for PureCover" echo " --quantify Only prepare for Quantify" echo " --cxxfilt Path to cxxfilt/c++filt program" echo " This program is needed for gcc 3.X" exit 0 ;; *) echo "No such option '$1'" ; exit 1 ;; esac shift done make -k maintainer-clean || true /bin/rm -f */.deps/*.P config.cache path=`dirname $0` . "$path/autorun.sh" CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -DHAVE_valgrind -DEXTRA_DEBUG -O2" CXX=g++ CXXLD=g++ CXXFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -DHAVE_valgrind -DEXTRA_DEBUG -O2" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-embedded-server --with-innodb $EXTRA_CONFIG_FLAGS make -j 4 # ---------------------------------------------------------------------- #set -x purifying_binaries () { while test $1 do dir=$1 shift target=$1 shift binary=$1 shift opts="" if [ -n "$cxxfilt" ] ; then opts="$opts -demangle-program=$cxxfilt" fi opts="$opts -best-effort" back=`pwd` cd $dir # Because of libtool magic, the target and binary # created might not be the same. To trigger rebuild, # we need to move them both. mv $binary $binary-old if [ -f $target ] ; then mv $target $target-old fi if [ -n "$mode" -a $mode = purify ] ; then make CCLD="purify $opts gcc" CXXLD="purify $opts g++" $target mv $binary $binary-purify fi if [ -n "$mode" -a $mode = quantify ] ; then make CCLD="quantify $opts gcc" CXXLD="quantify $opts g++" $target mv $binary $binary-quantify fi if [ -n "$mode" -a $mode = purecov ] ; then make CCLD="purecov $opts gcc" CXXLD="purecov $opts g++" $target mv $binary $binary-purecov fi mv $binary-old $binary if [ -f $target-old ] ; then mv $target-old $target fi cd $back done } purifying_binaries \ sql mysqld mysqld \ client mysqltest .libs/mysqltest \ tests mysql_client_test mysql_client_test \ libmysqld/examples mysqltest_embedded mysqltest_embedded \ libmysqld/examples mysql_client_test_embedded mysql_client_test_embedded # ----------------------------------------------------------------------