166 lines
4.2 KiB
Bash
Executable file
166 lines
4.2 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# acprep, version 3.0
|
|
#
|
|
# This script configures my ledger source tree on my Mac OS/X machine.
|
|
# This is not necessary, however, since I keep all the files necessary
|
|
# for building checked in to the source tree. Users can just type
|
|
# './configure && make'. This script simply sets up the compiler and
|
|
# linker flags for all the various build permutations I use for testing
|
|
# and profiling.
|
|
|
|
export AUTOCONF_VERSION=2.61
|
|
export AUTOMAKE_VERSION=1.9
|
|
|
|
touch AUTHORS COPYING ChangeLog
|
|
|
|
cmd=$(which glibtoolize 2>&1)
|
|
if [ -x "$cmd" ]; then
|
|
export LIBTOOLIZE="$cmd"
|
|
fi
|
|
|
|
COMMIT=$(git describe --all --long | sed 's/heads\///')
|
|
|
|
cat configure.tmpl | \
|
|
sed "s/%VERSION%/$COMMIT/" > configure.in
|
|
|
|
autoreconf --force --install
|
|
|
|
INCDIRS="-I/usr/local/include -I/opt/local/include"
|
|
INCDIRS="$INCDIRS -isystem /usr/local/include/boost-1_35"
|
|
|
|
LIBDIRS="-L/usr/local/lib -L/opt/local/lib"
|
|
|
|
PYTHON_HOME="/usr"
|
|
|
|
# Use the latest g++, if it's been installed (with Xcode 3.1 on OS X)
|
|
if [ -x /usr/bin/g++-4.2 ]; then
|
|
CXX=g++-4.2
|
|
fi
|
|
|
|
|
|
SYSTEM=$(uname -s)
|
|
|
|
if [ $SYSTEM = Linux ]; then
|
|
CXXFLAGS="-pthread"
|
|
elif [ $SYSTEM = Solaris ]; then
|
|
CXXFLAGS="-pthreads"
|
|
elif [ $SYSTEM = Darwin ]; then
|
|
#CXXFLAGS="-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk"
|
|
#CXXFLAGS="$CXXFLAGS -Wno-long-double"
|
|
#LIBDIRS="$LIBDIRS -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk"
|
|
CXXFLAGS=""
|
|
else
|
|
CXXFLAGS=""
|
|
fi
|
|
|
|
# Building the command-line tool as a shared library is a luxury,
|
|
# since there are no clients except a GUI tool which might use it (and
|
|
# that is built again anyway by Xcode).
|
|
SWITCHES=""
|
|
CPPFLAGS="$INCDIRS"
|
|
CXXFLAGS="$CXXFLAGS -pipe"
|
|
LDFLAGS="$LIBDIRS"
|
|
LOCAL=false
|
|
|
|
# Warning flags
|
|
CXXFLAGS="$CXXFLAGS -Wall -ansi -Winvalid-pch"
|
|
CXXFLAGS="$CXXFLAGS -Wextra"
|
|
#CXXFLAGS="$CXXFLAGS -Weffc++"
|
|
CXXFLAGS="$CXXFLAGS -Wcast-align"
|
|
CXXFLAGS="$CXXFLAGS -Wcast-qual"
|
|
CXXFLAGS="$CXXFLAGS -Wconversion"
|
|
CXXFLAGS="$CXXFLAGS -Wfloat-equal"
|
|
CXXFLAGS="$CXXFLAGS -Wmissing-field-initializers"
|
|
CXXFLAGS="$CXXFLAGS -Wno-endif-labels"
|
|
CXXFLAGS="$CXXFLAGS -Wold-style-cast"
|
|
CXXFLAGS="$CXXFLAGS -Woverloaded-virtual"
|
|
CXXFLAGS="$CXXFLAGS -Wshorten-64-to-32"
|
|
CXXFLAGS="$CXXFLAGS -Wsign-compare"
|
|
CXXFLAGS="$CXXFLAGS -Wsign-promo"
|
|
CXXFLAGS="$CXXFLAGS -Wstrict-null-sentinel"
|
|
CXXFLAGS="$CXXFLAGS -Wwrite-strings"
|
|
|
|
|
|
while [ -n "$1" ]; do
|
|
case "$1" in
|
|
--devel)
|
|
#SWITCHES="$SWITCHES --disable-shared --enable-pch"
|
|
SWITCHES="$SWITCHES --disable-shared"
|
|
CPPFLAGS="$CPPFLAGS -DBOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING=1"
|
|
CPPFLAGS="$CPPFLAGS -DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE=1"
|
|
shift 1 ;;
|
|
|
|
--debug)
|
|
SWITCHES="$SWITCHES --enable-debug"
|
|
#CPPFLAGS="$CPPFLAGS -D_GLIBCXX_DEBUG=1"
|
|
CXXFLAGS="$CXXFLAGS -g"
|
|
shift 1 ;;
|
|
|
|
--boost)
|
|
shift 1
|
|
SWITCHES="$SWITCHES --with-boost-suffix=$1"
|
|
shift 1 ;;
|
|
|
|
--gcov)
|
|
CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
|
|
shift 1 ;;
|
|
|
|
--gprof)
|
|
CXXFLAGS="$CXXFLAGS -g -pg"
|
|
shift 1 ;;
|
|
|
|
--python)
|
|
if [ -d "$PYTHON_HOME" ]; then
|
|
SWITCHES="$SWITCHES --enable-python"
|
|
CPPFLAGS="$CPPFLAGS -I$PYTHON_HOME/include/python2.5"
|
|
LDFLAGS="$LDFLAGS -L$PYTHON_HOME/lib/python2.5/config"
|
|
fi
|
|
shift 1;;
|
|
|
|
--pic)
|
|
CXXFLAGS="$CXXFLAGS -fPIC"
|
|
shift 1 ;;
|
|
|
|
--opt)
|
|
CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -O3"
|
|
shift 1 ;;
|
|
|
|
--local)
|
|
LOCAL=true
|
|
shift 1 ;;
|
|
|
|
*)
|
|
break ;;
|
|
esac
|
|
done
|
|
|
|
|
|
HERE="$PWD"
|
|
|
|
if [ "$LOCAL" = "false" -a -d "$HOME/Products" ]; then
|
|
version=""
|
|
if [ -x version ]; then
|
|
version="-$(./version)"
|
|
fi
|
|
#projdir="$HOME/Products/$(basename $HERE)"
|
|
#projdir="$projdir$version"
|
|
projdir="$HOME/Products/ledger"
|
|
if [ ! -d "$projdir" ]; then
|
|
mkdir -p "$projdir"
|
|
fi
|
|
cd "$projdir" || (echo "Cannot change to $projdir"; exit 1)
|
|
fi
|
|
|
|
"$HERE/configure" --srcdir="$HERE" CXX="$CXX" \
|
|
CPPFLAGS="$CPPFLAGS" CXXFLAGS="$CXXFLAGS $local_cxxflags" \
|
|
LDFLAGS="$LDFLAGS" LIBS="$LIBS" $SWITCHES "$@"
|
|
|
|
# Alter the Makefile so that it's not nearly so verbose. This makes finding
|
|
# errors and warnings much easier.
|
|
|
|
if [ -f Makefile ]; then
|
|
perl -i -pe 's/^\t(\$\((LIBTOOL|CXX)\).*)/\t\@echo " " CXX \$\@;$1 > \/dev\/null/;' Makefile
|
|
perl -i -pe 's/^\tmv -f/\t\@mv -f/;' Makefile
|
|
perl -i -pe 's/^\t(\$\((.*?)LINK\).*)/\t\@echo " " LD \$\@;$1 > \/dev\/null/;' Makefile
|
|
fi
|