summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4')
-rw-r--r--m4/.keep0
-rw-r--r--m4/systemd.m4478
2 files changed, 478 insertions, 0 deletions
diff --git a/m4/.keep b/m4/.keep
deleted file mode 100644
index e69de29..0000000
--- a/m4/.keep
+++ /dev/null
diff --git a/m4/systemd.m4 b/m4/systemd.m4
new file mode 100644
index 0000000..ee7ebdf
--- /dev/null
+++ b/m4/systemd.m4
@@ -0,0 +1,478 @@
+# Copyright (c) 2011-2013, Michał Górny
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+
+# SYSTEMD_DIRECTORY_AC(directory-variable, directory-description)
+# ---------------------------------------------------------------
+#
+# A generic macro that obtains one of the systemd directories defined
+# in systemd.pc. It adds --with-$1 configure option and tries to
+# obtain the default from pkg-config.
+#
+# If any location was found or given, the name given as $1 will be
+# substituted with it. Otherwise, $with_[$1] will be set to 'no'.
+
+AC_DEFUN([SYSTEMD_DIRECTORY_AC], [
+ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+
+ AC_ARG_WITH([$1],
+ AS_HELP_STRING([--with-$1=DIR],
+ [Directory for $2 (default: auto-detect through pkg-config)]))
+
+ AC_MSG_CHECKING([$2 directory])
+
+ AS_IF([test x"$with_$1" = x"yes" -o x"$with_$1" = x""], [
+ ac_systemd_pkgconfig_dir=`$PKG_CONFIG --variable=$1 systemd`
+
+ AS_IF([test x"$ac_systemd_pkgconfig_dir" = x""], [
+ AS_IF([test x"$with_$1" = x"yes"], [
+ AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])
+ ])
+ with_$1=no
+ ], [
+ with_$1=$ac_systemd_pkgconfig_dir
+ ])
+ ])
+
+ AC_MSG_RESULT([$with_$1])
+
+ AS_IF([test x"$with_$1" != x"no"], [
+ AC_SUBST([$1], [$with_$1])
+ ])
+])
+
+# SYSTEMD_DIRECTORY_AM(directory-variable)
+# ---------------------------------------------------------------
+#
+# Defines WITH_$1 automake macro if directory was set through
+# --with-$1 or obtained from pkg-config.
+
+AC_DEFUN([SYSTEMD_DIRECTORY_AM], [
+ m4_pushdef([AM_MACRO], WITH_[]m4_toupper([$1]))
+ AM_CONDITIONAL(AM_MACRO,
+ [test x"$with_$1" != x"no"])
+ m4_popdef([AM_MACRO])
+])
+
+# SYSTEMD_SYSTEMUNITDIR_AC
+# ------------------------
+#
+# A macro grabbing all information necessary to install systemd system
+# units. It adds --with-systemdsystemunitdir (with defaults from
+# pkg-config) and either gets the correct location for systemd system
+# units or the request not to install them.
+#
+# If installing system units was requested, systemdsystemunitdir will be
+# substituted with a correct location; otherwise,
+# $with_systemdsystemunitdir will be set to 'no'.
+#
+# This macro is intended for use only in specific projects not using
+# automake. Projects using automake should use the non-AC variant
+# instead.
+
+AC_DEFUN([SYSTEMD_SYSTEMUNITDIR_AC], [
+ SYSTEMD_DIRECTORY_AC([systemdsystemunitdir], [systemd system unit])
+])
+
+# SYSTEMD_SYSTEMUNITDIR
+# ---------------------
+#
+# An extended version of SYSTEMD_SYSTEMUNITDIR_AC with automake support.
+#
+# In addition to substituting systemdsystemunitdir, it creates
+# an automake conditional called WITH_SYSTEMDSYSTEMUNITDIR.
+#
+# Example use:
+# - configure.ac:
+# SYSTEMD_SYSTEMUNITDIR
+# - Makefile.am:
+# if WITH_SYSTEMDSYSTEMUNITDIR
+# dist_systemdsystemunit_DATA = foo.service
+# endif
+
+AC_DEFUN([SYSTEMD_SYSTEMUNITDIR], [
+ AC_REQUIRE([SYSTEMD_SYSTEMUNITDIR_AC])
+ SYSTEMD_DIRECTORY_AM([systemdsystemunitdir])
+])
+
+# SYSTEMD_SYSTEMPRESETDIR_AC
+# --------------------------
+#
+# A macro grabbing all information necessary to install systemd system
+# presets. It adds --with-systemdsystempresetdir (with defaults from
+# pkg-config) and either gets the correct location for systemd system
+# presets or the request not to install them.
+#
+# If installing system presets was requested, systemdsystempresetdir
+# will be substituted with a correct location; otherwise,
+# $with_systemdsystempresetdir will be set to 'no'.
+#
+# This macro is intended for use only in specific projects not using
+# automake. Projects using automake should use the non-AC variant
+# instead.
+
+AC_DEFUN([SYSTEMD_SYSTEMPRESETDIR_AC], [
+ SYSTEMD_DIRECTORY_AC([systemdsystempresetdir], [systemd system preset])
+])
+
+# SYSTEMD_SYSTEMPRESETDIR
+# -----------------------
+#
+# An extended version of SYSTEMD_SYSTEMPRESETDIR_AC with automake
+# support.
+#
+# In addition to substituting systemdsystempresetdir, it creates
+# an automake conditional called WITH_SYSTEMDSYSTEMPRESETDIR.
+
+AC_DEFUN([SYSTEMD_SYSTEMPRESETDIR], [
+ AC_REQUIRE([SYSTEMD_SYSTEMPRESETDIR_AC])
+ SYSTEMD_DIRECTORY_AM([systemdsystempresetdir])
+])
+
+# SYSTEMD_SYSTEMCONFDIR_AC
+# ------------------------
+#
+# A macro grabbing all information necessary to install systemd system
+# configuration. It adds --with-systemdsystemconfdir (with defaults from
+# pkg-config) and either gets the correct location for systemd system
+# configuration or the request not to install them.
+#
+# If installing to the systemconfdir was requested, systemdsystemconfdir
+# will be substituted with a correct location; otherwise,
+# $with_systemdsystemconfdir will be set to 'no'.
+#
+# This macro is intended for use only in specific projects not using
+# automake. Projects using automake should use the non-AC variant
+# instead.
+
+AC_DEFUN([SYSTEMD_SYSTEMCONFDIR_AC], [
+ SYSTEMD_DIRECTORY_AC([systemdsystemconfdir], [systemd system configuration])
+])
+
+# SYSTEMD_SYSTEMCONFDIR
+# ---------------------
+#
+# An extended version of SYSTEMD_SYSTEMCONFDIR_AC with automake
+# support.
+#
+# In addition to substituting systemdsystemconfdir, it creates
+# an automake conditional called WITH_SYSTEMDSYSTEMCONFDIR.
+
+AC_DEFUN([SYSTEMD_SYSTEMCONFDIR], [
+ AC_REQUIRE([SYSTEMD_SYSTEMCONFDIR_AC])
+ SYSTEMD_DIRECTORY_AM([systemdsystemconfdir])
+])
+
+# SYSTEMD_USERUNITDIR_AC
+# ----------------------
+#
+# A macro grabbing all information necessary to install systemd user
+# units. It adds --with-systemduserunitdir (with defaults from
+# pkg-config) and either gets the correct location for systemd user
+# units or the request not to install them.
+#
+# If installing user units was requested, systemduserunitdir will be
+# substituted with a correct location; otherwise,
+# $with_systemduserunitdir will be set to 'no'.
+#
+# This macro is intended for use only in specific projects not using
+# automake. Projects using automake should use the non-AC variant
+# instead.
+
+AC_DEFUN([SYSTEMD_USERUNITDIR_AC], [
+ SYSTEMD_DIRECTORY_AC([systemduserunitdir], [systemd user unit])
+])
+
+# SYSTEMD_USERUNITDIR
+# -------------------
+#
+# An extended version of SYSTEMD_USERUNITDIR_AC with automake support.
+#
+# In addition to substituting systemduserunitdir, it creates
+# an automake conditional called WITH_SYSTEMDUSERUNITDIR.
+#
+# Example use:
+# - configure.ac:
+# SYSTEMD_USERUNITDIR
+# - Makefile.am:
+# if WITH_SYSTEMDUSERUNITDIR
+# dist_systemduserunit_DATA = foo.service
+# endif
+
+AC_DEFUN([SYSTEMD_USERUNITDIR], [
+ AC_REQUIRE([SYSTEMD_USERUNITDIR_AC])
+ SYSTEMD_DIRECTORY_AM([systemduserunitdir])
+])
+
+# SYSTEMD_USERPRESETDIR_AC
+# ------------------------
+#
+# A macro grabbing all information necessary to install systemd user
+# presets. It adds --with-systemduserpresetdir (with defaults from
+# pkg-config) and either gets the correct location for systemd user
+# presets or the request not to install them.
+#
+# If installing user presets was requested, systemduserpresetdir
+# will be substituted with a correct location; otherwise,
+# $with_systemduserpresetdir will be set to 'no'.
+#
+# This macro is intended for use only in specific projects not using
+# automake. Projects using automake should use the non-AC variant
+# instead.
+
+AC_DEFUN([SYSTEMD_USERPRESETDIR_AC], [
+ SYSTEMD_DIRECTORY_AC([systemduserpresetdir], [systemd user preset])
+])
+
+# SYSTEMD_USERPRESETDIR
+# ---------------------
+#
+# An extended version of SYSTEMD_USERPRESETDIR_AC with automake
+# support.
+#
+# In addition to substituting systemduserpresetdir, it creates
+# an automake conditional called WITH_SYSTEMDUSERPRESETDIR.
+
+AC_DEFUN([SYSTEMD_USERPRESETDIR], [
+ AC_REQUIRE([SYSTEMD_USERPRESETDIR_AC])
+ SYSTEMD_DIRECTORY_AM([systemduserpresetdir])
+])
+
+# SYSTEMD_USERCONFDIR_AC
+# ----------------------
+#
+# A macro grabbing all information necessary to install systemd user
+# configuration. It adds --with-systemduserconfdir (with defaults from
+# pkg-config) and either gets the correct location for systemd user
+# configuration or the request not to install them.
+#
+# If installing to the userconfdir was requested, systemduserconfdir
+# will be substituted with a correct location; otherwise,
+# $with_systemduserconfdir will be set to 'no'.
+#
+# This macro is intended for use only in specific projects not using
+# automake. Projects using automake should use the non-AC variant
+# instead.
+
+AC_DEFUN([SYSTEMD_USERCONFDIR_AC], [
+ SYSTEMD_DIRECTORY_AC([systemduserconfdir], [systemd user configuration])
+])
+
+# SYSTEMD_USERCONFDIR
+# -------------------
+#
+# An extended version of SYSTEMD_USERCONFDIR_AC with automake
+# support.
+#
+# In addition to substituting systemduserconfdir, it creates
+# an automake conditional called WITH_SYSTEMDUSERCONFDIR.
+
+AC_DEFUN([SYSTEMD_USERCONFDIR], [
+ AC_REQUIRE([SYSTEMD_USERCONFDIR_AC])
+ SYSTEMD_DIRECTORY_AM([systemduserconfdir])
+])
+
+# SYSTEMD_UTILDIR_AC
+# ------------------
+#
+# A macro grabbing all information necessary to obtain systemd utility
+# directory. It adds --with-systemdutildir (with defaults from
+# pkg-config) and either gets the correct location for systemd
+# utility programs or the request not to install them.
+#
+# If installing to the utildir was requested, systemdutildir
+# will be substituted with a correct location; otherwise,
+# $with_systemdutildir will be set to 'no'.
+#
+# This macro is intended for use only in specific projects not using
+# automake. Projects using automake should use the non-AC variant
+# instead.
+
+AC_DEFUN([SYSTEMD_UTILDIR_AC], [
+ SYSTEMD_DIRECTORY_AC([systemdutildir], [systemd utility])
+])
+
+# SYSTEMD_UTILDIR
+# ---------------
+#
+# An extended version of SYSTEMD_UTILDIR_AC with automake
+# support.
+#
+# In addition to substituting systemdutildir, it creates
+# an automake conditional called WITH_SYSTEMDUTILDIR.
+
+AC_DEFUN([SYSTEMD_UTILDIR], [
+ AC_REQUIRE([SYSTEMD_UTILDIR_AC])
+ SYSTEMD_DIRECTORY_AM([systemdutildir])
+])
+
+# SYSTEMD_SYSTEMGENERATORDIR_AC
+# -----------------------------
+#
+# A macro grabbing all information necessary to install systemd system
+# generators. It adds --with-systemdsystemgeneratordir (with defaults from
+# pkg-config) and either gets the correct location for systemd system
+# generators or the request not to install them.
+#
+# If installing system generators was requested, systemdsystemgeneratordir
+# will be substituted with a correct location; otherwise,
+# $with_systemdsystemgeneratordir will be set to 'no'.
+#
+# This macro is intended for use only in specific projects not using
+# automake. Projects using automake should use the non-AC variant
+# instead.
+
+AC_DEFUN([SYSTEMD_SYSTEMGENERATORDIR_AC], [
+ SYSTEMD_DIRECTORY_AC([systemdsystemgeneratordir], [systemd system generator])
+])
+
+# SYSTEMD_SYSTEMGENERATORDIR
+# --------------------------
+#
+# An extended version of SYSTEMD_SYSTEMGENERATORDIR_AC with automake
+# support.
+#
+# In addition to substituting systemdsystemgeneratordir, it creates
+# an automake conditional called WITH_SYSTEMDSYSTEMGENERATORDIR.
+
+AC_DEFUN([SYSTEMD_SYSTEMGENERATORDIR], [
+ AC_REQUIRE([SYSTEMD_SYSTEMGENERATORDIR_AC])
+ SYSTEMD_DIRECTORY_AM([systemdsystemgeneratordir])
+])
+
+# SYSTEMD_USERGENERATORDIR_AC
+# ---------------------------
+#
+# A macro grabbing all information necessary to install systemd user
+# generators. It adds --with-systemdusergeneratordir (with defaults from
+# pkg-config) and either gets the correct location for systemd user
+# generators or the request not to install them.
+#
+# If installing user generators was requested, systemdusergeneratordir
+# will be substituted with a correct location; otherwise,
+# $with_systemdusergeneratordir will be set to 'no'.
+#
+# This macro is intended for use only in specific projects not using
+# automake. Projects using automake should use the non-AC variant
+# instead.
+
+AC_DEFUN([SYSTEMD_USERGENERATORDIR_AC], [
+ SYSTEMD_DIRECTORY_AC([systemdusergeneratordir], [systemd user generator])
+])
+
+# SYSTEMD_USERGENERATORDIR
+# ------------------------
+#
+# An extended version of SYSTEMD_USERGENERATORDIR_AC with automake
+# support.
+#
+# In addition to substituting systemdusergeneratordir, it creates
+# an automake conditional called WITH_SYSTEMDUSERGENERATORDIR.
+
+AC_DEFUN([SYSTEMD_USERGENERATORDIR], [
+ AC_REQUIRE([SYSTEMD_USERGENERATORDIR_AC])
+ SYSTEMD_DIRECTORY_AM([systemdusergeneratordir])
+])
+
+# SYSTEMD_CATALOGDIR_AC
+# ---------------------
+#
+# A macro grabbing all information necessary to install Journal
+# catalogs. It adds --with-catalogdir (with defaults from pkg-config)
+# and either gets the correct location for catalogs or the request
+# not to install them.
+#
+# If installing catalogs was requested, catalogdir will be substituted
+# with a correct location; otherwise, $with_catalogdir will be set
+# to 'no'.
+#
+# This macro is intended for use only in specific projects not using
+# automake. Projects using automake should use the non-AC variant
+# instead.
+
+AC_DEFUN([SYSTEMD_CATALOGDIR_AC], [
+ SYSTEMD_DIRECTORY_AC([catalogdir], [Journal catalog])
+])
+
+# SYSTEMD_CATALOGDIR
+# ------------------
+#
+# An extended version of SYSTEMD_CATALOGDIR_AC with automake
+# support.
+#
+# In addition to substituting catalogdir, it creates an automake
+# conditional called WITH_CATALOGDIR.
+
+AC_DEFUN([SYSTEMD_CATALOGDIR], [
+ AC_REQUIRE([SYSTEMD_CATALOGDIR_AC])
+ SYSTEMD_DIRECTORY_AM([catalogdir])
+])
+
+# SYSTEMD_MISC
+# ------------
+#
+# Declare miscellaneous (unconditional) directories used by systemd,
+# and possibly other init systems.
+#
+# Declared directories:
+# - binfmtdir (binfmt.d for binfmt_misc decl files),
+# - modulesloaddir (modules-load.d for module loader).
+# - sysctldir (sysctl.d for /proc/sys settings),
+# - tmpfilesdir (tmpfiles.d for temporary file setup).
+#
+# Example use:
+# - configure.ac:
+# SYSTEMD_MISC
+# - Makefile.am:
+# dist_binfmt_DATA = binfmt/foo.conf
+#
+# TODO: systemd only supports /usr and /usr/local
+
+AC_DEFUN([SYSTEMD_MISC], [
+ AS_IF([test x"$prefix" = x"/"], [
+ AC_SUBST([binfmtdir], [/usr/lib/binfmt.d])
+ AC_SUBST([modulesloaddir], [/usr/lib/modules-load.d])
+ AC_SUBST([sysctldir], [/usr/lib/sysctl.d])
+ AC_SUBST([tmpfilesdir], [/usr/lib/tmpfiles.d])
+ AC_SUBST([kernelinstalldir], [/usr/lib/kernel/install.d])
+ AC_SUBST([ntpunitsdir], [/usr/lib/systemd/ntp-units.d])
+ ], [
+ AC_SUBST([binfmtdir], ['${prefix}/lib/binfmt.d'])
+ AC_SUBST([modulesloaddir], ['${prefix}/lib/modules-load.d'])
+ AC_SUBST([sysctldir], ['${prefix}/lib/sysctl.d'])
+ AC_SUBST([tmpfilesdir], ['${prefix}/lib/tmpfiles.d'])
+ AC_SUBST([kernelinstalldir], ['${prefix}/lib/kernel/install.d'])
+ AC_SUBST([ntpunitsdir], ['${prefix}/lib/systemd/ntp-units.d'])
+ ])
+])
+
+
+# Obsolete macros.
+AU_ALIAS([SYSTEMD_SYSTEM_UNITS_AC], [SYSTEMD_SYSTEMUNITDIR_AC])
+AU_DEFUN([SYSTEMD_SYSTEM_UNITS], [
+ SYSTEMD_SYSTEMUNITDIR
+
+ AM_CONDITIONAL([WITH_SYSTEMD_SYSTEM_UNITS],
+ [test x"$with_systemdsystemunitdir" != x"no"])
+], [Please replace WITH_SYSTEMD_SYSTEM_UNITS automake conditionals with WITH_SYSTEMDSYSTEMUNITDIR and drop the definition of the former.])