]> git.notmuchmail.org Git - notmuch/blobdiff - configure
configure: Add support for FreeBSD.
[notmuch] / configure
index 7056b4c29b054dfcbea60208928bd859062b9e0a..acb90a8c610efdf24c5d472e6a2d1852b71dc391 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,7 +1,21 @@
 #! /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
+readonly DEFAULT_IFS="$IFS"
 
 srcdir=$(dirname "$0")
 
@@ -48,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
@@ -104,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) :
 
@@ -173,6 +201,12 @@ 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
        true
     elif [ "${option%%=*}" = '--host' ] ; then
@@ -248,11 +282,10 @@ if [ ${have_xapian} = "0" ]; then
     errors=$((errors + 1))
 fi
 
-# 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.
 printf "Checking for GMime development files... "
 have_gmime=0
-for gmimepc in 'gmime-2.6 >= 2.6.7' 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
@@ -261,6 +294,7 @@ for gmimepc in 'gmime-2.6 >= 2.6.7' gmime-2.4; do
        break
     fi
 done
+IFS=$DEFAULT_IFS
 if [ "$have_gmime" = "0" ]; then
     printf "No.\n"
     errors=$((errors + 1))
@@ -340,6 +374,10 @@ elif [ $uname = "SunOS" ] ; then
     printf "Solaris.\n"
     platform=SOLARIS
     linker_resolves_library_dependencies=0
+elif [ $uname = "FreeBSD" ] ; then
+    printf "FreeBSD.\n"
+    platform=FREEBSD
+    linker_resolves_library_dependencies=0
 elif [ $uname = "Linux" ] || [ $uname = "GNU" ] ; then
     printf "$uname\n"
     platform="$uname"
@@ -389,26 +427,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.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:
 
@@ -626,7 +667,7 @@ HAVE_GETLINE = ${have_getline}
 # build its own version)
 HAVE_STRCASESTR = ${have_strcasestr}
 
-# Supported platforms (so far) are: LINUX, MACOSX, SOLARIS
+# Supported platforms (so far) are: LINUX, MACOSX, SOLARIS, FREEBSD
 PLATFORM = ${platform}
 
 # Whether the linker will automatically resolve the dependency of one