1dnl ###########
2dnl ## SETUP ###########################################################
3dnl ###########
4
5AC_INIT([ezstream], [0.5.6],
6	[https://trac.xiph.org/newticket?component=ezstream])
7AC_REVISION([$Id: configure.in 16529 2009-08-30 12:49:06Z moritz $])
8AC_PREREQ([2.61])
9AC_CONFIG_SRCDIR([src/ezstream.c])
10AC_CONFIG_AUX_DIR([build-aux])
11AM_INIT_AUTOMAKE
12AC_CONFIG_HEADERS([src/config.h])
13AC_CONFIG_LIBOBJ_DIR([src])
14AM_MAINTAINER_MODE
15AC_USE_SYSTEM_EXTENSIONS
16AC_PROG_CC_STDC
17AC_PROG_FGREP
18AC_CANONICAL_HOST
19
20BUILD_DATE=$(date '+%B %d, %Y')
21AC_SUBST([BUILD_DATE])
22
23EXAMPLES_DIR="\$(datadir)/examples/${PACKAGE_TARNAME}"
24AC_ARG_ENABLE([examplesdir],
25	[AS_HELP_STRING([--enable-examplesdir=DIR],
26		[examples installation directory (default: DATADIR/examples/ezstream)])],
27[case "$enableval" in
28	yes) ;;
29	no) AC_MSG_ERROR([Must have an install directory for the examples.]) ;;
30	*) EXAMPLES_DIR="$enableval" ;;
31esac], [])
32AC_SUBST([EXAMPLES_DIR])
33
34ez_enable_debug=no
35AC_ARG_ENABLE([debug],
36	[AS_HELP_STRING([--enable-debug],
37		[enable memory debugging (default: no)])],
38[case "$enableval" in
39	no) ;;
40	*) ez_enable_debug=yes ;;
41esac], [])
42AC_MSG_CHECKING([whether to enable debugging])
43if test x"${ez_enable_debug}" = "xyes"; then
44	AC_DEFINE([XALLOC_DEBUG], [1],
45		[Define whether to build with XALLOC debugging])
46fi
47AC_MSG_RESULT([$ez_enable_debug])
48
49EZ_CFLAGS=""
50EZ_CPPFLAGS=""
51EZ_LDFLAGS=""
52EZ_LIBS=""
53
54
55dnl ##############
56dnl ## COMPILER ########################################################
57dnl ##############
58
59if test -n "${GCC}"; then
60	for _flag in fstack-protector fstrict-aliasing Wall W Wstrict-aliasing \
61		Wwrite-strings Wpointer-arith Wshadow Wconversion Wcast-qual \
62		Wcast-align Wbounded Wmissing-declarations Wmissing-prototypes \
63		Wstrict-prototypes
64	do
65		AX_CHECK_CFLAG([${_flag}],
66			[AX_UNIQVAR_APPEND([EZ_CFLAGS], [-${_flag}])], [])
67	done
68	AX_CHECK_CFLAG([Wformat=2],
69		[AX_UNIQVAR_APPEND([EZ_CFLAGS], [-Wformat=2])],
70		[
71		  AX_CHECK_CFLAG([Wformat],
72			[AX_UNIQVAR_APPEND([EZ_CFLAGS], [-Wformat])], [])
73		])
74else
75	case "${host}" in
76	*-irix*)
77		EZ_CFLAGS="-fullwarn"
78		;;
79	*-solaris*)
80		EZ_CFLAGS="-v"
81		;;
82	*)
83		;;
84	esac
85fi
86
87AC_C_CONST
88AC_C_VOLATILE
89
90
91dnl #############
92dnl ## HEADERS #########################################################
93dnl #############
94
95AC_CHECK_HEADERS([ \
96	sys/time.h signal.h langinfo.h libgen.h locale.h paths.h \
97], [], [],
98[
99#ifdef HAVE_SYS_TYPES_H
100# include <sys/types.h>
101#endif
102])
103
104COMPAT_INCLUDES=""
105if test x"${ez_enable_debug}" = "xyes"; then
106	AX_HEADER_TREE([RB_FOREACH], [],
107		[
108		  COMPAT_INCLUDES="-I\$(top_srcdir)/compat"
109		])
110fi
111AC_SUBST([COMPAT_INCLUDES])
112
113
114dnl ###########
115dnl ## TYPES ###########################################################
116dnl ###########
117
118AC_TYPE_SIZE_T
119AC_TYPE_SSIZE_T
120
121
122dnl ###############
123dnl ## LIBRARIES #######################################################
124dnl ###############
125
126AC_CHECK_LIB([gen], [basename],
127	[ AX_UNIQVAR_PREPEND([EZ_LIBS], [-lgen]) ])
128
129AX_CHECK_LIBSHOUT([], [],
130	[AC_MSG_ERROR([libshout 2.2.x is required.], [1])])
131AX_UNIQVAR_APPEND([EZ_CPPFLAGS], [${LIBSHOUT_CPPFLAGS}])
132AX_UNIQVAR_APPEND([EZ_CFLAGS], [${LIBSHOUT_CFLAGS}])
133AX_UNIQVAR_APPEND([EZ_LDFLAGS], [${LIBSHOUT_LDFLAGS}])
134AX_UNIQVAR_PREPEND([EZ_LIBS], [${LIBSHOUT_LIBS}])
135
136AX_CHECK_LIBXML2([], [],
137	[AC_MSG_ERROR([libxml 2.x is required.], [1])])
138AX_UNIQVAR_APPEND([EZ_CPPFLAGS], [${LIBXML2_CPPFLAGS}])
139AX_UNIQVAR_APPEND([EZ_CFLAGS], [${LIBXML2_CFLAGS}])
140AX_UNIQVAR_APPEND([EZ_LDFLAGS], [${LIBXML2_LDFLAGS}])
141AX_UNIQVAR_PREPEND([EZ_LIBS], [${LIBXML2_LIBS}])
142
143use_metadata="No"
144AX_CHECK_TAGLIB_C([], [
145	AC_DEFINE([HAVE_TAGLIB], [1],
146		[Define to 1 if you have the libtag_c library.]
147	)
148	AX_UNIQVAR_APPEND([EZ_CFLAGS], [${TAGLIB_CFLAGS}])
149	AX_UNIQVAR_APPEND([EZ_CPPFLAGS], [${TAGLIB_CPPFLAGS}])
150	AX_UNIQVAR_APPEND([EZ_LDFLAGS], [${TAGLIB_LDFLAGS}])
151	AX_UNIQVAR_PREPEND([EZ_LIBS], [${TAGLIB_C_LIBS}])
152	use_metadata="TagLib"
153], [
154	AX_CHECK_LIBVORBISFILE([], [
155		AC_DEFINE([HAVE_VORBISFILE], [1],
156			[Define to 1 if you have the libvorbisfile library.])
157		AX_UNIQVAR_APPEND([EZ_CPPFLAGS], [${VORBIS_CPPFLAGS}])
158		AX_UNIQVAR_APPEND([EZ_CFLAGS], [${VORBIS_CFLAGS}])
159		AX_UNIQVAR_APPEND([EZ_LDFLAGS], [${VORBIS_LDFLAGS}])
160		AX_UNIQVAR_PREPEND([EZ_LIBS], [${LIBVORBISFILE_LIBS}])
161		use_metadata="libvorbis"
162	], [])
163])
164
165# Not using AM_ICONV to check for iconv(), with or without libiconv(),
166# is not a viable option. Something in the past went horribly wrong;
167# the whole topic is extremely complex and not worth rewriting.
168# Instead, work around the buggy no-op that is --with-libiconv-prefix,
169# and at least try to find it in --prefix. Thankfully, it is and will
170# remain optional in ezstream.
171
172INCICONV=""
173LDICONV=""
174LIBICONV=""
175LTLIBICONV=""
176EZ_LIBICONV=""
177AM_ICONV
178if test x"${am_cv_func_iconv}" != "xyes"; then
179	unset am_cv_func_iconv
180	unset am_cv_lib_iconv
181	if test x"${prefix}" = "xNONE"; then
182		libiconv_prefix="/usr/local"
183	else
184		libiconv_prefix="${prefix}"
185	fi
186	AC_MSG_NOTICE([Looking for libiconv in ${libiconv_prefix} ...])
187	libiconv_save_CPPFLAGS="${CPPFLAGS}"
188	libiconv_save_LDFLAGS="${LDFLAGS}"
189	libiconv_save_LIBS="${LIBS}"
190	CPPFLAGS="${CPPFLAGS} -I${libiconv_prefix}/include"
191	LDFLAGS="${LDFLAGS} -L${libiconv_prefix}/lib"
192	LIBS="-liconv"
193	AM_ICONV
194	if test x"${am_cv_func_iconv}" = "xyes"; then
195		INCICONV="-I${libiconv_prefix}/include"
196		LDICONV="-L${libiconv_prefix}/lib"
197		LIBICONV="-liconv"
198	fi
199	CPPFLAGS="${libiconv_save_CPPFLAGS}"
200	LDFLAGS="${libiconv_save_LDFLAGS}"
201	LIBS="${libiconv_save_LIBS}"
202fi
203if test -n "${LTLIBICONV}"; then
204	EZ_LIBICONV="${LTLIBICONV}"
205else
206	EZ_LIBICONV="${LIBICONV}"
207fi
208AX_UNIQVAR_APPEND([EZ_CPPFLAGS], [$INCICONV])
209AX_UNIQVAR_APPEND([EZ_LDFLAGS], [$LDICONV])
210AX_UNIQVAR_PREPEND([EZ_LIBS], [$EZ_LIBICONV])
211use_iconv="No"
212if test x"${am_cv_func_iconv}" = "xyes"; then
213	use_iconv="Yes"
214fi
215
216
217dnl #######################
218dnl ## FUNCTIONS / MACROS ##############################################
219dnl #######################
220
221AC_CHECK_FUNCS([ \
222	arc4random \
223	basename \
224	getopt \
225	gettimeofday \
226	nl_langinfo \
227	pclose \
228	_pclose \
229	popen \
230	_popen \
231	random \
232	setlocale \
233	snprintf \
234	_snprintf \
235	srandomdev \
236	stat \
237	_stat \
238	strncasecmp \
239	strnicmp \
240	strtoll \
241	_strtoi64 \
242])
243
244AC_REPLACE_FUNCS([ \
245	strlcat \
246	strlcpy \
247	strtonum \
248])
249
250AX_FUNC_VA_COPY
251
252AC_CHECK_FUNCS([sigaction], [
253	AC_DEFINE([HAVE_SIGNALS], [1],
254		[Define to 1 if we have BSD signals.])
255	], [], [
256	  #ifdef HAVE_SIGNAL_H
257	  # include <signal.h>
258	  #endif
259	])
260
261
262dnl ##################
263dnl ## MISCELLANEOUS ###################################################
264dnl ##################
265
266AX_CHECK___PROGNAME
267
268
269dnl ############
270dnl ## OUTPUT ##########################################################
271dnl ############
272
273AC_SUBST([EZ_CPPFLAGS])
274AC_SUBST([EZ_CFLAGS])
275AC_SUBST([EZ_LDFLAGS])
276AC_SUBST([EZ_LIBS])
277
278AC_CONFIG_FILES([
279	Makefile
280	build-aux/Makefile
281	compat/Makefile
282	compat/sys/Makefile
283	doc/Makefile
284	doc/ezstream-file.sh.1.in
285	doc/ezstream.1.in
286	examples/Makefile
287	m4/Makefile
288	src/Makefile
289	src/ezstream-file.sh
290	win32/Makefile
291	win32/shout/Makefile
292])
293
294AC_OUTPUT
295
296cat << __EOT
297
298${PACKAGE_STRING} has been configured successfully.
299
300Configuration:
301    Ogg Vorbis metadata support ... : ${use_metadata}
302    Charset conversion support .... : ${use_iconv}
303    Prefix ........................ : ${prefix}
304
305__EOT
306