mirror of https://gitee.com/openkylin/cups.git
222 lines
5.8 KiB
Plaintext
222 lines
5.8 KiB
Plaintext
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"
|
||
])
|