mu/configure.ac

321 lines
12 KiB
Plaintext
Raw Normal View History

2022-02-16 17:30:21 +01:00
## Copyright (C) 2008-2022 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 3 of the License, or
## (at your option) any later version.
2011-08-29 22:40:51 +02:00
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
2011-08-29 22:40:51 +02:00
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software Foundation,
2011-08-29 22:40:51 +02:00
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
2016-12-13 22:03:25 +01:00
AC_PREREQ([2.68])
AC_INIT([mu],[1.8.5],[https://github.com/djcb/mu/issues],[mu])
AC_COPYRIGHT([Copyright (C) 2008-2022 Dirk-Jan C. Binnema])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([mu/mu.cc])
# libtoolize wants to put some stuff in here; if you have an old
# autotools/libtool setup. you can try to comment this out
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.14 foreign no-dist-gzip tar-ustar dist-xz])
2011-05-23 07:16:09 +02:00
# silent build if we have a new enough automake
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
2011-12-30 12:26:58 +01:00
AS_IF([test x$prefix = xNONE],[prefix=/usr/local])
AC_SUBST(prefix)
# AC_PROG_CXX *before* AC_PROG_CC, otherwise configure won't error out
# when a c++ compiler is not found. Weird, huh?
AC_PROG_CXX
AC_PROG_CC
2020-11-16 08:47:22 +01:00
AC_PROG_CPP
2011-05-23 07:16:09 +02:00
AC_PROG_INSTALL
2022-06-18 14:17:55 +02:00
AC_CHECK_INCLUDES_DEFAULT
AC_PROG_EGREP
2022-06-18 11:18:23 +02:00
extra_flags="-Wformat-security \
-Wstack-protector \
-Wstack-protector-all \
-Wno-cast-function-type \
-Wno-bad-function-cast \
-Wno-switch-enum"
AX_CXX_COMPILE_STDCXX_17
AX_COMPILER_FLAGS_CXXFLAGS([],[],[${extra_cflags}])
AX_APPEND_COMPILE_FLAGS([-Wno-inline],[CXXFLAGS])
2017-10-24 21:57:57 +02:00
AX_VALGRIND_CHECK
LT_INIT
2020-01-01 14:44:39 +01:00
AX_CODE_COVERAGE
AC_PROG_AWK
2012-11-04 19:42:12 +01:00
AC_CHECK_PROG(SORT,sort,sort)
AC_CHECK_HEADERS([wordexp.h])
2011-05-23 07:16:09 +02:00
# use the 64-bit versions
AC_SYS_LARGEFILE
# asan is somewhat similar to valgrind, but has low enough overhead so it
# can be used during normal operation.
AC_ARG_ENABLE([asan],[AS_HELP_STRING([--enable-asan],
2021-07-27 21:28:49 +02:00
[Enable Address Sanitizer])], [use_asan=$enableval], [use_asan=no])
AS_IF([test "x$use_asan" = "xyes"],[
AC_SUBST(ASAN_CFLAGS, "-fsanitize=address -static-libasan -fno-omit-frame-pointer")
AC_SUBST(ASAN_CXXFLAGS,"-fsanitize=address -static-libasan -fno-omit-frame-pointer")
AC_SUBST(ASAN_LDFLAGS, "-fsanitize=address -static-libasan -fno-omit-frame-pointer")
])
# check for makeinfo
AC_CHECK_PROG(have_makeinfo,makeinfo,yes,no)
AM_CONDITIONAL(HAVE_MAKEINFO,test "x$have_makeinfo" = "xyes")
AM_COND_IF(HAVE_MAKEINFO,[],[
# seems build *insists* on trying to makeinfo, erroring out
# if it does not exist. Let's work around that.
AC_SUBST(MAKEINFO,[true])
])
# we need emacs for byte-compiling mu4e
build_mu4e=no
AC_ARG_ENABLE([mu4e],
AS_HELP_STRING([--disable-mu4e],[Disable building mu4e]))
AS_IF([test "x$enable_mu4e" != "xno"], [
AM_PATH_LISPDIR
AS_IF([test "x$lispdir" != "xno"], [
emacs_version="$($EMACS --version | head -1)"
lispdir="${lispdir}/mu4e/"
])
AS_CASE([$emacs_version],
[*25.3*],[build_mu4e=yes],
[*26*|*27*|*28*|*29*],[build_mu4e=yes],
2022-06-18 14:17:55 +02:00
[AC_MSG_WARN(emacs is too old to build mu4e (need emacs >= 25.3))])
2012-07-12 14:46:45 +02:00
])
AM_CONDITIONAL(BUILD_MU4E, test "x$build_mu4e" = "xyes")
2011-05-23 07:16:09 +02:00
# we need some special tricks for filesystems that don't have d_type;
# e.g. Solaris. See mu-maildir.c. Explicitly disabling it is for
# testing purposes only
AC_ARG_ENABLE([dirent-d-type],
2022-06-18 14:17:55 +02:00
AS_HELP_STRING([--disable-dirent-d-type],[Don't use dirent->d_type, even if you have it]),
[], [AC_STRUCT_DIRENT_D_TYPE]
)
AS_IF([test "x$ac_cv_member_struct_dirent_d_type" != "xyes"],
2021-07-27 21:28:49 +02:00
[use_dirent_d_type="no"], [use_dirent_d_type="yes"])
# support for d_ino (inode) in struct dirent is optional; if it's
# available we can sort direntries by inode and access them in that
# order; this is much faster on some file systems (such as extfs3).
2019-11-06 16:13:39 +01:00
# Explicitly disabling it is for testing purposes only.
AC_ARG_ENABLE([dirent-d-ino],
2022-06-18 14:17:55 +02:00
AS_HELP_STRING([--disable-dirent-d-ino],[Don't use dirent->d_ino, even if you have it]),
[], [AC_STRUCT_DIRENT_D_INO]
)
AS_IF([test "x$ac_cv_member_struct_dirent_d_ino" != "xyes"],
2021-07-27 21:28:49 +02:00
[use_dirent_d_ino="no"], [use_dirent_d_ino="yes"])
AC_CHECK_FUNCS([memset memcpy realpath setlocale strerror getpass setsid])
2018-02-11 10:52:21 +01:00
AC_CHECK_FUNCS([vasprintf strptime])
# timegm is no longer used in the source
# AC_CHECK_FUNC(timegm,[],AC_MSG_ERROR([missing required function timegm]))
2019-07-11 19:29:10 +02:00
# require pkg-config >= 0.28 (release in 2013; should be old enough...)
# with that version, we don't need the AC_SUBST stuff after PKG_CHECK.
m4_ifndef([PKG_PROG_PKG_CONFIG],
[m4_fatal([please install pkg-config >= 0.28 before running autoconf/autogen])])
PKG_PROG_PKG_CONFIG(0.28) # latest version in buildroot
2020-01-01 14:44:39 +01:00
AS_IF([test -z "$PKG_CONFIG"],
2010-12-05 11:45:07 +01:00
AC_MSG_ERROR([
2019-07-11 19:29:10 +02:00
*** pkg-config with version >= 0.28 could not be found.
***
*** Make sure it is in your path, or set the PKG_CONFIG environment variable
2010-12-05 11:45:07 +01:00
*** to the full path to pkg-config.])
2020-01-01 14:44:39 +01:00
)
2010-12-05 11:45:07 +01:00
# glib2?
PKG_CHECK_MODULES(GLIB,glib-2.0 >= 2.58 gobject-2.0 gio-2.0)
2019-07-11 19:29:10 +02:00
glib_version="$($PKG_CONFIG --modversion glib-2.0)"
2011-08-29 22:40:51 +02:00
2017-07-30 16:47:38 +02:00
# gmime, version 3.0 or higher
PKG_CHECK_MODULES(GMIME,gmime-3.0)
2019-07-11 19:29:10 +02:00
gmime_version="$($PKG_CONFIG --modversion gmime-3.0)"
2011-08-29 22:40:51 +02:00
# xapian checking - we need 1.4 at least
PKG_CHECK_MODULES(XAPIAN,xapian-core >= 1.4,[
have_xapian=yes
xapian_version=$($PKG_CONFIG xapian-core --modversion)
AC_SUBST(XAPIAN_CXXFLAGS,${XAPIAN_CFLAGS})
],[
# fall back to the xapian-config script. Not sure if there are cases where the
# pkgconfig does not work, but xapian-config does, so keep this for now.
AC_MSG_NOTICE([falling back to xapian-config])
AC_CHECK_PROG(XAPIAN_CONFIG,xapian-config,xapian-config,no)
AS_IF([test "x$XAPIAN_CONFIG" = "xno"],[
AC_MSG_ERROR([
*** xapian could not be found; please install it
*** e.g., in debian/ubuntu the package would be 'libxapian-dev'
*** If you compiled it yourself, you should ensure that xapian-config
*** is in your PATH.])],
[xapian_version=$($XAPIAN_CONFIG --version | sed -e 's/.* //')])
AS_CASE([$xapian_version],
[1.[[4-9]].[[0-9]]*],
2021-07-27 21:28:49 +02:00
[AC_MSG_NOTICE([xapian $xapian_version found.])],
[AC_MSG_ERROR([*** xapian version >= 1.4 needed, but version $xapian_version found.])])
XAPIAN_CXXFLAGS="$($XAPIAN_CONFIG --cxxflags)"
XAPIAN_LIBS="$($XAPIAN_CONFIG --libs)"
have_xapian="yes"
AC_SUBST(XAPIAN_CXXFLAGS)
AC_SUBST(XAPIAN_LIBS)
])
###############################################################################
# we set the set the version of the MuStore (Xapian database) layout
# here; it will become part of the db name, so we can automatically
2013-05-14 23:05:21 +02:00
# recreate the database when we have incompatible changes.
#
# note that MU_STORE_SCHEMA_VERSION does not follow mu versioning, as we
# hopefully don't have updates for each version; also, this has nothing to do
2022-05-08 13:52:32 +02:00
# with Xapian's software versionx
AC_DEFINE(MU_STORE_SCHEMA_VERSION,["465"],['Schema' version of the database])
###############################################################################
2010-12-05 11:45:07 +01:00
2020-10-31 08:45:44 +01:00
################################################################################
# should we try to build an emacs dynamic module?
2020-11-15 17:15:53 +01:00
#AC_CHECK_HEADER([emacs-module.h],[
# AC_DEFINE([HAVE_EMACS_MODULE_H],[1], [Whether we have the emacs-module header])],
# AC_MSG_NOTICE([emacs-module.h not found; not building module])
#)
#AM_CONDITIONAL([BUILD_EMACS_MODULE],[test "x$ac_cv_header_emacs_module_h" != "x"])
2020-10-31 08:45:44 +01:00
################################################################################
###############################################################################
# build with guile 3.0/2.2 when available and not disabled.
AC_ARG_ENABLE([guile], AS_HELP_STRING([--disable-guile],[Disable guile]))
2020-11-01 13:03:27 +01:00
AS_IF([test "x$enable_guile" != "xno"],[
2020-11-07 10:41:40 +01:00
2020-11-01 13:03:27 +01:00
PKG_CHECK_MODULES(GUILE, [guile-3.0], [have_guile=yes],[
PKG_CHECK_MODULES(GUILE, [guile-2.2], [have_guile=yes], [have_guile=no])])
2020-10-31 13:35:50 +01:00
AS_IF([test "x$have_guile" = "xyes"],[
GUILE_PKG([3.0 2.2])
GUILE_PROGS
GUILE_FLAGS
AC_DEFINE_UNQUOTED([GUILE_BINARY],"$GUILE",[guile binary])
2020-11-15 17:15:53 +01:00
vsnarf=guile-snarf${GUILE_EFFECTIVE_VERSION}
AC_CHECK_PROGS(GUILE_SNARF,[${vsnarf} guile-snarf], [no])
2020-10-31 13:35:50 +01:00
guile_version=$($PKG_CONFIG guile-$GUILE_EFFECTIVE_VERSION --modversion)
2020-11-01 13:03:27 +01:00
])
2018-05-21 14:03:58 +02:00
])
2020-11-07 10:41:40 +01:00
AM_CONDITIONAL(BUILD_GUILE,[test "x$have_guile" = "xyes" -a \
2021-07-27 21:28:49 +02:00
"x$ac_cv_prog_GUILE_SNARF" != "xno"])
2020-11-15 17:15:53 +01:00
AM_COND_IF([BUILD_GUILE],[AC_DEFINE(BUILD_GUILE,[1], [Do we support Guile?])])
###############################################################################
###############################################################################
# optional readline
2020-12-24 10:19:02 +01:00
AC_ARG_ENABLE([readline], AS_HELP_STRING([--disable-readline],[Disable readline]))
AS_IF([test "x$enable_readline" != "xno"], [
saved_libs=$LIBS
AX_LIB_READLINE
AC_SUBST(READLINE_LIBS,${LIBS})
LIBS=$saved_libs
])
###############################################################################
###############################################################################
# check for makeinfo
AC_CHECK_PROG(have_makeinfo,makeinfo,yes,no)
AM_CONDITIONAL(HAVE_MAKEINFO, [test "x$have_makeinfo" = "xyes"])
###############################################################################
2015-06-07 20:07:41 +02:00
###############################################################################
# docdir, so we can use it in mu4e-meta.el.in
AC_SUBST(MU_DOC_DIR, "${prefix}/share/doc/mu")
###############################################################################
AC_CONFIG_FILES([
Makefile
mu/Makefile
lib/Makefile
lib/doxyfile
lib/thirdparty/Makefile
2019-12-16 20:44:03 +01:00
lib/utils/Makefile
lib/message/Makefile
lib/index/Makefile
2012-07-10 19:00:06 +02:00
mu4e/Makefile
mu4e/mu4e-config.el
guile/Makefile
guile/mu/Makefile
guile/examples/Makefile
2012-10-17 22:37:30 +02:00
guile/scripts/Makefile
2010-01-16 14:27:41 +01:00
man/Makefile
m4/Makefile
2010-08-21 19:44:53 +02:00
contrib/Makefile
])
AC_CONFIG_FILES([mu/mu-memcheck], [chmod +x mu/mu-memcheck])
AC_OUTPUT
2020-04-04 14:27:36 +02:00
dnl toys/msg2pdf/Makefile
2011-08-29 22:40:51 +02:00
echo
echo "mu configuration is complete."
echo "------------------------------------------------"
2012-07-10 20:10:22 +02:00
echo "mu version : $VERSION"
echo
2010-12-05 11:45:07 +01:00
echo "Xapian version : $xapian_version"
2011-08-29 22:40:51 +02:00
echo "GLib version : $glib_version"
echo "GMime version : $gmime_version"
2011-01-07 07:34:17 +01:00
AM_COND_IF([BUILD_GUILE],[
2020-02-25 06:39:00 +01:00
echo "Guile version : $guile_version"
])
echo
2011-08-29 22:40:51 +02:00
echo "Have direntry->d_ino : $use_dirent_d_ino"
echo "Have direntry->d_type : $use_dirent_d_type"
echo "------------------------------------------------"
echo
#
# Warnings / notes
#
# makeinfo
if test "x$have_makeinfo" != "xyes"; then
echo "* You do not seem to have the makeinfo program; if you are building from git"
echo " you need that to create documentation for guile and emacs. It is in the"
2015-09-22 18:00:41 +02:00
echo " texinfo package in debian/ubuntu/fedora/... "
echo
fi
# wordexp
AS_IF([test "x$ac_cv_header_wordexp_h" != "xyes"],[
echo "* Your system does not seem to have the 'wordexp' function."
echo " This means that you cannot use shell-like expansion in options and "
echo " some other places. So, for example, instead of"
echo " --maildir=~/Maildir"
echo " you should use the complete path, something like:"
echo " --maildir=/home/user/Maildir"
])
echo "NOTE: autotools support has been deprecated and will be removed"
echo " after the next stable release. use the meson build instead"
echo
2017-11-05 12:12:41 +01:00
echo "Now, type 'make' (or 'gmake') to build mu"
echo