X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=configure;h=3d1efb0bf7b84116c1fbdf70c4f3eec9dbf3b201;hp=1ae717aea7b8107e2cbb6938bf6bd9df7ef619ca;hb=38f46b6869d3c5f4555e2da3a07700b3c94583a7;hpb=660510ee4cdc25bcaf60a74000d2754c0f7794ff diff --git a/configure b/configure index 1ae717ae..3d1efb0b 100755 --- a/configure +++ b/configure @@ -1,13 +1,5 @@ #! /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} @@ -28,6 +20,9 @@ XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config} # options. PREFIX=/usr/local LIBDIR= +WITH_EMACS=1 +WITH_BASH=1 +WITH_ZSH=1 usage () { @@ -81,6 +76,15 @@ 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] + --bashcompletiondir=DIR Bash completions files [SYSCONFDIR/bash_completion.d] + --zshcompletiondir=DIR Zsh completions files [PREFIX/share/zsh/functions/Completion/Unix] + +Some features can be disabled (--with-feature=no is equivalent to +--without-feature) : + + --without-emacs Do not install lisp file + --without-bash-completion Do not install bash completions files + --without-zsh-completion Do not install zsh completions files Additional options are accepted for compatibility with other configure-script calling conventions, but don't do anything yet: @@ -114,6 +118,34 @@ for option; do SYSCONFDIR="${option#*=}" elif [ "${option%%=*}" = '--emacslispdir' ] ; then EMACSLISPDIR="${option#*=}" + elif [ "${option%%=*}" = '--bashcompletiondir' ] ; then + BASHCOMPLETIONDIR="${option#*=}" + elif [ "${option%%=*}" = '--zshcompletiondir' ] ; then + ZSHCOMLETIONDIR="${option#*=}" + elif [ "${option%%=*}" = '--with-emacs' ]; then + if [ "${option#*=}" = 'no' ]; then + WITH_EMACS=0 + else + WITH_EMACS=1 + fi + elif [ "${option}" = '--without-emacs' ] ; then + WITH_EMACS=0 + elif [ "${option%%=*}" = '--with-bash-completion' ]; then + if [ "${option#*=}" = 'no' ]; then + WITH_BASH=0 + else + WITH_BASH=1 + fi + elif [ "${option}" = '--without-bash-completion' ] ; then + WITH_BASH=0 + elif [ "${option%%=*}" = '--with-zsh-completion' ]; then + if [ "${option#*=}" = 'no' ]; then + WITH_ZSH=0 + else + WITH_ZSH=1 + fi + elif [ "${option}" = '--without-zsh-completion' ] ; then + WITH_ZSH=0 elif [ "${option%%=*}" = '--build' ] ; then build_option="${option#*=}" case ${build_option} in @@ -220,7 +252,7 @@ fi 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 + if pkg-config --exists $gmimepc; then printf "Yes ($gmimepc).\n" have_gmime=1 gmime_cflags=$(pkg-config --cflags $gmimepc) @@ -232,8 +264,22 @@ if [ "$have_gmime" = "0" ]; then 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)... " +have_glib=0 +if pkg-config --exists 'glib-2.0 >= 2.14'; then + printf "Yes.\n" + have_glib=1 + glib_cflags=$(pkg-config --cflags glib-2.0) + glib_ldflags=$(pkg-config --libs glib-2.0) +else + printf "No.\n" + errors=$((errors + 1)) +fi + printf "Checking for talloc development files... " -if pkg-config --modversion talloc > /dev/null 2>&1; then +if pkg-config --exists talloc; then printf "Yes.\n" have_talloc=1 talloc_cflags=$(pkg-config --cflags talloc) @@ -246,7 +292,7 @@ else fi printf "Checking for valgrind development files... " -if pkg-config --modversion valgrind > /dev/null 2>&1; then +if pkg-config --exists valgrind; then printf "Yes.\n" have_valgrind=1 valgrind_cflags=$(pkg-config --cflags valgrind) @@ -256,7 +302,7 @@ else fi if [ -z "${EMACSLISPDIR}" ]; then - if pkg-config --modversion emacs > /dev/null 2>&1; then + if pkg-config --exists emacs; then EMACSLISPDIR=$(pkg-config emacs --variable sitepkglispdir) else EMACSLISPDIR='$(prefix)/share/emacs/site-lisp' @@ -289,11 +335,16 @@ elif [ $uname = "Linux" ] ; then platform=LINUX linker_resolves_library_dependencies=1 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')" for path in $ldconfig_paths; do if [ "$path" = "$libdir_expanded" ]; then libdir_in_ldconfig=1 fi done + IFS=$OLD_IFS else printf "Unknown.\n" cat <= 2.14 (including development files such as headers)" + echo " http://ftp.gnome.org/pub/gnome/sources/glib/" + fi if [ $have_talloc -eq 0 ]; then echo " The talloc library (including development files such as headers)" echo " http://talloc.samba.org/" @@ -399,6 +454,17 @@ then 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="" @@ -498,10 +564,10 @@ HAVE_EMACS = ${have_emacs} desktop_dir = \$(prefix)/share/applications # The directory to which bash completions files should be installed -bash_completion_dir = \$(sysconfdir)/bash_completion.d +bash_completion_dir = ${BASHCOMPLETIONDIR:=\$(sysconfdir)/bash_completion.d} # The directory to which zsh completions files should be installed -zsh_completion_dir = \$(prefix)/share/zsh/functions/Completion/Unix +zsh_completion_dir = ${ZSHCOMLETIONDIR:=\$(prefix)/share/zsh/functions/Completion/Unix} # Whether the getline function is available (if not, then notmuch will # build its own version) @@ -534,12 +600,24 @@ TALLOC_LDFLAGS = ${talloc_ldflags} # Flags needed to have linker set rpath attribute RPATH_LDFLAGS = ${rpath_ldflags} +# Flags needed to have linker link only to necessary libraries +AS_NEEDED_LDFLAGS = ${as_needed_ldflags} + # Whether valgrind header files are available HAVE_VALGRIND = ${have_valgrind} # And if so, flags needed at compile time for valgrind macros VALGRIND_CFLAGS = ${valgrind_cflags} +# Support for emacs +WITH_EMACS = ${WITH_EMACS} + +# Support for bash completion +WITH_BASH = ${WITH_BASH} + +# Support for zsh completion +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) \\