diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 102 |
1 files changed, 58 insertions, 44 deletions
@@ -1,5 +1,22 @@ #! /bin/sh +# Test whether this shell is capable of parameter substring processing. +( option='a/b'; : ${option#*/} ) 2>/dev/null || { + echo " +The shell interpreting '$0' is lacking some required features. + +To work around this problem you may try to execute: + + ksh $0 $* + or + bash $0 $* +" + exit 1 +} + +# Store original IFS value so it can be changed (and restored) in many places. +readonly DEFAULT_IFS="$IFS" + srcdir=$(dirname "$0") # For a non-srcdir configure invocation (such as ../configure), create @@ -45,6 +62,16 @@ WITH_EMACS=1 WITH_BASH=1 WITH_ZSH=1 +# Compatible GMime versions (with constraints). +# If using GMime 2.6, we need to have a version >= 2.6.5 to avoid a +# crypto bug. We need 2.6.7 for permissive "From " header handling. +GMIME_24_VERSION_CTR='' +GMIME_24_VERSION="gmime-2.4 $GMIME_24_VERSION_CTR" +GMIME_26_VERSION_CTR='>= 2.6.7' +GMIME_26_VERSION="gmime-2.6 $GMIME_26_VERSION_CTR" + +WITH_GMIME_VERSIONS="$GMIME_26_VERSION;$GMIME_24_VERSION" + usage () { cat <<EOF @@ -101,6 +128,10 @@ Fine tuning of some installation directories is available: --bashcompletiondir=DIR Bash completions files [SYSCONFDIR/bash_completion.d] --zshcompletiondir=DIR Zsh completions files [PREFIX/share/zsh/functions/Completion/Unix] +Some specific library versions can be specified (auto-detected otherwise): + + --with-gmime-version=VERS Specify GMIME version (2.4 or 2.6) + Some features can be disabled (--with-feature=no is equivalent to --without-feature) : @@ -170,38 +201,16 @@ for option; do fi elif [ "${option}" = '--without-zsh-completion' ] ; then WITH_ZSH=0 + elif [ "${option%%=*}" = '--with-gmime-version' ] ; then + if [ "${option#*=}" = '2.4' ]; then + WITH_GMIME_VERSIONS=$GMIME_24_VERSION + elif [ "${option#*=}" = '2.6' ]; then + WITH_GMIME_VERSIONS=$GMIME_26_VERSION + fi elif [ "${option%%=*}" = '--build' ] ; then - build_option="${option#*=}" - case ${build_option} in - *-*-*) ;; - *) - echo "Unrecognized value for --build option: ${build_option}" - echo "Should be: <cpu>-<vendor>-<os>" - echo "See:" - echo " $0 --help" - echo "" - exit 1 - esac - build_cpu=${build_option%%-*} - build_option=${build_option#*-} - build_vendor=${build_option%%-*} - build_os=${build_option#*-} + true elif [ "${option%%=*}" = '--host' ] ; then - host_option="${option#*=}" - case ${host_option} in - *-*-*) ;; - *) - echo "Unrecognized value for --host option: ${host_option}" - echo "Should be: <cpu>-<vendor>-<os>" - echo "See:" - echo " $0 --help" - echo "" - exit 1 - esac - host_cpu=${host_option%%-*} - host_option=${host_option#*-} - host_vendor=${host_option%%-*} - host_os=${host_option#*-} + true elif [ "${option%%=*}" = '--infodir' ] ; then true elif [ "${option%%=*}" = '--datadir' ] ; then @@ -275,24 +284,27 @@ fi printf "Checking for GMime development files... " have_gmime=0 -for gmimepc in gmime-2.6 gmime-2.4; do +IFS=';' +for gmimepc in $WITH_GMIME_VERSIONS; do if pkg-config --exists $gmimepc; then printf "Yes ($gmimepc).\n" have_gmime=1 gmime_cflags=$(pkg-config --cflags $gmimepc) gmime_ldflags=$(pkg-config --libs $gmimepc) + break fi done +IFS=$DEFAULT_IFS if [ "$have_gmime" = "0" ]; then printf "No.\n" errors=$((errors + 1)) fi # GMime already depends on Glib >= 2.12, but we use at least one Glib -# function that only exists as of 2.14, (g_hash_table_get_keys) -printf "Checking for Glib development files (>= 2.14)... " +# function that only exists as of 2.22, (g_array_unref) +printf "Checking for Glib development files (>= 2.22)... " have_glib=0 -if pkg-config --exists 'glib-2.0 >= 2.14'; then +if pkg-config --exists 'glib-2.0 >= 2.22'; then printf "Yes.\n" have_glib=1 glib_cflags=$(pkg-config --cflags glib-2.0) @@ -362,9 +374,9 @@ elif [ $uname = "SunOS" ] ; then printf "Solaris.\n" platform=SOLARIS linker_resolves_library_dependencies=0 -elif [ $uname = "Linux" ] ; then - printf "Linux\n" - platform=LINUX +elif [ $uname = "Linux" ] || [ $uname = "GNU" ] ; then + printf "$uname\n" + platform="$uname" linker_resolves_library_dependencies=1 printf "Checking for $libdir_expanded in ldconfig... " @@ -376,7 +388,6 @@ elif [ $uname = "Linux" ] ; then # IFS=$(printf '\n') # # because the shell's command substitution deletes any trailing newlines. - OLD_IFS=$IFS IFS=" " for path in $ldconfig_paths; do @@ -384,7 +395,7 @@ elif [ $uname = "Linux" ] ; then libdir_in_ldconfig=1 fi done - IFS=$OLD_IFS + IFS=$DEFAULT_IFS if [ "$libdir_in_ldconfig" = '0' ]; then printf "No (will set RPATH)\n" else @@ -412,26 +423,29 @@ EOF echo " http://xapian.org/" fi if [ $have_gmime -eq 0 ]; then - echo " GMime 2.4 library (including development files such as headers)" + echo " Either GMime 2.4 library" $GMIME_24_VERSION_CTR "or GMime 2.6 library" $GMIME_26_VERSION_CTR + echo " (including development files such as headers)" echo " http://spruce.sourceforge.net/gmime/" + echo fi if [ $have_glib -eq 0 ]; then - echo " Glib library >= 2.14 (including development files such as headers)" + echo " Glib library >= 2.22 (including development files such as headers)" echo " http://ftp.gnome.org/pub/gnome/sources/glib/" + echo fi if [ $have_talloc -eq 0 ]; then echo " The talloc library (including development files such as headers)" echo " http://talloc.samba.org/" + echo fi cat <<EOF - With any luck, you're using a modern, package-based operating system that has all of these packages available in the distribution. In that case a simple command will install everything you need. For example: On Debian and similar systems: - sudo apt-get install libxapian-dev libgmime-2.4-dev libtalloc-dev + sudo apt-get install libxapian-dev libgmime-2.6-dev libtalloc-dev Or on Fedora and similar systems: @@ -533,7 +547,7 @@ done printf "\n\t${WARN_CFLAGS}\n" rm -f minimal minimal.c - + cat <<EOF All required packages were found. You may now run the following |