#!/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/sw/include -I/opt/local/include" INCDIRS="$INCDIRS -I/usr/local/include" INCDIRS="$INCDIRS -I/usr/local/include/boost-1_35" LIBDIRS="-L/sw/lib -L/opt/local/lib" LIBDIRS="$LIBDIRS -L/usr/local/lib" PYTHON_HOME="/usr" 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.4u.sdk" CXXFLAGS="$CXXFLAGS -Wno-long-double" #LIBDIRS="$LIBDIRS -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk" 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="-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" ;; --debug) SWITCHES="$SWITCHES --enable-debug" #CPPFLAGS="$CPPFLAGS -D_GLIBCXX_DEBUG=1" CXXFLAGS="$CXXFLAGS -g" ;; --boost) shift 1 SWITCHES="$SWITCHES --with-boost-suffix=$1" ;; --gcov) CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage" ;; --gprof) CXXFLAGS="$CXXFLAGS -g -pg" ;; --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 ;; --pic) CXXFLAGS="$CXXFLAGS -fPIC" ;; --opt) CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -O3" ;; --local) LOCAL=true ;; *) break ;; esac shift 1 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