1m4_define([libdmapsharing_major], [2])
2m4_define([libdmapsharing_minor], [9])
3m4_define([libdmapsharing_micro], [41])
4m4_define([libdmapsharing_version], [libdmapsharing_major.libdmapsharing_minor.libdmapsharing_micro])
5
6AC_INIT(libdmapsharing, [libdmapsharing_version], [https://www.flyn.org/projects/libdmapsharing/])
7
8API_VERSION=3.0
9AC_SUBST(API_VERSION)
10
11SO_VERSION=m4_eval(libdmapsharing_minor+libdmapsharing_major):m4_eval(libdmapsharing_micro):m4_eval(libdmapsharing_minor)
12AC_SUBST(SO_VERSION)
13
14AM_CONFIG_HEADER(config.h)
15AC_CONFIG_MACRO_DIRS([m4])
16
17AC_HEADER_STDC
18AC_PROG_CC
19AC_PROG_CPP
20AC_PROG_LIBTOOL
21AM_PROG_CC_STDC
22
23GOBJECT_INTROSPECTION_CHECK([1.30.0])
24GTK_DOC_CHECK(1.0)
25
26# Have pedansee?
27AC_PATH_PROG(PEDANSEE, pedansee)
28AM_CONDITIONAL(HAVE_PEDANSEE, test -n "$PEDANSEE")
29
30# Select debugging or measuring code coverage?
31AC_ARG_ENABLE(debug, [AC_HELP_STRING([--enable-debug],[enable debugging build])])
32AC_ARG_ENABLE(coverage, [AC_HELP_STRING([--enable-coverage],[enable code-coverage build])])
33if test "x$enable_debug" = "xyes"; then
34	CFLAGS="$CFLAGS -g"
35elif test "x$enable_coverage" = "xyes"; then
36	CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
37else
38	CFLAGS="$CFLAGS -O2"
39fi
40
41# Select more compiler warnings?
42AC_ARG_ENABLE(more-warnings, [AC_HELP_STRING([--enable-more-warnings],[maximum compiler warnings])])
43if test "$GCC" = "yes" -a x$enable_more_warnings = "xyes"; then
44	WARN_CFLAGS="\
45		-Wcomment -Wformat -Wnonnull -Wimplicit-int -Wimplicit \
46		-Wmain -Wmissing-braces -Wparentheses -Wsequence-point \
47		-Wreturn-type -Wswitch -Wtrigraphs -Wunused-function \
48		-Wunused-label -Wunused-value \
49		-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
50		-Wnested-externs -Wpointer-arith \
51		-Wformat-security -Wall \
52		-Werror -Wno-deprecated-declarations -std=gnu89"
53
54	if echo "$CFLAGS" | grep -q -- '-O' && echo "$CFLAGS" | grep -q -v -- '-O0'; then
55		WARN_CFLAGS="-Wuninitialized $WARN_CFLAGS"
56	fi
57
58	for option in $WARN_CFLAGS; do
59		AS_COMPILER_FLAG($option, has_option=yes, has_option=no)
60		if test x$has_option = xyes; then
61			OK_CFLAGS="$OK_CFLAGS $option"
62		fi
63		unset has_option
64	done
65
66	WARN_CFLAGS="$OK_CFLAGS"
67fi
68
69AC_SUBST(WARN_CFLAGS)
70
71# Build test code?
72AC_ARG_ENABLE(tests, [AC_HELP_STRING([--disable-tests],[do not build tests])], tests=$enableval, tests=yes)
73if test x$tests = xyes; then
74	PKG_CHECK_MODULES([CHECK], [check >= 0.9.4],have_check=yes,have_check=no)
75	AM_CONDITIONAL(HAVE_CHECK, test x"$have_check" = "xyes")
76	if test "x$have_check" = "xyes"; then
77		AC_DEFINE(HAVE_CHECK, 1, [Define if check support is enabled])
78	else
79		AC_MSG_ERROR([Must have check library present when tests enabled])
80	fi
81
82	AC_DEFINE(TESTS_ENABLED,1,[Defined when tests are to be built])
83	AM_CONDITIONAL(TESTS_ENABLED, true)
84else
85	AM_CONDITIONAL(TESTS_ENABLED, false)
86	AM_CONDITIONAL(HAVE_CHECK, false)
87fi
88
89# Have libz?
90AC_CHECK_LIB(z, uncompress)
91
92# Have pkg-config?
93AC_CHECK_PROG(HAVE_PKGCONFIG, pkg-config, yes, no)
94if test "x$HAVE_PKGCONFIG" = "xno"; then
95	AC_MSG_ERROR([Must have pkgconfig installed])
96fi
97
98# Have glib?
99PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.40, HAVE_GLIB=yes,HAVE_GLIB=no)
100if test "x$HAVE_GLIB" = "xno"; then
101	AC_MSG_ERROR([Must have glib-2.0 installed])
102fi
103
104AC_DEFINE(GLIB_VERSION_MIN_REQUIRED, GLIB_VERSION_2_40, [minimum glib version])
105AC_DEFINE(GLIB_VERSION_MAX_ALLOWED, GLIB_VERSION_2_40, [maximum glib version])
106
107AC_SUBST(GLIB_CFLAGS)
108AC_SUBST(GLIB_LIBS)
109
110# Have gthread?
111PKG_CHECK_MODULES(GTHREAD, gthread-2.0, HAVE_GTHREAD=yes, HAVE_GTHREAD=no)
112if test "x$HAVE_GTHREAD" = "xno"; then
113	AC_MSG_ERROR([Must have gthread-2.0 installed])
114fi
115
116AC_SUBST(GOBJECT_CFLAGS)
117AC_SUBST(GOBJECT_LIBS)
118
119# Have gobject?
120PKG_CHECK_MODULES(GOBJECT, gobject-2.0, HAVE_GOBJECT=yes, HAVE_GOBJECT=no)
121if test "x$HAVE_GOBJECT" = "xno"; then
122	AC_MSG_ERROR([Must have gobject-2.0 installed])
123fi
124
125AC_SUBST(GOBJECT_CFLAGS)
126AC_SUBST(GOBJECT_LIBS)
127
128# Have gdkpixbuf?
129PKG_CHECK_MODULES(GDKPIXBUF, gdk-pixbuf-2.0, HAVE_GDKPIXBUF=yes, HAVE_GDKPIXBUF=no)
130if test x"$HAVE_GDKPIXBUF" = "xyes"; then
131	AC_DEFINE(HAVE_GDKPIXBUF, 1, [Define if gdk-pixbuf support is enabled])
132else
133	AC_MSG_WARN([Gdk-pixbuf library not present; now-playing artwork might be affected])
134fi
135
136AM_CONDITIONAL(USE_GDKPIXBUF, test x"$HAVE_GDKPIXBUF" = "xyes")
137
138AC_SUBST(GDKPIXBUF_CFLAGS)
139AC_SUBST(GDKPIXBUF_LIBS)
140
141# Have libsoup?
142PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.48.0, HAVE_LIBSOUP=yes, HAVE_LIBSOUP=no)
143if test x"$HAVE_LIBSOUP" = "xno"; then
144	AC_MSG_ERROR([Must have libsoup installed])
145fi
146
147AC_SUBST(SOUP_CFLAGS)
148AC_SUBST(SOUP_LIBS)
149
150# Have GTK3?
151PKG_CHECK_MODULES(GTK, gtk+-3.0, HAVE_GTK=yes, HAVE_GTK=no)
152
153AC_SUBST(GTK_CFLAGS)
154AC_SUBST(GTK_LIBS)
155
156# Have libgee?
157PKG_CHECK_MODULES(GEE, gee-0.8, HAVE_GEE=yes, HAVE_GEE=no)
158
159AC_SUBST(GEE_CFLAGS)
160AC_SUBST(GEE_LIBS)
161
162# Have gstreamer-app?
163PKG_CHECK_MODULES(
164	GSTREAMERAPP,
165	gstreamer-app-1.0
166	gstreamer-plugins-base-1.0 >= 0.10.23.2,
167	HAVE_GSTREAMERAPP=yes,
168	HAVE_GSTREAMERAPP=no
169)
170
171if test x"$HAVE_GSTREAMERAPP" = "xyes"; then
172	AC_DEFINE(HAVE_GSTREAMERAPP, 1, [Define if GStreamer App support is enabled])
173	GSTLIB="gstreamer-1.0 gstreamer-app-1.0"
174	AC_SUBST(GSTLIB)
175else
176	AC_MSG_WARN([GStreamer app element not present; transcoding will not be supported])
177fi
178
179AM_CONDITIONAL(USE_GSTREAMERAPP, test x"$HAVE_GSTREAMERAPP" = "xyes")
180
181AC_SUBST(GSTREAMERAPP_CFLAGS)
182AC_SUBST(GSTREAMERAPP_LIBS)
183
184# Have Vala compiler?
185AM_PROG_VALAC([0.11.4])
186AM_CONDITIONAL(HAVE_VALAC, test -x "$VALAC")
187
188# Have vala-gen-introspect?
189AC_PATH_PROG(VALA_GEN_INTROSPECT, vala-gen-introspect)
190AC_PATH_PROG(VAPIGEN, vapigen)
191AM_CONDITIONAL(BUILD_VAPI, test -n "$VALA_GEN_INTROSPECT" -a -n "$VAPIGEN" -a xyes = x"$found_introspection")
192if ! test -n "$VALA_GEN_INTROSPECT" -a -n "$VAPIGEN" -a xyes = x"$found_introspection"; then
193	AC_MSG_WARN([Will not build vapi])
194fi
195
196AM_CONDITIONAL(BUILD_VALATESTS, test -x "$VALAC" -a "x$HAVE_GEE" = "xyes")
197if test -n "$BUILD_VALATESTS" ; then
198	AC_MSG_WARN([Will not build Vala tests])
199fi
200
201AM_CONDITIONAL(BUILD_DPAPVIEW, test -x "$VALAC" -a "x$HAVE_GEE" = "xyes" -a "x$HAVE_GTK" = "xyes")
202if test -n "$BUILD_DPAPVIEW" ; then
203	AC_MSG_WARN([Will not build dpapview])
204fi
205
206if test x${as_cv_unaligned_access} = xyes ; then
207	DMAP_HAVE_UNALIGNED_ACCESS_DEFINE="#define DMAP_HAVE_UNALIGNED_ACCESS 1"
208else
209	DMAP_HAVE_UNALIGNED_ACCESS_DEFINE="#define DMAP_HAVE_UNALIGNED_ACCESS 0"
210fi
211AC_SUBST(DMAP_HAVE_UNALIGNED_ACCESS_DEFINE)
212
213# Select mDNS library.
214AC_ARG_WITH(
215	mdns,
216	AC_HELP_STRING([--with-mdns=auto|avahi|dns_sd],
217	[Select the mDNS/DNS-SD implementation to use (default auto)]),
218	WITH_MDNS=$withval,
219	WITH_MDNS=auto
220)
221
222HAVE_AVAHI=no
223HAVE_DNS_SD=no # Apple's DNSSD library.
224USE_AVAHI=no
225USE_DNS_SD=no
226
227if test x"$WITH_MDNS" = xauto || test x"$WITH_MDNS" = xavahi; then
228	PKG_CHECK_MODULES(
229		AVAHI,
230		avahi-client >= 0.6
231		avahi-glib >= 0.6,
232		HAVE_AVAHI=yes,
233		HAVE_AVAHI=no
234	)
235fi
236
237if test x"$HAVE_AVAHI" = xno; then
238	if test x"$WITH_MDNS" = xauto || test x"$WITH_MDNS" = xdns_sd; then
239		AC_CHECK_HEADERS(dns_sd.h, HAVE_DNS_SD=yes)
240		if test x"$HAVE_DNS_SD" = xyes; then
241			AC_CHECK_LIB(dns_sd, DNSServiceRegister, DNS_SD_LIBS="-ldns_sd",)
242		fi
243	fi
244fi
245
246if test x"$WITH_MDNS" = xauto; then
247	if test x"$HAVE_AVAHI" = xyes; then
248		MDNS_CFLAGS=$AVAHI_CFLAGS
249		MDNS_LIBS=$AVAHI_LIBS
250		USE_AVAHI=yes
251		AC_MSG_NOTICE([Detected Avahi; using it for mDNS/DNS-SD])
252	elif test x"$HAVE_DNS_SD" = xyes; then
253		MDNS_CFLAGS=$DNS_SD_CFLAGS
254		MDNS_LIBS=$DNS_SD_LIBS
255		USE_DNS_SD=yes
256		AC_MSG_NOTICE([Detected Apple's DNSSD; using it for mDNS/DNS-SD])
257	else
258		AC_MSG_ERROR([Must have avahi or dns_sd.h development files installed])
259	fi
260elif test x"$WITH_MDNS" = xavahi; then
261	if test x"$HAVE_AVAHI" = xno; then
262		AC_MSG_ERROR([Avahi explicitly requested but not found. Install Avahi, or try --with-mdns=dns_sd])
263	fi
264
265	MDNS_CFLAGS=$AVAHI_CFLAGS
266	MDNS_LIBS=$AVAHI_LIBS
267	USE_AVAHI=yes
268	AC_MSG_NOTICE([Using Avahi for mDNS/DNS-SD])
269elif test x"$WITH_MDNS" = xdns_sd; then
270	if test x"$HAVE_DNS_SD" = xno; then
271		AC_MSG_ERROR([Apple DNSSD explicitly requested but not found. Install Apple DNSSD, or try --with-mdns=avahi])
272	fi
273
274	MDNS_CFLAGS=$DNS_SD_CFLAGS
275	MDNS_LIBS=$DNS_SD_LIBS
276	USE_DNS_SD=yes
277	AC_MSG_NOTICE([Using Apple's DNSSD for mDNS/DNS-SD])
278fi
279
280AM_CONDITIONAL(USE_AVAHI, test "x$USE_AVAHI" = "xyes")
281AM_CONDITIONAL(USE_DNS_SD, test "x$USE_DNS_SD" = "xyes")
282
283AC_SUBST(MDNS_CFLAGS)
284AC_SUBST(MDNS_LIBS)
285
286# Enable silent build when available (Automake 1.11)
287m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
288
289AM_INIT_AUTOMAKE
290
291AC_CONFIG_FILES([
292	Makefile
293	doc/Makefile
294	libdmapsharing-${API_VERSION}-uninstalled.pc
295	libdmapsharing-${API_VERSION}.pc
296	libdmapsharing/Makefile
297	libdmapsharing/dmap-config.h
298	tests/Makefile
299	m4/Makefile
300	media/Makefile
301	vala/Makefile
302	vala/libdmapsharing-${API_VERSION}-daap/libdmapsharing-${API_VERSION}-uninstalled.files
303	vala/libdmapsharing-${API_VERSION}-dacp/libdmapsharing-${API_VERSION}-uninstalled.files
304	vala/libdmapsharing-${API_VERSION}-dmap/libdmapsharing-${API_VERSION}-uninstalled.files
305	vala/libdmapsharing-${API_VERSION}-dpap/libdmapsharing-${API_VERSION}-uninstalled.files
306])
307
308AC_OUTPUT
309