X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=configure;h=bab25016a1162ecadf3e965a083d37594ac179d5;hp=21780a6149a1a2b33fc5bdced5f57798ae827524;hb=fe8eeaf4a576b4cad2ec4faee8d5e373118771f8;hpb=7d9851e293fad762cd959e9be819e48a26087cdc diff --git a/configure b/configure index 21780a61..bab25016 100755 --- a/configure +++ b/configure @@ -1,12 +1,21 @@ #! /bin/sh +# Removing space from IFS makes it much easier to support filenames +# with spaces. See http://www.dwheeler.com/essays/filenames-in-shell.html +# for gory details. +IFS="$(printf '\n\t')" + +# Since we don't have space in IFS we use tab to separate things in lists +tab="$(printf '\t')" + # Set several defaults (optionally specified by the user in # environemnt variables) CC=${CC:-gcc} CXX=${CXX:-g++} CFLAGS=${CFLAGS:--O2} CXXFLAGS=${CXXFLAGS:-\$(CFLAGS)} -XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config-1.1 xapian-config} +LDFLAGS=${LDFLAGS:-} +XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config} # We don't allow the EMACS or GZIP Makefile variables inherit values # from the environment as we do with CC and CXX above. The reason is @@ -71,13 +80,15 @@ Fine tuning of some installation directories is available: --includedir=DIR Install header files to DIR [PREFIX/include] --mandir=DIR Install man pages to DIR [PREFIX/share/man] --sysconfdir=DIR Read-only single-machine data [PREFIX/etc] - --emacslispdir=DIR Elisp [PREFIX/share/emacs/site-lisp/notmuch] + --emacslispdir=DIR Emacs code [PREFIX/share/emacs/site-lisp] Additional options are accepted for compatibility with other configure-script calling conventions, but don't do anything yet: --build=-- Currently ignored + --host=-- Currently ignored --infodir=DIR Currently ignored + --datadir=DIR Currently ignored --localstatedir=DIR Currently ignored --libexecdir=DIR Currently ignored --disable-maintainer-mode Currently ignored @@ -119,8 +130,26 @@ for option; do build_option=${build_option#*-} build_vendor=${build_option%%-*} build_os=${build_option#*-} + elif [ "${option%%=*}" = '--host' ] ; then + host_option="${option#*=}" + case ${host_option} in + *-*-*) ;; + *) + echo "Unrecognized value for --host option: ${host_option}" + echo "Should be: --" + 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#*-} elif [ "${option%%=*}" = '--infodir' ] ; then true + elif [ "${option%%=*}" = '--datadir' ] ; then + true elif [ "${option%%=*}" = '--localstatedir' ] ; then true elif [ "${option%%=*}" = '--libexecdir' ] ; then @@ -138,6 +167,12 @@ for option; do fi done +# We set this value early, (rather than just while printing the +# Makefile.config file later like most values), because we need to +# actually investigate this value compared to the ldconfig_paths value +# below. +libdir_expanded=${LIBDIR:-${PREFIX}/lib} + cat < /dev/null 2>&1; then - printf "Yes.\n" + printf "Yes (%s).\n" $(${xapian_config} --version | sed -e 's/.* //') have_xapian=1 xapian_cxxflags=$(${xapian_config} --cxxflags) xapian_ldflags=$(${xapian_config} --libs) @@ -182,15 +217,18 @@ if [ ${have_xapian} = "0" ]; then errors=$((errors + 1)) fi -printf "Checking for GMime 2.4 development files... " -if pkg-config --modversion gmime-2.4 > /dev/null 2>&1; then - printf "Yes.\n" - have_gmime=1 - gmime_cflags=$(pkg-config --cflags gmime-2.4) - gmime_ldflags=$(pkg-config --libs gmime-2.4) -else +printf "Checking for GMime development files... " +have_gmime=0 +for gmimepc in gmime-2.6 gmime-2.4; do + if pkg-config --modversion $gmimepc > /dev/null 2>&1; then + printf "Yes ($gmimepc).\n" + have_gmime=1 + gmime_cflags=$(pkg-config --cflags $gmimepc) + gmime_ldflags=$(pkg-config --libs $gmimepc) + fi +done +if [ "$have_gmime" = "0" ]; then printf "No.\n" - have_gmime=0 errors=$((errors + 1)) fi @@ -219,9 +257,9 @@ fi if [ -z "${EMACSLISPDIR}" ]; then if pkg-config --modversion emacs > /dev/null 2>&1; then - EMACSLISPDIR=$(pkg-config emacs --variable sitepkglispdir)/notmuch + EMACSLISPDIR=$(pkg-config emacs --variable sitepkglispdir) else - EMACSLISPDIR='$(prefix)/share/emacs/site-lisp/notmuch' + EMACSLISPDIR='$(prefix)/share/emacs/site-lisp' fi fi @@ -234,6 +272,37 @@ else have_emacs=0 fi +libdir_in_ldconfig=0 + +printf "Checking which platform we are on... " +uname=`uname` +if [ $uname = "Darwin" ] ; then + printf "Mac OS X.\n" + platform=MACOSX + linker_resolves_library_dependencies=0 +elif [ $uname = "SunOS" ] ; then + printf "Solaris.\n" + platform=SOLARIS + linker_resolves_library_dependencies=0 +elif [ $uname = "Linux" ] ; then + printf "Linux\n" + platform=LINUX + linker_resolves_library_dependencies=1 + ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p') + for path in $ldconfig_paths; do + if [ "$path" = "$libdir_expanded" ]; then + libdir_in_ldconfig=1 + fi + done +else + printf "Unknown.\n" + cat < /dev/null 2>&1 +then + printf "Yes.\n" + have_strcasestr=1 +else + printf "No (will use our own instead).\n" + have_strcasestr=0 +fi +rm -f compat/have_strcasestr + +printf "int main(void){return 0;}\n" > minimal.c + +printf "Checking for rpath support... " +if ${CC} -Wl,--enable-new-dtags -Wl,-rpath,/tmp/ -o minimal minimal.c >/dev/null 2>&1 +then + printf "Yes.\n" + rpath_ldflags="-Wl,--enable-new-dtags -Wl,-rpath,\$(libdir)" +else + printf "No (nothing to worry about).\n" + rpath_ldflags="" +fi + +printf "Checking for -Wl,--as-needed... " +if ${CC} -Wl,--as-needed -o minimal minimal.c >/dev/null 2>&1 +then + printf "Yes.\n" + as_needed_ldflags="-Wl,--as-needed" +else + printf "No (nothing to worry about).\n" + as_needed_ldflags="" +fi + +WARN_CXXFLAGS="" +printf "Checking for available C++ compiler warning flags... " +for flag in -Wall -Wextra -Wwrite-strings -Wswitch-enum; do + if ${CC} $flag -o minimal minimal.c > /dev/null 2>&1 + then + WARN_CXXFLAGS="${WARN_CXXFLAGS}${WARN_CXXFLAGS:+ }${flag}" + fi +done +printf "\n\t${WARN_CXXFLAGS}\n" + +WARN_CFLAGS="${WARN_CXXFLAGS}" +printf "Checking for available C compiler warning flags... " +for flag in -Wmissing-declarations; do + if ${CC} $flag -o minimal minimal.c > /dev/null 2>&1 + then + WARN_CFLAGS="${WARN_CFLAGS}${WARN_CFLAGS:+ }${flag}" + fi +done +printf "\n\t${WARN_CFLAGS}\n" + +rm -f minimal minimal.c + cat <