-
Stephan Bosch authoredStephan Bosch authored
configure.ac 9.81 KiB
AC_PREREQ([2.69])
m4_define([pigeonhole_VERSION],
m4_esyscmd_s([build-aux/git-version-gen]))))
m4_define([pigeonhole_ABI_VERSION],
m4_esyscmd_s([build-aux/git-abi-version-gen]))))
# Be sure to update ABI version also if anything changes that might require
# recompiling plugins. Most importantly that means if any structs are changed.
AC_INIT([dovecot-pigeonhole], [m4_defn([pigeonhole_VERSION])], [dovecot@dovecot.org])
AC_DEFINE_UNQUOTED([PIGEONHOLE_ABI_VERSION], [m4_defn([pigeonhole_ABI_VERSION])], [Pigeonhole ABI version])
AC_CONFIG_SRCDIR([src])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([build-aux])
# Autoheader is not needed and does more harm than good for this package. However, it is
# tightly integrated in autoconf/automake and therefore it is difficult not to use it. As
# a workaround we give autoheader a dummy config header to chew on and we handle the
# real config header ourselves.
AC_CONFIG_HEADERS([dummy-config.h pigeonhole-config.h])
AC_DEFINE_UNQUOTED(PIGEONHOLE_NAME, "Pigeonhole",
[Define to the full name of Pigeonhole for Dovecot.])
AC_DEFINE_UNQUOTED(PIGEONHOLE_VERSION, "$PACKAGE_VERSION",
[Define to the version of Pigeonhole for Dovecot.])
AM_INIT_AUTOMAKE([no-define foreign tar-ustar])
AM_SILENT_RULES([yes])
AM_MAINTAINER_MODE
AC_PROG_CC
AC_PROG_CPP
LT_INIT
# Couple with Dovecot
#
DC_DOVECOT
DC_DOVECOT_MODULEDIR
LIBDOVECOT_INCLUDE="$LIBDOVECOT_INCLUDE $LIBDOVECOT_STORAGE_INCLUDE"
CFLAGS="$CFLAGS -I\$(top_srcdir)"
LIBS="$DOVECOT_LIBS"
BINARY_LDFLAGS="$PIE_LDFLAGS $RELRO_LDFLAGS"
BINARY_CFLAGS="$PIE_CFLAGS"
AC_SUBST(BINARY_CFLAGS)
AC_SUBST(BINARY_LDFLAGS)
AC_SUBST(LIBDOVECOT_INCLUDE)
AC_SUBST(PIGEONHOLE_ASSET_VERSION, regexp(AC_PACKAGE_VERSION, [^\([0-9]+\)\.\([0-9]+\).\([0-9]+\)], [\1.\2.\3]))
AS_IF([test "$PIGEONHOLE_ASSET_VERSION" = "0.0.0"], [
AC_SUBST([PIGEONHOLE_ASSET_VERSION], "main")
])
AS_IF([test "$PIGEONHOLE_ASSET_VERSION" = ""], [
AC_SUBST([PIGEONHOLE_ASSET_VERSION], "main")
])
AS_IF([test $DOVECOT_PRO_BUILD = "1"], [
AC_SUBST(PIGEONHOLE_ASSET_URL, "doc.dovecotpro.com")
], [
AC_SUBST(PIGEONHOLE_ASSET_URL, "doc.dovecot.org")
])
# Define Sieve documentation install dir
#
sieve_docdir='${dovecot_docdir}/sieve'
AC_SUBST(sieve_docdir)
AM_MISSING_PROG([WGET], [wget])
# Extensions under development
#
AC_ARG_WITH(unfinished-features,
AS_HELP_STRING([--with-unfinished-features], [Build unfinished new features/extensions (default=no)]),
TEST_WITH(unfinished_features, $withval),
want_unfinished_features=no)
AM_CONDITIONAL(BUILD_UNFINISHED, test "$want_unfinished_features" = "yes")
if test "$want_unfinished_features" = "yes"; then
AC_DEFINE(HAVE_SIEVE_UNFINISHED,,
[Define to build unfinished features/extensions.])
fi
AC_ARG_WITH(docs,
AS_HELP_STRING([--with-docs], [Install documentation (default=yes)]),
TEST_WITH(docs, $withval),
want_docs=yes)
AM_CONDITIONAL(BUILD_DOCS, test "$want_docs" = "yes")
AC_ARG_WITH(managesieve,
AS_HELP_STRING([--with-managesieve], [Build ManageSieve service (default=yes)]),
TEST_WITH(managesieve, $withval),
want_managesieve=yes)
AM_CONDITIONAL(BUILD_MANAGESIEVE, test "$want_managesieve" = "yes")
AC_ARG_WITH(ldap,
AS_HELP_STRING([--with-ldap=yes|plugin], [Build with LDAP support (default=no)]),
TEST_WITH(ldap, $withval, plugin),
want_ldap=no)
# FIXME: Imported this from Dovecot auth for now. We're working on a proper
# lib-ldap, but, until then, some code is duplicated.
have_ldap=no
if test $want_ldap != no; then
AC_CHECK_LIB(ldap, ldap_init, [
AC_CHECK_HEADER(ldap.h, [
AC_CHECK_LIB(ldap, ldap_initialize, [
AC_DEFINE(LDAP_HAVE_INITIALIZE,, [Define if you have ldap_initialize])
])
AC_CHECK_LIB(ldap, ldap_start_tls_s, [
AC_DEFINE(LDAP_HAVE_START_TLS_S,, [Define if you have ldap_start_tls_s])
])
LDAP_LIBS="-lldap"
AC_CHECK_LIB(ldap, ber_free, [
# do nothing, default is to add -lldap to LIBS
:
], [
AC_CHECK_LIB(lber, ber_free, [
LDAP_LIBS="$LDAP_LIBS -llber"
])
])
AC_SUBST(LDAP_LIBS)
if test $want_ldap != plugin; then
AC_DEFINE(SIEVE_BUILTIN_LDAP,, [LDAP support is built in])
fi
AC_DEFINE(STORAGE_LDAP,, [Build with LDAP support])
AC_CHECK_HEADERS(sasl.h sasl/sasl.h)
have_ldap=yes
], [
if test $want_ldap != auto; then
AC_MSG_ERROR([cannot build with LDAP support: ldap.h not found])
fi
])
], [
if test $want_ldap != auto; then
AC_MSG_ERROR([cannot build with LDAP support: libldap not found])
fi
])
fi
if test $have_ldap = no; then
not_scriptloc="$not_scriptloc ldap"
else
scriptloc="$scriptloc ldap"
if test $want_ldap = plugin; then
have_ldap_plugin=yes
scriptloc="$scriptloc (plugin)"
fi
fi
AM_CONDITIONAL(LDAP_PLUGIN, test "$have_ldap_plugin" = "yes")
dnl **
dnl ** Settings
dnl **
libsieve_setting_dirs="\
$srcdir/src/lib-sieve/storage/data \
$srcdir/src/lib-sieve/storage/file \
$srcdir/src/lib-sieve/storage/dict \
$srcdir/src/lib-sieve/plugins/vacation \
$srcdir/src/lib-sieve/plugins/subaddress \
$srcdir/src/lib-sieve/plugins/comparator-i-ascii-numeric \
$srcdir/src/lib-sieve/plugins/relational \
$srcdir/src/lib-sieve/plugins/regex \
$srcdir/src/lib-sieve/plugins/copy \
$srcdir/src/lib-sieve/plugins/imap4flags \
$srcdir/src/lib-sieve/plugins/include \
$srcdir/src/lib-sieve/plugins/body \
$srcdir/src/lib-sieve/plugins/variables \
$srcdir/src/lib-sieve/plugins/enotify \
$srcdir/src/lib-sieve/plugins/environment \
$srcdir/src/lib-sieve/plugins/mailbox \
$srcdir/src/lib-sieve/plugins/date \
$srcdir/src/lib-sieve/plugins/spamvirustest \
$srcdir/src/lib-sieve/plugins/ihave \
$srcdir/src/lib-sieve/plugins/editheader \
$srcdir/src/lib-sieve/plugins/duplicate \
$srcdir/src/lib-sieve/plugins/index \
$srcdir/src/lib-sieve/plugins/metadata \
$srcdir/src/lib-sieve/plugins/mime \
$srcdir/src/lib-sieve/plugins/special-use \
$srcdir/src/lib-sieve/plugins/vnd.dovecot/debug \
$srcdir/src/lib-sieve/plugins/vnd.dovecot/environment \
$srcdir/src/lib-sieve/plugins/vnd.dovecot/report"
if test $want_ldap != plugin; then
libsieve_setting_dirs="$libsieve_setting_dirs \
$srcdir/src/lib-sieve/storage/ldap"
fi
libsieve_headers=
libsieve_c_files=
non_libsieve_headers=
non_libsieve_c_files=
all_files=`find $srcdir/src -name '*.[[ch]]' | grep -v '/src/plugins/settings/' | grep -v '/src/managesieve' | grep -v '/test-' | xargs grep '\\(struct setting_parser_info [[a-z]]\\)\\|\\(struct service_settings [[a-z]]\\)\\|\\(<settings checks>\\)' | sed 's/:.*//' | sort | uniq`
for file in $all_files; do
dir=`echo "$file" | sed 's:/[[^/]]*$::'`
if echo "$libsieve_setting_dirs" | grep "$dir" >/dev/null; then
dnl lib-sieve
if echo "$file" | grep '\.h$' >/dev/null; then
libsieve_headers="$libsieve_headers $file"
else
libsieve_c_files="$libsieve_c_files $file"
fi
else
dnl not lib-sieve
if echo "$file" | grep '\.h$' >/dev/null; then
non_libsieve_headers="$non_libsieve_headers $file"
else
non_libsieve_c_files="$non_libsieve_c_files $file"
fi
fi
done
dnl libsieve is linked to pigeonhole-settings plugin, so don't duplicate the .c
dnl file contents. However, we still need to scan the .c files for any
dnl setting_parser_infos that aren't elsewhere.
# list headers first, C files last
SETTING_FILES=`echo $libsieve_headers $non_libsieve_headers $non_libsieve_c_files | sed -e s,$srcdir/src,./src,g -e 's,./src,$(top_srcdir)/src,g'`
SETTING_LINKED_FILES=`echo $libsieve_c_files | sed -e s,$srcdir/src,./src,g -e 's,./src,$(top_srcdir)/src,g'`
AC_SUBST(SETTING_FILES)
AC_SUBST(SETTING_LINKED_FILES)
CFLAGS="$CFLAGS $EXTRA_CFLAGS"
LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
AS_IF([test "$AR_FLAGS" = "cru"], [AR_FLAGS="cr"], [])
AC_SUBST([AR_FLAGS])
AC_CONFIG_FILES([
Makefile
doc/Makefile
doc/man/Makefile
doc/example-config/Makefile
doc/example-config/conf.d/Makefile
doc/rfc/Makefile
doc/extensions/Makefile
doc/locations/Makefile
doc/plugins/Makefile
src/Makefile
src/lib-sieve/Makefile
src/lib-sieve/util/Makefile
src/lib-sieve/storage/Makefile
src/lib-sieve/storage/data/Makefile
src/lib-sieve/storage/file/Makefile
src/lib-sieve/storage/dict/Makefile
src/lib-sieve/storage/ldap/Makefile
src/lib-sieve/plugins/Makefile
src/lib-sieve/plugins/vacation/Makefile
src/lib-sieve/plugins/subaddress/Makefile
src/lib-sieve/plugins/comparator-i-ascii-numeric/Makefile
src/lib-sieve/plugins/relational/Makefile
src/lib-sieve/plugins/regex/Makefile
src/lib-sieve/plugins/imap4flags/Makefile
src/lib-sieve/plugins/copy/Makefile
src/lib-sieve/plugins/include/Makefile
src/lib-sieve/plugins/body/Makefile
src/lib-sieve/plugins/variables/Makefile
src/lib-sieve/plugins/enotify/Makefile
src/lib-sieve/plugins/enotify/mailto/Makefile
src/lib-sieve/plugins/environment/Makefile
src/lib-sieve/plugins/mailbox/Makefile
src/lib-sieve/plugins/date/Makefile
src/lib-sieve/plugins/spamvirustest/Makefile
src/lib-sieve/plugins/ihave/Makefile
src/lib-sieve/plugins/editheader/Makefile
src/lib-sieve/plugins/metadata/Makefile
src/lib-sieve/plugins/duplicate/Makefile
src/lib-sieve/plugins/index/Makefile
src/lib-sieve/plugins/mime/Makefile
src/lib-sieve/plugins/special-use/Makefile
src/lib-sieve/plugins/vnd.dovecot/Makefile
src/lib-sieve/plugins/vnd.dovecot/debug/Makefile
src/lib-sieve/plugins/vnd.dovecot/environment/Makefile
src/lib-sieve/plugins/vnd.dovecot/report/Makefile
src/lib-sieve-tool/Makefile
src/lib-managesieve/Makefile
src/plugins/Makefile
src/plugins/doveadm-sieve/Makefile
src/plugins/lda-sieve/Makefile
src/plugins/sieve-extprograms/Makefile
src/plugins/imapsieve/Makefile
src/plugins/imap-filter-sieve/Makefile
src/plugins/settings/Makefile
src/sieve-tools/Makefile
src/managesieve/Makefile
src/managesieve-login/Makefile
src/testsuite/Makefile
build-aux/run-test.sh
stamp.h])
AC_OUTPUT
not_scriptloc=`echo "$not_scriptloc"|sed 's/ / -/g'`
echo
echo "Install prefix . : $prefix"
echo "script drivers . : file dict$scriptloc"
if test "$not_scriptloc" != ""; then
echo " :$not_scriptloc"
fi