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 These coded instructions, statements, and computer programs are the dnl property of Apple Inc. and are protected by Federal copyright dnl law. Distribution and use rights are outlined in the file "LICENSE.txt" dnl which should have been included with this file. If this file is dnl missing or damaged, see the license at "http://www.cups.org/". 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