1dnl Process this file with autoconf to produce a configure script.
2AC_INIT([Icecast], [2.4.0-kh15], [karl@kheyes.plus.com])
3AC_CONFIG_AUX_DIR([build-aux])
4AM_INIT_AUTOMAKE([foreign])
5
6AC_PREREQ(2.59)
7AC_CONFIG_SRCDIR([src/main.c])
8AM_CONFIG_HEADER(config.h)
9AC_CONFIG_MACRO_DIR([m4])
10
11AM_MAINTAINER_MODE
12m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
13
14LT_INIT
15
16AC_PROG_CXX
17AC_PROG_CC
18AC_CANONICAL_HOST
19AC_SYS_LARGEFILE
20XIPH_C_ATTRIBUTE
21
22dnl Set some options based on environment
23
24DEBUG="-g"
25if test -z "$GCC"; then
26    XIPH_CPPFLAGS="-D_REENTRANT"
27    PROFILE="-g -p"
28else
29    XIPH_CPPFLAGS="-Wall -ffast-math -fsigned-char"
30    PROFILE="-pg -g"
31    AC_DEFINE([_GNU_SOURCE], 1, [Define to include GNU extensions to POSIX])
32fi
33AM_CONDITIONAL([WIN32], [test x$host_os = xmingw32])
34if test x$host_os = xmingw32; then
35AC_DEFINE([_POSIX], 1, [Define to use C99 routines on MS])
36fi
37
38AC_ARG_VAR([ICY_CHARSET], [Character set used for ICY metadata, default is UTF8])
39if test -n "$ICY_CHARSET"; then
40   AC_DEFINE_UNQUOTED([ICY_DEFAULT_CHARSET], ["$ICY_CHARSET"], ["Character set for ICY metadata"])
41fi
42
43dnl Checks for programs.
44
45dnl Checks for libraries.
46
47dnl Checks for header files.
48AC_HEADER_STDC
49AC_HEADER_TIME
50
51AC_CHECK_HEADERS([fcntl.h fnmatch.h sys/timeb.h sys/wait.h alloca.h malloc.h glob.h winsock2.h windows.h stdbool.h signal.h])
52AC_CHECK_HEADERS(pwd.h, AC_DEFINE(CHUID, 1, [Define if you have pwd.h]),,)
53
54dnl Checks for typedefs, structures, and compiler characteristics.
55XIPH_C__FUNC__
56
57dnl Check for types
58AC_TYPE_OFF_T
59AC_CHECK_TYPES([struct timespec])
60
61dnl Checks for library functions.
62AC_CHECK_FUNCS([localtime_r gmtime_r FindFirstFile])
63AC_CHECK_FUNCS([fseeko fnmatch chroot fork poll atoll strtoll strsep strcasecmp strncasecmp])
64AC_CHECK_FUNCS([getrlimit gettimeofday ftime fsync glob pread pipe2 setresuid setresgid])
65AC_CHECK_TYPES([struct signalfd_siginfo],
66               [AC_DEFINE(HAVE_SIGNALFD, 1 ,[Define if signalfd exists])], [],
67               [#include <sys/signalfd.h>])
68AC_CHECK_TYPES([uint32_t], [], [], [
69#include <inttypes.h>
70#include <stdint.h>
71])
72AC_CHECK_TYPES([SOCKET*],
73        [AC_DEFINE([FD_t], [SOCKET], [socket type for Windows])],
74        [AC_DEFINE([FD_t], [int], [socket type for the rest])], [
75#include <winsock2.h>
76])
77if test "x$ac_cv_func_fnmatch" != "xyes"
78then
79AC_CHECK_LIB(fnmatch, fnmatch, [XIPH_VAR_APPEND([XIPH_LIBS],["-lfnmatch"])],
80        [ AC_CHECK_LIB(iberty, fnmatch, [XIPH_VAR_APPEND([XIPH_LIBS],["-liberty"])],
81        [ICECAST_OPTIONAL="$ICECAST_OPTIONAL fnmatch.o"])])
82fi
83AC_SEARCH_LIBS(nanosleep, rt posix4,
84        AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if you have nanosleep]))
85AC_SEARCH_LIBS(clock_gettime, rt posix4,
86        AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define if you have clock_gettime]))
87XIPH_NET
88
89dnl -- configure options --
90
91XIPH_PATH_XSLT
92XIPH_VAR_APPEND([XIPH_CPPFLAGS],[$XSLT_CFLAGS])
93XIPH_VAR_PREPEND([XIPH_LIBS],[$XSLT_LIBS])
94
95XIPH_PATH_VORBIS([
96    XIPH_VAR_APPEND([XIPH_CPPFLAGS],[$VORBIS_CFLAGS])
97    XIPH_VAR_PREPEND([XIPH_LIBS],[$VORBIS_LIBS])
98    XIPH_VAR_APPEND([XIPH_LDFLAGS],[$VORBIS_LDFLAGS])
99    ICECAST_OPTIONAL="$ICECAST_OPTIONAL format_vorbis.o"
100    ],
101    [AC_MSG_ERROR([must have Ogg Vorbis v1.0 or above installed])
102    ])
103
104XIPH_PATH_THEORA([
105    XIPH_VAR_APPEND([XIPH_CPPFLAGS],[$THEORA_CFLAGS])
106    XIPH_VAR_APPEND([XIPH_LDFLAGS],[$THEORA_LDFLAGS])
107    XIPH_VAR_PREPEND([XIPH_LIBS],[$THEORA_LIBS])
108    ICECAST_OPTIONAL="$ICECAST_OPTIONAL format_theora.o"
109    ],
110    [ AC_MSG_WARN([Theora disabled!])
111    ])
112
113XIPH_PATH_SPEEX(
114    [ XIPH_VAR_APPEND([XIPH_CPPFLAGS],[$SPEEX_CFLAGS])
115    XIPH_VAR_PREPEND([XIPH_LIBS],[$SPEEX_LIBS])
116    XIPH_VAR_APPEND([XIPH_LDFLAGS],[$SPEEX_LDFLAGS])
117    ICECAST_OPTIONAL="$ICECAST_OPTIONAL format_speex.o"
118    ],
119    [ AC_MSG_WARN([Speex support disabled!])
120    ])
121
122AC_CHECK_LIB(kate, kate_decode_init,[have_kate=yes],[have_kate=no], -logg)
123if test "x$have_kate" = "xyes"
124then
125  AC_CHECK_LIB(oggkate, kate_ogg_decode_headerin,[have_kate=yes],[have_kate=no],-lkate -logg)
126  if test "x$have_kate" = "xyes"
127  then
128    KATE_LIBS="-loggkate -lkate -logg"
129    AC_DEFINE([HAVE_KATE],[1],[Define if you have libkate])
130  fi
131fi
132dnl we still use format_kate as it doesn't need libkate to work
133#ICECAST_OPTIONAL="$ICECAST_OPTIONAL format_kate.o"
134
135ACX_PTHREAD(, AC_MSG_ERROR([POSIX threads missing]))
136XIPH_VAR_APPEND([XIPH_CFLAGS],[$PTHREAD_CFLAGS])
137XIPH_VAR_APPEND([XIPH_CPPFLAGS],[$PTHREAD_CPPFLAGS])
138XIPH_VAR_PREPEND([XIPH_LIBS],[$PTHREAD_LIBS])
139
140XIPH_PATH_CURL([
141    AC_CHECK_DECL([CURLOPT_NOSIGNAL],
142        [ AC_DEFINE([HAVE_AUTH_URL], 1, [Define to compile in auth URL support code])
143        AC_CHECK_FUNCS([curl_global_init])
144        ICECAST_OPTIONAL="$ICECAST_OPTIONAL auth_url.o"
145        enable_curl="yes"
146        XIPH_VAR_APPEND([XIPH_CPPFLAGS],[$CURL_CFLAGS])
147        XIPH_VAR_PREPEND([XIPH_LIBS],[$CURL_LIBS])
148        ], [ AC_MSG_NOTICE([Your curl dev files are too old (7.10 or above required)])
149        ], [#include <curl/curl.h>
150        ])
151    ],[ AC_MSG_NOTICE([libcurl not found])
152    ])
153dnl -- YP support --
154AC_ARG_ENABLE([yp],
155        AS_HELP_STRING([--disable-yp],[disable YP directory support]),
156        enable_yp="$enableval",
157        enable_yp="yes")
158if test "x$enable_yp" = "xyes" -a "x$enable_curl" = xyes
159then
160    AC_DEFINE([USE_YP], 1, [Define to compile in YP support code])
161    ICECAST_OPTIONAL="$ICECAST_OPTIONAL yp.o"
162else
163    AC_MSG_NOTICE([YP support disabled])
164fi
165XIPH_PATH_OPENSSL([
166    XIPH_VAR_APPEND([XIPH_CPPFLAGS],[$OPENSSL_CFLAGS])
167    XIPH_VAR_APPEND([XIPH_LDFLAGS],[$OPENSSL_LDFLAGS])
168    XIPH_VAR_PREPEND([XIPH_LIBS],[$OPENSSL_LIBS])
169    ],
170    [ AC_MSG_NOTICE([SSL disabled!])
171    ])
172
173if test "x$ac_cv_func_fork" = "xyes"
174then
175    ICECAST_OPTIONAL="$ICECAST_OPTIONAL auth_cmd.o"
176fi
177
178dnl Make substitutions
179
180AC_SUBST(XIPH_CPPFLAGS)
181AC_SUBST(XIPH_CFLAGS)
182AC_SUBST(XIPH_LIBS)
183AC_SUBST(XIPH_LDFLAGS)
184AC_SUBST(PTHREAD_CPPFLAGS)
185AC_SUBST(PTHREAD_CFLAGS)
186AC_SUBST(PTHREAD_LIBS)
187AC_SUBST(LIBTOOL_DEPS)
188AC_SUBST(LIBS)
189AC_SUBST(DEBUG)
190AC_SUBST(CFLAGS)
191AC_SUBST(PROFILE)
192AC_SUBST(ICECAST_OPTIONAL)
193AC_SUBST(HAVE_KATE)
194AC_SUBST(KATE_LIBS)
195
196AC_CONFIG_FILES([
197   Makefile
198   conf/Makefile
199   src/Makefile
200   src/avl/Makefile
201   src/httpp/Makefile
202   src/thread/Makefile
203   src/log/Makefile
204   src/net/Makefile
205   src/timing/Makefile
206   doc/Makefile
207   web/Makefile
208   web/images/Makefile
209   admin/Makefile
210   win32/Makefile
211])
212AC_OUTPUT
213