X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=configure;h=dedb7d87ccb1530026fe960e6e6a1dddfa33bf38;hp=c7ec4145afb37518d2d2155911f86ef61effece2;hb=4d136995cebb3a339faf844fa3106f398562aad7;hpb=26b4cc4aad93e25dab1e1f38f19f1ae69cde389c diff --git a/configure b/configure index c7ec4145..dedb7d87 100755 --- a/configure +++ b/configure @@ -1,15 +1,28 @@ #! /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')" +srcdir=$(dirname "$0") -# Since we don't have space in IFS we use tab to separate things in lists -tab="$(printf '\t')" +# For a non-srcdir configure invocation (such as ../configure), create +# the directory structure and copy Makefiles. +if [ "$srcdir" != "." ]; then + + for dir in . $(grep "^subdirs *=" "$srcdir"/Makefile | sed -e "s/subdirs *= *//"); do + mkdir -p "$dir" + cp "$srcdir"/"$dir"/Makefile.local "$dir" + cp "$srcdir"/"$dir"/Makefile "$dir" + done + + # Easiest way to get the test suite to work is to just copy the + # whole thing into the build directory. + cp -a "$srcdir"/test/* test + + # Emacs only likes to generate compiled files next to the .el files + # by default so copy these as well (which is not ideal0. + cp -a "$srcdir"/emacs/*.el emacs +fi # Set several defaults (optionally specified by the user in -# environemnt variables) +# environment variables) CC=${CC:-gcc} CXX=${CXX:-g++} CFLAGS=${CFLAGS:--O2} @@ -84,6 +97,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] @@ -126,6 +140,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 @@ -265,6 +281,7 @@ for gmimepc in gmime-2.6 gmime-2.4; do have_gmime=1 gmime_cflags=$(pkg-config --cflags $gmimepc) gmime_ldflags=$(pkg-config --libs $gmimepc) + break fi done if [ "$have_gmime" = "0" ]; then @@ -273,10 +290,10 @@ if [ "$have_gmime" = "0" ]; then 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) @@ -317,6 +334,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" @@ -342,12 +367,30 @@ elif [ $uname = "Linux" ] ; then printf "Linux\n" platform=LINUX 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). 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. + OLD_IFS=$IFS + IFS=" +" for path in $ldconfig_paths; do if [ "$path" = "$libdir_expanded" ]; then libdir_in_ldconfig=1 fi done + IFS=$OLD_IFS + if [ "$libdir_in_ldconfig" = '0' ]; then + printf "No (will set RPATH)\n" + else + printf "Yes\n" + fi else printf "Unknown.\n" cat <= 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 @@ -427,7 +470,7 @@ EOF fi printf "Checking for getline... " -if ${CC} -o compat/have_getline compat/have_getline.c > /dev/null 2>&1 +if ${CC} -o compat/have_getline "$srcdir"/compat/have_getline.c > /dev/null 2>&1 then printf "Yes.\n" have_getline=1 @@ -438,7 +481,7 @@ fi rm -f compat/have_getline printf "Checking for strcasestr... " -if ${CC} -o compat/have_strcasestr compat/have_strcasestr.c > /dev/null 2>&1 +if ${CC} -o compat/have_strcasestr "$srcdir"/compat/have_strcasestr.c > /dev/null 2>&1 then printf "Yes.\n" have_strcasestr=1 @@ -511,6 +554,29 @@ cat > Makefile.config <