X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=configure;h=b5465e4c548d47addc4b8c7e8e9c4ad204186597;hp=7056b4c29b054dfcbea60208928bd859062b9e0a;hb=31c7001c99e042c2722217410d8a913875d44149;hpb=1ef9f769d78dcd7df80981ea435b246b378c6107 diff --git a/configure b/configure index 7056b4c2..b5465e4c 100755 --- 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") @@ -29,6 +43,7 @@ fi CC=${CC:-gcc} CXX=${CXX:-g++} CFLAGS=${CFLAGS:--O2} +CPPFLAGS=${CPPFLAGS:-} CXXFLAGS=${CXXFLAGS:-\$(CFLAGS)} LDFLAGS=${LDFLAGS:-} XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config} @@ -48,6 +63,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 <= 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 +301,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 +381,14 @@ 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 = "OpenBSD" ] ; then + printf "OpenBSD.\n" + platform=OPENBSD + linker_resolves_library_dependencies=0 elif [ $uname = "Linux" ] || [ $uname = "GNU" ] ; then printf "$uname\n" platform="$uname" @@ -389,26 +438,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 < /dev/null 2>&1 +then + printf "Yes.\n" + std_getpwuid=1 +else + printf "No (will define _POSIX_PTHREAD_SEMANTICS to get it).\n" + std_getpwuid=0 +fi +rm -f compat/check_getpwuid + printf "int main(void){return 0;}\n" > minimal.c printf "Checking for rpath support... " @@ -491,7 +554,7 @@ fi WARN_CXXFLAGS="" printf "Checking for available C++ compiler warning flags... " -for flag in -Wall -Wextra -Wwrite-strings -Wswitch-enum; do +for flag in -Wall -Wextra -Wwrite-strings; do if ${CC} $flag -o minimal minimal.c > /dev/null 2>&1 then WARN_CXXFLAGS="${WARN_CXXFLAGS}${WARN_CXXFLAGS:+ }${flag}" @@ -565,6 +628,9 @@ EMACS = emacs --quick # Default FLAGS for C compiler (can be overridden by user such as "make CFLAGS=-g") CFLAGS = ${CFLAGS} +# Default FLAGS for C preprocessor (can be overridden by user such as "make CPPFLAGS=-I/usr/local/include") +CPPFLAGS = ${CPPFLAGS} + # Default FLAGS for C++ compiler (can be overridden by user such as "make CXXFLAGS=-g") CXXFLAGS = ${CXXFLAGS} @@ -626,7 +692,12 @@ HAVE_GETLINE = ${have_getline} # build its own version) HAVE_STRCASESTR = ${have_strcasestr} -# Supported platforms (so far) are: LINUX, MACOSX, SOLARIS +# Whether the getpwuid_r function is standards-compliant +# (if not, then notmuch will #define _POSIX_PTHREAD_SEMANTICS +# to enable the standards-compliant version -- needed for Solaris) +STD_GETPWUID = ${std_getpwuid} + +# Supported platforms (so far) are: LINUX, MACOSX, SOLARIS, FREEBSD, OPENBSD PLATFORM = ${platform} # Whether the linker will automatically resolve the dependency of one @@ -670,10 +741,13 @@ WITH_ZSH = ${WITH_ZSH} # Combined flags for compiling and linking against all of the above CONFIGURE_CFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS) \\ \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND) \\ - \$(VALGRIND_CFLAGS) -DHAVE_STRCASESTR=\$(HAVE_STRCASESTR) + \$(VALGRIND_CFLAGS) \\ + -DHAVE_STRCASESTR=\$(HAVE_STRCASESTR) \\ + -DSTD_GETPWUID=\$(STD_GETPWUID) CONFIGURE_CXXFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS) \\ \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND) \\ \$(VALGRIND_CFLAGS) \$(XAPIAN_CXXFLAGS) \\ - -DHAVE_STRCASESTR=\$(HAVE_STRCASESTR) + -DHAVE_STRCASESTR=\$(HAVE_STRCASESTR) \\ + -DSTD_GETPWUID=\$(STD_GETPWUID) CONFIGURE_LDFLAGS = \$(GMIME_LDFLAGS) \$(TALLOC_LDFLAGS) \$(XAPIAN_LDFLAGS) EOF