| dnl |
| dnl Launch-on-demand/startup stuff for CUPS. |
| dnl |
| 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 information. |
| dnl |
| |
| ONDEMANDFLAGS="" |
| ONDEMANDLIBS="" |
| AC_SUBST(ONDEMANDFLAGS) |
| AC_SUBST(ONDEMANDLIBS) |
| |
| dnl Launchd is used on macOS/Darwin... |
| AC_ARG_ENABLE(launchd, [ --disable-launchd disable launchd support]) |
| LAUNCHD_DIR="" |
| AC_SUBST(LAUNCHD_DIR) |
| |
| if test x$enable_launchd != xno; then |
| AC_CHECK_FUNC(launch_activate_socket, [ |
| AC_DEFINE(HAVE_LAUNCHD) |
| AC_DEFINE(HAVE_ONDEMAND)]) |
| AC_CHECK_HEADER(launch.h, AC_DEFINE(HAVE_LAUNCH_H)) |
| |
| if test "$host_os_name" = darwin; then |
| LAUNCHD_DIR="/System/Library/LaunchDaemons" |
| # liblaunch is already part of libSystem |
| fi |
| fi |
| |
| dnl Systemd is used on Linux... |
| AC_ARG_ENABLE(systemd, [ --disable-systemd disable systemd support]) |
| AC_ARG_WITH(systemd, [ --with-systemd set directory for systemd service files], |
| SYSTEMD_DIR="$withval", SYSTEMD_DIR="") |
| AC_SUBST(SYSTEMD_DIR) |
| |
| if test x$enable_systemd != xno; then |
| if test "x$PKGCONFIG" = x; then |
| if test x$enable_systemd = xyes; then |
| AC_MSG_ERROR(Need pkg-config to enable systemd support.) |
| fi |
| else |
| have_systemd=no |
| AC_MSG_CHECKING(for libsystemd) |
| if $PKGCONFIG --exists libsystemd; then |
| AC_MSG_RESULT(yes) |
| have_systemd=yes |
| ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd` |
| ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd` |
| elif $PKGCONFIG --exists libsystemd-daemon; then |
| AC_MSG_RESULT(yes - legacy) |
| have_systemd=yes |
| ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon` |
| ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon` |
| |
| if $PKGCONFIG --exists libsystemd-journal; then |
| ONDEMANDFLAGS="$ONDEMANDFLAGS `$PKGCONFIG --cflags libsystemd-journal`" |
| ONDEMANDLIBS="$ONDEMANDLIBS `$PKGCONFIG --libs libsystemd-journal`" |
| fi |
| else |
| AC_MSG_RESULT(no) |
| fi |
| |
| if test $have_systemd = yes; then |
| AC_DEFINE(HAVE_SYSTEMD) |
| AC_DEFINE(HAVE_ONDEMAND) |
| AC_CHECK_HEADER(systemd/sd-journal.h,AC_DEFINE(HAVE_SYSTEMD_SD_JOURNAL_H)) |
| if test "x$SYSTEMD_DIR" = x; then |
| SYSTEMD_DIR="`$PKGCONFIG --variable=systemdsystemunitdir systemd`" |
| fi |
| fi |
| fi |
| fi |
| |
| dnl Upstart is also used on Linux (e.g., Chrome OS) |
| AC_ARG_ENABLE(upstart, [ --enable-upstart enable upstart support]) |
| if test "x$enable_upstart" = "xyes"; then |
| if test "x$have_systemd" = "xyes"; then |
| AC_MSG_ERROR(Cannot support both systemd and upstart.) |
| fi |
| AC_DEFINE(HAVE_UPSTART) |
| AC_DEFINE(HAVE_ONDEMAND) |
| fi |
| |
| dnl Solaris uses smf |
| SMFMANIFESTDIR="" |
| AC_SUBST(SMFMANIFESTDIR) |
| AC_ARG_WITH(smfmanifestdir, [ --with-smfmanifestdir set path for Solaris SMF manifest],SMFMANIFESTDIR="$withval") |
| |
| dnl Use init on other platforms... |
| AC_ARG_WITH(rcdir, [ --with-rcdir set path for rc scripts],rcdir="$withval",rcdir="") |
| AC_ARG_WITH(rclevels, [ --with-rclevels set run levels for rc scripts],rclevels="$withval",rclevels="2 3 5") |
| AC_ARG_WITH(rcstart, [ --with-rcstart set start number for rc scripts],rcstart="$withval",rcstart="") |
| AC_ARG_WITH(rcstop, [ --with-rcstop set stop number for rc scripts],rcstop="$withval",rcstop="") |
| |
| if test x$rcdir = x; then |
| if test x$LAUNCHD_DIR = x -a x$SYSTEMD_DIR = x -a x$SMFMANIFESTDIR = x; then |
| # Fall back on "init", the original service startup interface... |
| if test -d /sbin/init.d; then |
| # SuSE |
| rcdir="/sbin/init.d" |
| elif test -d /etc/init.d; then |
| # Others |
| rcdir="/etc" |
| else |
| # RedHat, NetBSD |
| rcdir="/etc/rc.d" |
| fi |
| else |
| rcdir="no" |
| fi |
| fi |
| |
| if test "x$rcstart" = x; then |
| case "$host_os_name" in |
| linux* | gnu*) |
| # Linux |
| rcstart="81" |
| ;; |
| |
| sunos*) |
| # Solaris |
| rcstart="81" |
| ;; |
| |
| *) |
| # Others |
| rcstart="99" |
| ;; |
| esac |
| fi |
| |
| if test "x$rcstop" = x; then |
| case "$host_os_name" in |
| linux* | gnu*) |
| # Linux |
| rcstop="36" |
| ;; |
| |
| *) |
| # Others |
| rcstop="00" |
| ;; |
| esac |
| fi |
| |
| INITDIR="" |
| INITDDIR="" |
| RCLEVELS="$rclevels" |
| RCSTART="$rcstart" |
| RCSTOP="$rcstop" |
| AC_SUBST(INITDIR) |
| AC_SUBST(INITDDIR) |
| AC_SUBST(RCLEVELS) |
| AC_SUBST(RCSTART) |
| AC_SUBST(RCSTOP) |
| |
| if test "x$rcdir" != xno; then |
| if test "x$rclevels" = x; then |
| INITDDIR="$rcdir" |
| else |
| INITDIR="$rcdir" |
| fi |
| fi |
| |
| dnl Xinetd support... |
| AC_ARG_WITH(xinetd, [ --with-xinetd set path for xinetd config files],xinetd="$withval",xinetd="") |
| XINETD="" |
| AC_SUBST(XINETD) |
| |
| if test "x$xinetd" = x; then |
| if test ! -x /sbin/launchd; then |
| for dir in /etc/xinetd.d /usr/local/etc/xinetd.d; do |
| if test -d $dir; then |
| XINETD="$dir" |
| break |
| fi |
| done |
| fi |
| elif test "x$xinetd" != xno; then |
| XINETD="$xinetd" |
| fi |