X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=configure;h=36f3f606814417a60236e1eadb78c4c0f86c0857;hp=0921c0cc0e69233608ac3b600a302bec8fd4c4d0;hb=0a32741fceb7778ced34064eacb7b5aac2c71638;hpb=e4c4cc1b34cfaa6d7b96053644fa821878a67c56 diff --git a/configure b/configure index 0921c0cc..36f3f606 100755 --- a/configure +++ b/configure @@ -55,6 +55,8 @@ subdirs="${subdirs} bindings" # the directory structure and copy Makefiles. if [ "$srcdir" != "." ]; then + NOTMUCH_BUILDDIR=$PWD + for dir in . ${subdirs}; do mkdir -p "$dir" cp "$srcdir"/"$dir"/Makefile.local "$dir" @@ -78,6 +80,8 @@ if [ "$srcdir" != "." ]; then "$srcdir"/bindings/python-cffi/notmuch2 \ "$srcdir"/bindings/python-cffi/setup.py \ bindings/python-cffi/ +else + NOTMUCH_BUILDDIR=$NOTMUCH_SRCDIR fi # Set several defaults (optionally specified by the user in @@ -308,12 +312,22 @@ for option; do true elif [ "${option%%=*}" = '--host' ] ; then true + elif [ "${option%%=*}" = '--bindir' ] ; then + true + elif [ "${option%%=*}" = '--sbindir' ] ; then + true elif [ "${option%%=*}" = '--datadir' ] ; then true elif [ "${option%%=*}" = '--localstatedir' ] ; then true + elif [ "${option%%=*}" = '--sharedstatedir' ] ; then + true elif [ "${option%%=*}" = '--libexecdir' ] ; then true + elif [ "${option%%=*}" = '--exec-prefix' ] ; then + true + elif [ "${option%%=*}" = '--program-prefix' ] ; then + true elif [ "${option}" = '--disable-maintainer-mode' ] ; then true elif [ "${option}" = '--disable-dependency-tracking' ] ; then @@ -396,6 +410,18 @@ EOF exit 1 fi +printf "C compiler supports address sanitizer... " +test_cmdline="${CC} ${CFLAGS} ${CPPFLAGS} -fsanitize=address minimal.c ${LDFLAGS} -o minimal" +if ${test_cmdline} >/dev/null 2>&1 && ./minimal +then + printf "Yes.\n" + have_asan=1 +else + printf "Nope, skipping those tests.\n" + have_asan=0 +fi +unset test_cmdline + printf "Reading libnotmuch version from source... " cat > _libversion.c < @@ -455,26 +481,6 @@ if [ ${have_xapian} = "0" ]; then errors=$((errors + 1)) fi -if [ ${have_xapian} = "1" ]; then - default_xapian_backend="" - printf "Testing default Xapian backend... " - cat >_default_backend.cc < -int main(int argc, char** argv) { - Xapian::WritableDatabase db("test.db",Xapian::DB_CREATE_OR_OPEN); -} -EOF - ${CXX} ${CXXFLAGS_for_sh} ${xapian_cxxflags} _default_backend.cc -o _default_backend ${xapian_ldflags} - ./_default_backend - if [ -f test.db/iamglass ]; then - default_xapian_backend=glass - else - default_xapian_backend=chert - fi - printf "%s\n" "${default_xapian_backend}"; - rm -rf test.db _default_backend _default_backend.cc -fi - GMIME_MINVER=3.0.3 printf "Checking for GMime development files (>= $GMIME_MINVER)... " @@ -516,16 +522,16 @@ int main () { } EOF if ! TEMP_GPG=$(mktemp -d "${TMPDIR:-/tmp}/notmuch.XXXXXX"); then - printf 'No.\nCould not make tempdir for testing session-key support.\n' - errors=$((errors + 1)) + printf 'No.\nCould not make tempdir for testing session-key support.\n' + errors=$((errors + 1)) elif ${CC} ${CFLAGS} ${gmime_cflags} _check_session_keys.c ${gmime_ldflags} -o _check_session_keys \ - && GNUPGHOME=${TEMP_GPG} gpg --batch --quiet --import < "$srcdir"/test/gnupg-secret-key.asc \ - && SESSION_KEY=$(GNUPGHOME=${TEMP_GPG} ./_check_session_keys) \ - && [ $SESSION_KEY = 9:0BACD64099D1468AB07C796F0C0AC4851948A658A15B34E803865E9FC635F2F5 ] + && GNUPGHOME=${TEMP_GPG} gpg --batch --quiet --import < "$srcdir"/test/gnupg-secret-key.asc \ + && SESSION_KEY=$(GNUPGHOME=${TEMP_GPG} ./_check_session_keys) \ + && [ $SESSION_KEY = 9:0BACD64099D1468AB07C796F0C0AC4851948A658A15B34E803865E9FC635F2F5 ] then - printf "OK.\n" + printf "OK.\n" else - cat </dev/null; then - printf 'Your current GPGME development version is: %s\n' "$(gpgme-config --version)" - else - printf 'You do not have the GPGME development libraries installed.\n' - fi - errors=$((errors + 1)) + if command -v gpgme-config >/dev/null; then + printf 'Your current GPGME development version is: %s\n' "$(gpgme-config --version)" + else + printf 'You do not have the GPGME development libraries installed.\n' + fi + errors=$((errors + 1)) fi if [ -n "$TEMP_GPG" -a -d "$TEMP_GPG" ]; then - rm -rf "$TEMP_GPG" + rm -rf "$TEMP_GPG" fi # see https://github.com/jstedfast/gmime/pull/90 @@ -590,36 +596,36 @@ int main () { } EOF if ! TEMP_GPG=$(mktemp -d "${TMPDIR:-/tmp}/notmuch.XXXXXX"); then - printf 'No.\nCould not make tempdir for testing X.509 certificate validity support.\n' - errors=$((errors + 1)) + printf 'No.\nCould not make tempdir for testing X.509 certificate validity support.\n' + errors=$((errors + 1)) elif ${CC} ${CFLAGS} ${gmime_cflags} _check_x509_validity.c ${gmime_ldflags} -o _check_x509_validity \ - && echo disable-crl-checks > "$TEMP_GPG/gpgsm.conf" \ - && echo "4D:E0:FF:63:C0:E9:EC:01:29:11:C8:7A:EE:DA:3A:9A:7F:6E:C1:0D S" >> "$TEMP_GPG/trustlist.txt" \ - && GNUPGHOME=${TEMP_GPG} gpgsm --batch --quiet --import < "$srcdir"/test/smime/ca.crt + && echo disable-crl-checks > "$TEMP_GPG/gpgsm.conf" \ + && echo "4D:E0:FF:63:C0:E9:EC:01:29:11:C8:7A:EE:DA:3A:9A:7F:6E:C1:0D S" >> "$TEMP_GPG/trustlist.txt" \ + && GNUPGHOME=${TEMP_GPG} gpgsm --batch --quiet --import < "$srcdir"/test/smime/ca.crt then - if GNUPGHOME=${TEMP_GPG} ./_check_x509_validity; then - gmime_x509_cert_validity=1 - printf "Yes.\n" - else - gmime_x509_cert_validity=0 - printf "No.\n" - if pkg-config --exists "gmime-3.0 >= 3.2.7"; then - cat <= 3.2.7"; then + cat < /dev/null; then printf "Yes (%s).\n" "$bash_absolute" else have_bash=0 + bash_absolute= printf "No. (%s not found)\n" "${BASHCMD}" fi @@ -764,6 +771,7 @@ if command -v ${PERL} > /dev/null; then printf "Yes (%s).\n" "$perl_absolute" else have_perl=0 + perl_absolute= printf "No. (%s not found)\n" "${PERL}" fi @@ -788,24 +796,40 @@ have_python3=0 if [ $have_python -eq 1 ]; then printf "Checking for python3 (>= 3.5)..." if "$python" -c 'import sys, sysconfig; assert sys.version_info >= (3,5)'; >/dev/null 2>&1; then - printf "Yes.\n" - have_python3=1 + printf "Yes.\n" + have_python3=1 + else + printf "No (will not install CFFI-based python bindings).\n" + fi +fi + +have_python3_dev=0 +if [ $have_python3 -eq 1 ]; then + printf "Checking for python3 version ..." + python3_version=$("$python" -c 'import sysconfig; print(sysconfig.get_python_version());') + printf "(%s)\n" $python3_version + + printf "Checking for python $python3_version development files..." + if pkg-config --exists "python-$python3_version"; then + have_python3_dev=1 + printf "Yes.\n" else - printf "No (will not install CFFI-based python bindings).\n" + have_python3_dev=0 + printf "No (will not install CFFI-based python bindings).\n" fi fi have_python3_cffi=0 have_python3_pytest=0 -if [ $have_python3 -eq 1 ]; then +if [ $have_python3_dev -eq 1 ]; then printf "Checking for python3 cffi and setuptools... " if "$python" -c 'import cffi,setuptools; cffi.FFI().verify()' >/dev/null 2>&1; then - printf "Yes.\n" - have_python3_cffi=1 - WITH_PYTHON_DOCS=1 + printf "Yes.\n" + have_python3_cffi=1 + WITH_PYTHON_DOCS=1 else - WITH_PYTHON_DOCS=0 - printf "No (will not install CFFI-based python bindings).\n" + WITH_PYTHON_DOCS=0 + printf "No (will not install CFFI-based python bindings).\n" fi rm -rf __pycache__ # cffi.FFI().verify() uses this space @@ -813,10 +837,10 @@ if [ $have_python3 -eq 1 ]; then conf=$(mktemp) printf "[pytest]\nminversion=3.0\n" > $conf if "$python" -m pytest -c $conf --version >/dev/null 2>&1; then - printf "Yes.\n" - have_python3_pytest=1 + printf "Yes.\n" + have_python3_pytest=1 else - printf "No (will not test CFFI-based python bindings).\n" + printf "No (will not test CFFI-based python bindings).\n" fi rm -f $conf fi @@ -840,6 +864,19 @@ else WITH_BASH=0 fi +printf "Checking for sfsexp... " +if pkg-config --exists sfsexp; then + printf "Yes.\n" + have_sfsexp=1 + sfsexp_cflags=$(pkg-config --cflags sfsexp) + sfsexp_ldflags=$(pkg-config --libs sfsexp) +else + printf "No (will not enable s-expression queries).\n" + have_sfsexp=0 + sfsexp_cflags= + sfsexp_ldflags= +fi + if [ -z "${EMACSLISPDIR-}" ]; then EMACSLISPDIR="\$(prefix)/share/emacs/site-lisp" fi @@ -849,12 +886,12 @@ if [ -z "${EMACSETCDIR-}" ]; then fi if [ $WITH_EMACS = "1" ]; then - printf "Checking if emacs (>= 24) is available... " - if emacs --quick --batch --eval '(if (< emacs-major-version 24) (kill-emacs 1))' > /dev/null 2>&1; then - printf "Yes.\n" + printf "Checking if emacs (>= 25) is available... " + if emacs --quick --batch --eval '(if (< emacs-major-version 25) (kill-emacs 1))' > /dev/null 2>&1; then + printf "Yes.\n" else - printf "No (disabling emacs related parts of build)\n" - WITH_EMACS=0 + printf "No (disabling emacs related parts of build)\n" + WITH_EMACS=0 fi fi @@ -1236,6 +1273,7 @@ cat > Makefile.config < sphinx.config +cat > bindings/python-cffi/_notmuch_config.py <