cups/config-scripts/cups-dnssd.m4

106 lines
3.4 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 DNS Service Discovery (aka Bonjour) stuff for CUPS.
dnl
dnl Copyright © 2021-2022 by OpenPrinting.
dnl Copyright © 2007-2019 by Apple Inc.
dnl
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more
dnl information.
dnl
AC_ARG_WITH([dnssd], AS_HELP_STRING([--with-dnssd=...], [enable DNS Service Discovery support (avahi, mdnsresponder, no, yes)]))
AS_IF([test x$with_dnssd = x], [
with_dnssd="yes"
], [test "$with_dnssd" != avahi -a "$with_dnssd" != mdnsresponder -a "$with_dnssd" != no -a "$with_dnssd" != yes], [
AC_MSG_ERROR([Unsupported --with-dnssd value "$with_dnssd".])
])
AC_ARG_WITH([dnssd_libs], AS_HELP_STRING([--with-dnssd-libs], [set directory for DNS Service Discovery library]), [
LDFLAGS="-L$withval $LDFLAGS"
DSOFLAGS="-L$withval $DSOFLAGS"
])
AC_ARG_WITH([dnssd_includes], AS_HELP_STRING([--with-dnssd-includes], [set directory for DNS Service Discovery header files]), [
CFLAGS="-I$withval $CFLAGS"
CPPFLAGS="-I$withval $CPPFLAGS"
])
DNSSDLIBS=""
DNSSD_BACKEND=""
IPPFIND_BIN=""
IPPFIND_MAN=""
dnl First try using mDNSResponder...
AS_IF([test $with_dnssd = yes -o $with_dnssd = mdnsresponder], [
AC_CHECK_HEADER([dns_sd.h], [
AS_CASE(["$host_os_name"], [darwin*], [
# Darwin and macOS...
with_dnssd="mdnsresponder"
AC_DEFINE([HAVE_DNSSD], [1], [Have DNS-SD support?])
AC_DEFINE([HAVE_MDNSRESPONDER], [1], [Have mDNSResponder library?])
DNSSD_BACKEND="dnssd"
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.1"
], [*], [
# All others...
AC_MSG_CHECKING([for current version of dns_sd library])
SAVELIBS="$LIBS"
LIBS="$LIBS -ldns_sd"
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[#include <dns_sd.h>]], [[
int constant = kDNSServiceFlagsShareConnection;
unsigned char txtRecord[100];
uint8_t valueLen;
TXTRecordGetValuePtr(sizeof(txtRecord), txtRecord, "value", &valueLen);
]])
], [
AC_MSG_RESULT([yes])
with_dnssd="mdnsresponder"
AC_DEFINE([HAVE_DNSSD], [1], [Have DNS-SD support?])
AC_DEFINE([HAVE_MDNSRESPONDER], [1], [Have mDNSResponder library?])
DNSSDLIBS="-ldns_sd"
DNSSD_BACKEND="dnssd"
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.1"
PKGCONFIG_LIBS_STATIC="$PKGCONFIG_LIBS_STATIC $DNSSDLIBS"
], [
AC_MSG_RESULT([no])
AS_IF([test $with_dnssd = mdnsresponder], [
AC_MSG_ERROR([--with-dnssd=mdnsresponder specified but dns_sd library not present.])
])
])
LIBS="$SAVELIBS"
])
])
])
dnl Then try Avahi...
AS_IF([test $with_dnssd = avahi -o $with_dnssd = yes], [
AS_IF([test "x$PKGCONFIG" = x], [
AS_IF([test $with_dnssd = avahi], [
AC_MSG_ERROR([Avahi requires pkg-config.])
])
], [
AC_MSG_CHECKING([for Avahi client])
AS_IF([$PKGCONFIG --exists avahi-client], [
AC_MSG_RESULT([yes])
CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
DNSSD_BACKEND="dnssd"
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.1"
PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES avahi-client"
AC_DEFINE([HAVE_AVAHI], [1], [Have Avahi client library?])
AC_DEFINE([HAVE_DNSSD], [1], [Have DNS-SD support?])
], [
AC_MSG_RESULT([no])
AS_IF([test $with_dnssd = avahi], [
AC_MSG_ERROR([--with-dnssd=avahi specified but Avahi client not present.])
])
])
])
])
AC_SUBST([DNSSDLIBS])
AC_SUBST([DNSSD_BACKEND])
AC_SUBST([IPPFIND_BIN])
AC_SUBST([IPPFIND_MAN])