]> granicus.if.org Git - pdns/commitdiff
dnsdist: Import systemd autoconf macros
authorPieter Lexis <pieter.lexis@powerdns.com>
Tue, 12 Apr 2016 10:08:09 +0000 (12:08 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Tue, 12 Apr 2016 10:12:27 +0000 (12:12 +0200)
Imported
https://github.com/mcgrof/funk-systemd/blob/b17396e7b1f5e93db74cae0e9123f39cf27a8339/src/m4/systemd.m4
as m4/systemd.m4

Imported
https://github.com/mcgrof/funk-systemd/blob/b17396e7b1f5e93db74cae0e9123f39cf27a8339/src/m4/features.m4
as m4/ax_arg_default_enable_disable.m4

pdns/dnsdistdist/m4/ax_arg_default_enable_disable.m4 [new file with mode: 0644]
pdns/dnsdistdist/m4/systemd.m4 [new file with mode: 0644]

diff --git a/pdns/dnsdistdist/m4/ax_arg_default_enable_disable.m4 b/pdns/dnsdistdist/m4/ax_arg_default_enable_disable.m4
new file mode 100644 (file)
index 0000000..bd672ab
--- /dev/null
@@ -0,0 +1,21 @@
+AC_DEFUN([AX_ARG_DEFAULT_ENABLE], [
+AC_ARG_ENABLE([$1], AS_HELP_STRING([--disable-$1], [$2 (default is ENABLED)]))
+AX_PARSE_VALUE([$1], [y])
+])
+
+AC_DEFUN([AX_ARG_DEFAULT_DISABLE], [
+AC_ARG_ENABLE([$1], AS_HELP_STRING([--enable-$1], [$2 (default is DISABLED)]))
+AX_PARSE_VALUE([$1], [n])
+])
+
+dnl This function should not be called outside of this file
+AC_DEFUN([AX_PARSE_VALUE], [
+AS_IF([test "x$enable_$1" = "xno"], [
+    ax_cv_$1="n"
+], [test "x$enable_$1" = "xyes"], [
+    ax_cv_$1="y"
+], [test -z $ax_cv_$1], [
+    ax_cv_$1="$2"
+])
+$1=$ax_cv_$1
+AC_SUBST($1)])
diff --git a/pdns/dnsdistdist/m4/systemd.m4 b/pdns/dnsdistdist/m4/systemd.m4
new file mode 100644 (file)
index 0000000..182a56a
--- /dev/null
@@ -0,0 +1,123 @@
+# systemd.m4 - Macros to check for and enable systemd          -*- Autoconf -*-
+#
+# Copyright (C) 2014 Luis R. Rodriguez <mcgrof@suse.com>
+#
+# 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 2 of the License, or
+# (at your option) any later version.
+#
+# 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+dnl Some optional path options
+AC_DEFUN([AX_SYSTEMD_OPTIONS], [
+       AC_ARG_WITH(systemd, [  --with-systemd          set directory for systemd service files],
+               SYSTEMD_DIR="$withval", SYSTEMD_DIR="")
+       AC_SUBST(SYSTEMD_DIR)
+
+       AC_ARG_WITH(systemd, [  --with-systemd-modules-load          set directory for systemd modules load files],
+               SYSTEMD_MODULES_LOAD="$withval", SYSTEMD_MODULES_LOAD="")
+       AC_SUBST(SYSTEMD_MODULES_LOAD)
+])
+
+AC_DEFUN([AX_ENABLE_SYSTEMD_OPTS], [
+       AX_ARG_DEFAULT_ENABLE([systemd], [Disable systemd support])
+       AX_SYSTEMD_OPTIONS()
+])
+
+AC_DEFUN([AX_ALLOW_SYSTEMD_OPTS], [
+       AX_ARG_DEFAULT_DISABLE([systemd], [Enable systemd support])
+       AX_SYSTEMD_OPTIONS()
+])
+
+AC_DEFUN([AX_CHECK_SYSTEMD_LIBS], [
+       AC_CHECK_HEADER([systemd/sd-daemon.h], [
+           AC_CHECK_LIB([systemd-daemon], [sd_listen_fds], [libsystemddaemon="y"])
+       ])
+       AS_IF([test "x$libsystemddaemon" = x], [
+           AC_MSG_ERROR([Unable to find a suitable libsystemd-daemon library])
+       ])
+
+       PKG_CHECK_MODULES([SYSTEMD], [libsystemd-daemon])
+       dnl pkg-config older than 0.24 does not set these for
+       dnl PKG_CHECK_MODULES() worth also noting is that as of version 208
+       dnl of systemd pkg-config --cflags currently yields no extra flags yet.
+       AC_SUBST([SYSTEMD_CFLAGS])
+       AC_SUBST([SYSTEMD_LIBS])
+
+       AS_IF([test "x$SYSTEMD_DIR" = x], [
+           dnl In order to use the line below we need to fix upstream systemd
+           dnl to properly ${prefix} for child variables in
+           dnl src/core/systemd.pc.in but this is a bit complex at the
+           dnl moment as they depend on another rootprefix, which can vary
+           dnl from prefix in practice. We provide our own definition as we
+           dnl *know* where systemd will dump this to, but this does limit
+           dnl us to stick to a non custom systemdsystemunitdir, dnl to work
+           dnl around this we provide the additional configure option
+           dnl --with-systemd where you can specify the directory for the unit
+           dnl files. It would also be best to just extend the upstream
+           dnl pkg-config  pkg.m4 with an AC_DEFUN() to do this neatly.
+           dnl SYSTEMD_DIR="`$PKG_CONFIG --define-variable=prefix=$PREFIX --variable=systemdsystemunitdir systemd`"
+           SYSTEMD_DIR="\$(prefix)/lib/systemd/system/"
+       ], [])
+
+       AS_IF([test "x$SYSTEMD_DIR" = x], [
+           AC_MSG_ERROR([SYSTEMD_DIR is unset])
+       ], [])
+
+       dnl There is no variable for this yet for some reason
+       AS_IF([test "x$SYSTEMD_MODULES_LOAD" = x], [
+           SYSTEMD_MODULES_LOAD="\$(prefix)/lib/modules-load.d/"
+       ], [])
+
+       AS_IF([test "x$SYSTEMD_MODULES_LOAD" = x], [
+           AC_MSG_ERROR([SYSTEMD_MODULES_LOAD is unset])
+       ], [])
+])
+
+AC_DEFUN([AX_CHECK_SYSTEMD], [
+       dnl Respect user override to disable
+       AS_IF([test "x$enable_systemd" != "xno"], [
+            AS_IF([test "x$systemd" = "xy" ], [
+               AC_DEFINE([HAVE_SYSTEMD], [1], [Systemd available and enabled])
+                       systemd=y
+                       AX_CHECK_SYSTEMD_LIBS()
+           ],[systemd=n])
+       ],[systemd=n])
+])
+
+AC_DEFUN([AX_CHECK_SYSTEMD_ENABLE_AVAILABLE], [
+       AC_CHECK_HEADER([systemd/sd-daemon.h], [
+           AC_CHECK_LIB([systemd-daemon], [sd_listen_fds], [systemd="y"])
+       ])
+])
+
+dnl Enables systemd by default and requires a --disable-systemd option flag
+dnl to configure if you want to disable.
+AC_DEFUN([AX_ENABLE_SYSTEMD], [
+       AX_ENABLE_SYSTEMD_OPTS()
+       AX_CHECK_SYSTEMD()
+])
+
+dnl Systemd will be disabled by default and requires you to run configure with
+dnl --enable-systemd to look for and enable systemd.
+AC_DEFUN([AX_ALLOW_SYSTEMD], [
+       AX_ALLOW_SYSTEMD_OPTS()
+       AX_CHECK_SYSTEMD()
+])
+
+dnl Systemd will be disabled by default but if your build system is detected
+dnl to have systemd build libraries it will be enabled. You can always force
+dnl disable with --disable-systemd
+AC_DEFUN([AX_AVAILABLE_SYSTEMD], [
+       AX_ALLOW_SYSTEMD_OPTS()
+       AX_CHECK_SYSTEMD_ENABLE_AVAILABLE()
+       AX_CHECK_SYSTEMD()
+])