1dnl
2dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
3dnl
4dnl Copyright © 2007-2019 by Apple Inc.
5dnl
6dnl Licensed under Apache License v2.0.  See the file "LICENSE" for more
7dnl information.
8dnl
9
10AC_ARG_ENABLE(avahi, [  --disable-avahi         disable DNS Service Discovery support using Avahi])
11AC_ARG_ENABLE(dnssd, [  --disable-dnssd         disable DNS Service Discovery support using mDNSResponder])
12AC_ARG_WITH(dnssd-libs, [  --with-dnssd-libs       set directory for DNS Service Discovery library],
13	LDFLAGS="-L$withval $LDFLAGS"
14	DSOFLAGS="-L$withval $DSOFLAGS",)
15AC_ARG_WITH(dnssd-includes, [  --with-dnssd-includes   set directory for DNS Service Discovery includes],
16	CFLAGS="-I$withval $CFLAGS"
17	CPPFLAGS="-I$withval $CPPFLAGS",)
18
19DNSSDLIBS=""
20DNSSD_BACKEND=""
21IPPFIND_BIN=""
22IPPFIND_MAN=""
23
24if test "x$PKGCONFIG" != x -a x$enable_avahi != xno -a x$host_os_name != xdarwin; then
25	AC_MSG_CHECKING(for Avahi)
26	if $PKGCONFIG --exists avahi-client; then
27		AC_MSG_RESULT(yes)
28		CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
29		DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
30		DNSSD_BACKEND="dnssd"
31		IPPFIND_BIN="ippfind"
32		IPPFIND_MAN="ippfind.1"
33		AC_DEFINE(HAVE_AVAHI)
34	else
35		AC_MSG_RESULT(no)
36	fi
37fi
38
39if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
40	AC_CHECK_HEADER(dns_sd.h, [
41		case "$host_os_name" in
42			darwin*)
43				# Darwin and macOS...
44				AC_DEFINE(HAVE_DNSSD)
45				DNSSD_BACKEND="dnssd"
46				IPPFIND_BIN="ippfind"
47				IPPFIND_MAN="ippfind.1"
48				;;
49			*)
50				# All others...
51				AC_MSG_CHECKING(for current version of dns_sd library)
52				SAVELIBS="$LIBS"
53				LIBS="$LIBS -ldns_sd"
54				AC_TRY_COMPILE([#include <dns_sd.h>],
55					[int constant = kDNSServiceFlagsShareConnection;
56					unsigned char txtRecord[100];
57					uint8_t valueLen;
58					TXTRecordGetValuePtr(sizeof(txtRecord),
59					    txtRecord, "value", &valueLen);],
60					AC_MSG_RESULT(yes)
61					AC_DEFINE(HAVE_DNSSD)
62					DNSSDLIBS="-ldns_sd"
63					DNSSD_BACKEND="dnssd",
64					IPPFIND_BIN="ippfind"
65					IPPFIND_MAN="ippfind.1"
66					AC_MSG_RESULT(no))
67				LIBS="$SAVELIBS"
68				;;
69		esac
70	])
71fi
72
73AC_SUBST(DNSSDLIBS)
74AC_SUBST(DNSSD_BACKEND)
75AC_SUBST(IPPFIND_BIN)
76AC_SUBST(IPPFIND_MAN)
77