aboutsummaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure102
1 files changed, 58 insertions, 44 deletions
diff --git a/configure b/configure
index e90b76f..dc0dba4 100755
--- a/configure
+++ b/configure
@@ -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