cups/config-scripts/cups-startup.m4

222 lines
5.8 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

dnl
dnl Launch-on-demand/startup stuff for CUPS.
dnl
dnl Copyright © 2021 by OpenPrinting.
dnl Copyright © 2007-2017 by Apple Inc.
dnl Copyright © 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more
dnl information.
dnl
ONDEMANDFLAGS=""
ONDEMANDLIBS=""
AC_SUBST([ONDEMANDFLAGS])
AC_SUBST([ONDEMANDLIBS])
AC_ARG_WITH([ondemand], AS_HELP_STRING([--with-ondemand=...], [Specify the on-demand launch interface (launchd, systemd, upstart)]))
AS_IF([test "x$with_ondemand" = x], [
AS_IF([test $host_os_name = darwin], [
with_ondemand="launchd"
], [
with_ondemand="yes"
])
], [test "x$with_ondemand" = xyes -a $host_os_name = darwin], [
with_ondemand="launchd"
], [test "x$with_ondemand" != xno -a "x$with_ondemand" != xsystemd -a "x$with_ondemand" != xupstart -a "x$with_ondemand" != xyes], [
AC_MSG_ERROR([Unknown --with-ondemand value "$with_ondemand" specified.])
])
dnl Launchd is used on macOS/Darwin...
LAUNCHD_DIR=""
AC_SUBST([LAUNCHD_DIR])
AS_IF([test $with_ondemand = launchd], [
AC_CHECK_FUNC([launch_activate_socket], [
AC_DEFINE([HAVE_LAUNCHD], [1], [Have launchd support?])
AC_DEFINE([HAVE_ONDEMAND], [1], [Have on-demand launch support?])
with_ondemand="launchd"
], [
AS_IF([test $with_ondemand = launchd], [
AC_MSG_ERROR([Need launch_activate_socket/liblaunch for launchd support.])
])
])
AC_CHECK_HEADER([launch.h], [
AC_DEFINE([HAVE_LAUNCH_H], [1], [Have <launch.h> header?])
])
AS_IF([test $host_os_name = darwin], [
LAUNCHD_DIR="/System/Library/LaunchDaemons"
# liblaunch is already part of libSystem
])
])
dnl Systemd is used on Linux...
AC_ARG_WITH([systemd], AS_HELP_STRING([--with-systemd], [set directory for systemd service files]), [
SYSTEMD_DIR="$withval"
], [
SYSTEMD_DIR=""
])
AC_SUBST([SYSTEMD_DIR])
AS_IF([test $with_ondemand = systemd -o $with_ondemand = yes], [
AS_IF([test "x$PKGCONFIG" = x], [
AS_IF([test $with_ondemand = systemd], [
AC_MSG_ERROR([Need pkg-config to enable systemd support.])
])
], [
AC_MSG_CHECKING([for libsystemd])
have_systemd="no"
AS_IF([$PKGCONFIG --exists libsystemd], [
AC_MSG_RESULT([yes])
have_systemd="yes"
with_ondemand="systemd"
ONDEMANDFLAGS="$($PKGCONFIG --cflags libsystemd)"
ONDEMANDLIBS="$($PKGCONFIG --libs libsystemd)"
], [$PKGCONFIG --exists libsystemd-daemon], [
AC_MSG_RESULT([yes - legacy])
have_systemd="yes"
with_ondemand="systemd"
ONDEMANDFLAGS="$($PKGCONFIG --cflags libsystemd-daemon)"
ONDEMANDLIBS="$($PKGCONFIG --libs libsystemd-daemon)"
AS_IF([$PKGCONFIG --exists libsystemd-journal], [
ONDEMANDFLAGS="$ONDEMANDFLAGS $($PKGCONFIG --cflags libsystemd-journal)"
ONDEMANDLIBS="$ONDEMANDLIBS $($PKGCONFIG --libs libsystemd-journal)"
])
], [
AC_MSG_RESULT([no])
])
AS_IF([test $have_systemd = yes], [
AC_DEFINE([HAVE_SYSTEMD], [1], [Have systemd support?])
AC_DEFINE([HAVE_ONDEMAND], [1], [Have on-demand launch support?])
AC_CHECK_HEADER([systemd/sd-journal.h], [
AC_DEFINE([HAVE_SYSTEMD_SD_JOURNAL_H], [1], [Have <systemd/sd-journal.h> header?])
])
AS_IF([test "x$SYSTEMD_DIR" = x], [
SYSTEMD_DIR="$($PKGCONFIG --variable=systemdsystemunitdir systemd)"
])
])
])
])
dnl Upstart is also used on Linux (e.g., ChromeOS)
AS_IF([test $with_ondemand = upstart], [
AC_DEFINE([HAVE_UPSTART]. [1], [Have upstart support?])
AC_DEFINE([HAVE_ONDEMAND], [1], [Have on-demand launch support?])
])
dnl Solaris uses smf
AC_ARG_WITH([smfmanifestdir], AS_HELP_STRING([--with-smfmanifestdir], [set path for Solaris SMF manifest]), [
SMFMANIFESTDIR="$withval"
], [
SMFMANIFESTDIR=""
])
AC_SUBST([SMFMANIFESTDIR])
dnl Use init on other platforms...
AC_ARG_WITH([rcdir], AS_HELP_STRING([--with-rcdir], [set path for rc scripts]), [
rcdir="$withval"
], [
rcdir=""
])
AC_ARG_WITH([rclevels], AS_HELP_STRING([--with-rclevels], [set run levels for rc scripts]), [
rclevels="$withval"
], [
rclevels="2 3 5"
])
AC_ARG_WITH([rcstart], AS_HELP_STRING([--with-rcstart], [set start number for rc scripts]), [
rcstart="$withval"
], [
rcstart=""
])
AC_ARG_WITH([rcstop], AS_HELP_STRING([--with-rcstop], [set stop number for rc scripts]), [
rcstop="$withval"
], [
rcstop=""
])
AS_IF([test "x$rcdir" = x], [
AS_IF([test "x$LAUNCHD_DIR" = x -a "x$SYSTEMD_DIR" = x -a "x$SMFMANIFESTDIR" = x], [
# Fall back on "init", the original service startup interface...
AS_IF([test -d /sbin/init.d], [
# SuSE
rcdir="/sbin/init.d"
], [test -d /etc/init.d], [
# Others
rcdir="/etc"
], [
# RedHat, NetBSD
rcdir="/etc/rc.d"
])
], [
rcdir="no"
])
])
AS_IF([test "x$rcstart" = x], [
AS_CASE(["$host_os_name"], [linux* | gnu*], [
# Linux
rcstart="81"
], [sunos*], [
# Solaris
rcstart="81"
], [*], [
# Others
rcstart="99"
])
])
AS_IF([test "x$rcstop" = x], [
AS_CASE(["$host_os_name"], [linux* | gnu*], [
# Linux
rcstop="36"
], [*], [
# Others
rcstop="00"
])
])
INITDIR=""
INITDDIR=""
RCLEVELS="$rclevels"
RCSTART="$rcstart"
RCSTOP="$rcstop"
AC_SUBST([INITDIR])
AC_SUBST([INITDDIR])
AC_SUBST([RCLEVELS])
AC_SUBST([RCSTART])
AC_SUBST([RCSTOP])
AS_IF([test "x$rcdir" != xno], [
AS_IF([test "x$rclevels" = x], [
INITDDIR="$rcdir"
], [
INITDIR="$rcdir"
])
])
dnl Xinetd support...
AC_ARG_WITH([xinetd], AS_HELP_STRING([--with-xinetd], [set path for xinetd config files]), [
xinetd="$withval"
], [
xinetd=""
])
XINETD=""
AC_SUBST([XINETD])
AS_IF([test "x$xinetd" = x], [
AS_IF([test ! -x /sbin/launchd], [
for dir in /etc/xinetd.d /usr/local/etc/xinetd.d; do
AS_IF([test -d $dir], [
XINETD="$dir"
break
])
done
])
], [test "x$xinetd" != xno], [
XINETD="$xinetd"
])