mirror of https://gitee.com/openkylin/cups.git
106 lines
3.4 KiB
Plaintext
106 lines
3.4 KiB
Plaintext
dnl
|
||
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
|
||
dnl
|
||
dnl Copyright © 2021-2023 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])
|