From: Aki Tuomi Date: Mon, 26 Apr 2021 05:39:50 +0000 (+0300) Subject: Makefile.am: Fix systemd detection mess in automake X-Git-Tag: 2.3.15~44 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9b47f23ca4ab5272b2fe0ed3a9d78e99c717058e;p=thirdparty%2Fdovecot%2Fcore.git Makefile.am: Fix systemd detection mess in automake --- diff --git a/Makefile.am b/Makefile.am index 34f58c79a8..dee457c152 100644 --- a/Makefile.am +++ b/Makefile.am @@ -59,7 +59,6 @@ dovecot-config: dovecot-config.in Makefile -e "s|^\(dovecot_statedir\)=|\1=$(statedir)|" \ ) > dovecot-config -if HAVE_LIBSYSTEMD %.service: %.service.in $(AM_V_GEN)sed -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@bindir\@,$(bindir),g' \ @@ -67,6 +66,7 @@ if HAVE_LIBSYSTEMD -e 's,@systemdservicetype\@,$(systemdservicetype),g' \ $< > $@ +if WANT_SYSTEMD systemdsystemunit_DATA = \ dovecot.socket \ dovecot.service @@ -92,7 +92,7 @@ install-exec-hook: uninstall-hook: rm $(DESTDIR)$(pkglibdir)/dovecot-config -if HAVE_LIBSYSTEMD +if WANT_SYSTEMD CLEANFILES = dovecot.service endif diff --git a/configure.ac b/configure.ac index 19242beb60..75ab282a84 100644 --- a/configure.ac +++ b/configure.ac @@ -241,26 +241,11 @@ AC_SUBST(statedir) AC_ARG_WITH([systemd], AS_HELP_STRING([--with-systemd], [Build with systemd support (default=auto)]), - want_systemd="$withval" + want_systemd="$withval", + want_systemd="auto" ) -systemdservicetype='simple' - -AS_IF([test "$want_systemd" != "no"], [ - PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [ - AC_DEFINE([HAVE_LIBSYSTEMD],[1], [Define to 1 if you have libsystemd]) - systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd` - systemdservicetype='notify' - ], [AS_IF([test "$want_systemd" = "yes"], [ - AC_MSG_ERROR([libsystemd not found]) - ], - [want_systemd="no"]) - ]) -]) - -AC_SUBST(systemdsystemunitdir) -AC_SUBST(systemdservicetype) -AM_CONDITIONAL(HAVE_LIBSYSTEMD, [test "$want_systemd" != "no"]) +DOVECOT_WANT_SYSTEMD dovecot_moduledir="$libdir/dovecot" DC_DOVECOT_MODULEDIR @@ -968,6 +953,13 @@ if test "$not_userdb" != ""; then echo " :$not_userdb" fi echo "CFLAGS ......... : $CFLAGS" + +if test "$systemdsystemunitdir" != ""; then + echo "SYSTEMD ........ : $systemdservicetype - $systemdsystemunitdir/dovecot.service"; +else + echo "SYSTEMD ........ : $systemdservicetype - (no unit file)" +fi + echo "SQL drivers .... :$sql_drivers" if test "$not_sql_drivers" != ""; then echo " :$not_sql_drivers" diff --git a/m4/want_systemd.m4 b/m4/want_systemd.m4 new file mode 100644 index 0000000000..fbccbc2c0d --- /dev/null +++ b/m4/want_systemd.m4 @@ -0,0 +1,36 @@ +dnl Checks for libsystemd existence and where +dnl to put systemd unit files. You can have +dnl systemd units without libsystemd. + +AC_DEFUN([DOVECOT_WANT_SYSTEMD], [ + systemdservicetype='simple' + have_libsystemd=no + + AS_IF([test "$want_systemd" != "no"], [ + dnl Check for actual systemd integration + PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [ + AC_DEFINE([HAVE_LIBSYSTEMD],[1], [Define to 1 if you have libsystemd]) + systemdservicetype='notify' + have_libsystemd=yes + ], AS_IF([test "$want_systemd" = "yes"], [ + AC_MSG_WARN([libsystemd not found - full integration disabled]) + ]) + ) + dnl Check for unit file installation + AC_MSG_CHECKING([for systemd unit directory]) + AS_IF([test "$systemdsystemunitdir" = ""], [ + PKG_CHECK_VAR([systemdsystemunitdir], [systemd], [systemdsystemunitdir]) + ]) + AC_MSG_RESULT([$systemdsystemunitdir]) + AS_IF([test "$systemdsystemunitdir" = ""], [ + AS_IF([test "$want_systemd" = "yes"], [ + AC_MSG_ERROR([Cannot determine where to put systemd files - Provide systemdsystemunitdir manually]) + ]) + dnl Cannot enable even unit file installation. + want_systemd=no + ]) + ]) + AC_SUBST(systemdsystemunitdir) + AC_SUBST(systemdservicetype) + AM_CONDITIONAL(WANT_SYSTEMD, [test "$want_systemd" != "no"]) +])