]> git.notmuchmail.org Git - notmuch/blobdiff - configure
Merge tag 'debian/0.12-1'
[notmuch] / configure
index 157ecf39086b08a62fa55760fa964d44ad80574b..8cf6f2d703529d70e0cdb10a174e608a17458405 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,8 @@
 #! /bin/sh
 
+# 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
@@ -22,7 +25,7 @@ if [ "$srcdir" != "." ]; then
 fi
 
 # Set several defaults (optionally specified by the user in
-# environemnt variables)
+# environment variables)
 CC=${CC:-gcc}
 CXX=${CXX:-g++}
 CFLAGS=${CFLAGS:--O2}
@@ -45,6 +48,11 @@ WITH_EMACS=1
 WITH_BASH=1
 WITH_ZSH=1
 
+GMIME_24_VERSION='gmime-2.4'
+GMIME_26_VERSION='gmime-2.6 >= 2.6.7'
+
+WITH_GMIME_VERSIONS="$GMIME_26_VERSION;$GMIME_24_VERSION"
+
 usage ()
 {
     cat <<EOF
@@ -97,6 +105,7 @@ Fine tuning of some installation directories is available:
        --mandir=DIR            Install man pages to DIR [PREFIX/share/man]
        --sysconfdir=DIR        Read-only single-machine data [PREFIX/etc]
        --emacslispdir=DIR      Emacs code [PREFIX/share/emacs/site-lisp]
+       --emacsetcdir=DIR       Emacs miscellaneous files [PREFIX/share/emacs/site-lisp]
        --bashcompletiondir=DIR Bash completions files [SYSCONFDIR/bash_completion.d]
        --zshcompletiondir=DIR  Zsh completions files [PREFIX/share/zsh/functions/Completion/Unix]
 
@@ -139,6 +148,8 @@ for option; do
        SYSCONFDIR="${option#*=}"
     elif [ "${option%%=*}" = '--emacslispdir' ] ; then
        EMACSLISPDIR="${option#*=}"
+    elif [ "${option%%=*}" = '--emacsetcdir' ] ; then
+       EMACSETCDIR="${option#*=}"
     elif [ "${option%%=*}" = '--bashcompletiondir' ] ; then
        BASHCOMPLETIONDIR="${option#*=}"
     elif [ "${option%%=*}" = '--zshcompletiondir' ] ; then
@@ -167,38 +178,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
@@ -270,26 +259,31 @@ 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 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)
@@ -330,6 +324,14 @@ if [ -z "${EMACSLISPDIR}" ]; then
     fi
 fi
 
+if [ -z "${EMACSETCDIR}" ]; then
+    if pkg-config --exists emacs; then
+       EMACSETCDIR=$(pkg-config emacs --variable sitepkglispdir)
+    else
+       EMACSETCDIR='$(prefix)/share/emacs/site-lisp'
+    fi
+fi
+
 printf "Checking if emacs is available... "
 if emacs --quick --batch > /dev/null 2>&1; then
     printf "Yes.\n"
@@ -351,21 +353,33 @@ 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... "
     ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p')
     # Separate ldconfig_paths only on newline (not on any potential
-    # embedded space characters in any filenames).
-    OLD_IFS=$IFS
-    IFS="$(printf '\n')"
+    # embedded space characters in any filenames). Note, we use a
+    # literal newline in the source here rather than something like:
+    #
+    #  IFS=$(printf '\n')
+    #
+    # because the shell's command substitution deletes any trailing newlines.
+    IFS="
+"
     for path in $ldconfig_paths; do
        if [ "$path" = "$libdir_expanded" ]; 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
+       printf "Yes\n"
+    fi
 else
     printf "Unknown.\n"
     cat <<EOF
@@ -392,7 +406,7 @@ EOF
        echo "  http://spruce.sourceforge.net/gmime/"
     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/"
     fi
     if [ $have_talloc -eq 0 ]; then
@@ -509,7 +523,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
@@ -529,8 +543,13 @@ cat > Makefile.config <<EOF
 # changes, (and this could happen by simply calling "make" if the
 # configure script is updated).
 
+# The top-level directory for the source, (the directory containing
+# the configure script). This may be different than the build
+# directory (the current directory at the time configure was run).
 srcdir = ${srcdir}
 
+configure_options = $@
+
 # We use vpath directives (rather than the VPATH variable) since the
 # VPATH variable matches targets as well as prerequisites, (which is
 # not useful since then a target left-over from a srcdir build would
@@ -590,12 +609,16 @@ includedir = ${INCLUDEDIR:=\$(prefix)/include}
 # The directory to which man pages should be installed
 mandir = ${MANDIR:=\$(prefix)/share/man}
 
-# The directory to which read-only (configuration) filesshould be installed
+# The directory to which read-only (configuration) files should be installed
 sysconfdir = ${SYSCONFDIR:=\$(prefix)/etc}
 
 # The directory to which emacs lisp files should be installed
 emacslispdir=${EMACSLISPDIR}
 
+# The directory to which emacs miscellaneous (machine-independent) files should
+# be installed
+emacsetcdir=${EMACSETCDIR}
+
 # Whether there's an emacs binary available for byte-compiling
 HAVE_EMACS = ${have_emacs}