2 # Process this file with autoconf to produce a configure script.
4 # This file is part of avahi.
6 # avahi is free software; you can redistribute it and/or modify it
7 # under the terms of the GNU Lesser General Public License as
8 # published by the Free Software Foundation; either version 2 of the
9 # License, or (at your option) any later version.
11 # avahi is distributed in the hope that it will be useful, but WITHOUT
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 # License for more details.
16 # You should have received a copy of the GNU Lesser General Public
17 # License along with avahi; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22 AC_INIT([avahi],[0.6.31],[avahi (at) lists (dot) freedesktop (dot) org])
23 AC_CONFIG_SRCDIR([avahi-core/server.c])
24 AC_CONFIG_MACRO_DIR([common])
25 AC_CONFIG_HEADERS([config.h])
26 AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability silent-rules tar-pax])
28 AC_SUBST(PACKAGE_URL, [http://avahi.org/])
30 AC_SUBST(LIBAVAHI_COMMON_VERSION_INFO, [8:3:5])
31 AC_SUBST(LIBAVAHI_CORE_VERSION_INFO, [7:2:0])
35 AM_SILENT_RULES([yes])
37 AC_CHECK_PROG([STOW], [stow], [yes], [no])
39 AS_IF([test "x$STOW" = "xyes" && test -d /usr/local/stow], [
40 AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***])
41 ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}"
44 # Checks for programs.
48 AC_USE_SYSTEM_EXTENSIONS
53 AC_PROG_GCC_TRADITIONAL
55 if test x"$ac_cv_prog_cc_c99" = x"no"; then
56 AC_MSG_ERROR([C99 support is required])
60 AC_ARG_ENABLE([stack-protector],
61 [AS_HELP_STRING([--disable-stack-protector],
62 [Disable GCC's/libc's stack-smashing protection])],
63 [case "${enableval}" in
64 yes) enable_ssp=yes ;;
66 *) AC_MSG_ERROR([invalid value ${enableval} for --disable-stack-protector]) ;;
70 if test x"$enable_ssp" = x"yes" && test x"$GCC" != x"yes"; then
71 AC_MSG_NOTICE([Disabling stack-smashing protection because compiler is not GCC])
75 if test x"$enable_ssp" = x"yes"; then
76 # Check for broken ssp in libc: http://www.avahi.org/ticket/105
77 # libc's brokenness will get in the way regardless of whether -lssp is
78 # provided, but provide it anyway (otherwise non-libc ssp would wrongly
81 # Get -lssp if it exists
84 AC_MSG_CHECKING([whether stack-smashing protection is available])
85 ssp_old_cflags="$CFLAGS"
86 ssp_old_ldflags="$LDFLAGS"
87 CFLAGS="$CFLAGS -Werror -fstack-protector-all -fPIC"
88 LDFLAGS="$LDFLAGS -Wl,-z,defs"
89 cat confdefs.h > conftest.c
90 cat >>conftest.c <<_ACEOF
91 void test_broken_ssp(c)
94 char arr[[123]], *p; /* beware of possible double-braces if copying this */
95 for (p = arr; *c; ++p) {
103 if $CC -c $CFLAGS $CPPFLAGS -o conftest.o conftest.c >/dev/null 2>&1; then
105 AC_MSG_CHECKING([whether stack-smashing protection is buggy])
106 if $CC -o conftest.so $LDFLAGS -shared conftest.o $LIBS >/dev/null 2>&1; then
116 rm -f conftest.c conftest.o conftest.so
118 CFLAGS="$ssp_old_cflags"
119 LDFLAGS="$ssp_old_ldflags"
122 if test x"$enable_ssp" = x"yes"; then
123 # Do this the long way so we don't call GCC_STACK_PROTECT_LIB twice
127 GCC_STACK_PROTECT_CXX
129 # XXX: Update the enable_ssp value now for output later?
135 ACX_PTHREAD(,AC_MSG_ERROR([Missing POSIX Threads support]))
138 # Check for netlink.h
140 AC_CHECK_HEADER(linux/netlink.h,
142 AC_DEFINE([HAVE_NETLINK],[],[Support for Linux netlink])
144 #include <sys/socket.h>
145 #include <asm/types.h>
148 AM_CONDITIONAL(HAVE_NETLINK, [ test x"$HAVE_NETLINK" = xyes ])
150 if test "x$HAVE_NETLINK" = "xyes" ; then
151 # Test whether rtnetlink.h can be included when compiled with -std=c99
152 # some distributions (e.g. archlinux) have broken headers that dont
153 # define __u64 with -std=c99
154 AC_MSG_CHECKING([checking whether rtnetlink.h can be included with -std=c99])
155 AC_TRY_COMPILE([#include <linux/rtnetlink.h>], [],
156 [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no])])
160 # Check for net/route.h
162 AC_CHECK_HEADER(net/route.h,
164 AC_DEFINE([HAVE_PF_ROUTE],[],[Support for PF_ROUTE])
166 #include <sys/types.h>
167 #include <sys/socket.h>
168 #include <net/if_dl.h>
171 AM_CONDITIONAL(HAVE_PF_ROUTE, [ test x"$HAVE_PF_ROUTE" = xyes ])
174 # Check for sys/filio.h; needed for FIONREAD on Solaris
176 AC_CHECK_HEADER(sys/filio.h,
178 AC_DEFINE([HAVE_SYS_FILIO_H],[],[Support for sys/filio.h])
182 AM_CONDITIONAL(HAVE_SYS_FILIO_H, [ test x"$HAVE_SYS_FILIO_H" = xyes ])
185 # Check for sys/sysctl.h; not present on Solaris
187 AC_CHECK_HEADER(sys/sysctl.h,
189 AC_DEFINE([HAVE_SYS_SYSCTL_H],[],[Support for sys/sysctl.h])
191 #include <sys/types.h>
192 #include <sys/socket.h>
193 #include <sys/param.h>
196 AM_CONDITIONAL(HAVE_SYS_SYSCTL_H, [ test x"$HAVE_SYS_SYSCTL_H" = xyes ])
199 # Check for lifconf struct; only present on Solaris
201 AC_MSG_CHECKING(for struct lifconf)
202 AC_CACHE_VAL(avahi_cv_has_struct_lifconf,
204 [#include <sys/socket.h>
206 ],[sizeof (struct lifconf);],
207 avahi_cv_has_struct_lifconf=yes,avahi_cv_has_struct_lifconf=no)])
208 AC_MSG_RESULT($avahi_cv_has_struct_lifconf)
209 if test $avahi_cv_has_struct_lifconf = yes; then
210 AC_DEFINE(HAVE_STRUCT_LIFCONF,1,[Define if there is a struct lifconf.])
214 # Check for struct ip_mreqn
216 AC_MSG_CHECKING(for struct ip_mreqn)
217 AC_TRY_COMPILE([#include <netinet/in.h>], [
218 struct ip_mreqn mreq;
219 mreq.imr_address.s_addr = 0;
223 AC_DEFINE([HAVE_STRUCT_IP_MREQN],[],[Support for struct ip_mreqn])
225 # We'll just have to try and use struct ip_mreq
227 AC_MSG_CHECKING(for struct ip_mreq)
228 AC_TRY_COMPILE([#include <netinet/in.h>], [
230 mreq.imr_interface.s_addr = 0;
234 AC_DEFINE([HAVE_STRUCT_IP_MREQ],[],[Support for struct ip_mreq])
236 # No multicast support
242 AC_LANG_CONFTEST([AC_LANG_SOURCE([[int main() {}]])])
243 $CC -c conftest.c $CFLAGS $@ > /dev/null 2> /dev/null
249 # If using GCC specify some additional parameters
250 if test "x$GCC" = "xyes" ; then
252 DESIRED_FLAGS="-Wall -W -Wextra -pedantic -pipe -Wformat -Wold-style-definition -Wdeclaration-after-statement -Wfloat-equal -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-noreturn -Wshadow -Wendif-labels -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -fdiagnostics-show-option -Wno-cast-qual -fno-strict-aliasing"
254 for flag in $DESIRED_FLAGS ; do
255 AC_MSG_CHECKING([whether $CC accepts $flag])
256 if test_gcc_flag $flag ; then
257 CFLAGS="$CFLAGS $flag"
265 # Checks for header files.
266 AC_CHECK_HEADERS([arpa/inet.h fcntl.h netinet/in.h sys/ioctl.h sys/socket.h sys/time.h unistd.h netdb.h syslog.h])
269 AC_SEARCH_LIBS([inet_ntop],[nsl])
270 AC_SEARCH_LIBS([recv],[socket])
271 AC_CHECK_DECL([CMSG_SPACE],,CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500 -D__EXTENSIONS__", [[#include <sys/socket.h>]])
273 # Checks for library functions.
274 AC_FUNC_SELECT_ARGTYPES
275 AC_CHECK_FUNCS([gethostname mkdir select socket strdup uname setresuid setreuid setresgid setregid strcasecmp gettimeofday putenv strncasecmp strlcpy gethostbyname seteuid setegid setproctitle getprogname])
282 AC_CHECK_DECLS(environ)
284 # check if gcc's -fvisibility is supported
285 CHECK_VISIBILITY_HIDDEN
287 # Check for pkg-config manually first, as if its not installed the
288 # PKG_PROG_PKG_CONFIG macro won't be defined.
289 AC_CHECK_PROG(have_pkg_config, pkg-config, yes, no)
291 if test x"$have_pkg_config" = "xno"; then
292 AC_MSG_ERROR(pkg-config is required to install this program)
308 DX_INIT_DOXYGEN(avahi, doxygen.cfg, doxygen)
311 # Conditionally compile test and example programs
314 AS_HELP_STRING([--enable-tests],[Enable building of tests and examples]),
315 [case "${enableval}" in
316 yes) ENABLE_TESTS=yes ;;
317 no) ENABLE_TESTS=no ;;
318 *) AC_MSG_ERROR(bad value ${enableval} for --enable-tests) ;;
322 AM_CONDITIONAL([ENABLE_TESTS], [test "x$ENABLE_TESTS" = "xyes"])
324 # ==========================================================================
327 avahi-common/Makefile
334 # ==========================================================================
336 ---{ $PACKAGE_NAME $VERSION }---
339 sysconfdir: ${sysconfdir}
340 localstatedir: ${localstatedir}
343 Enable stack-smashing protection: ${enable_ssp}
347 Building libavahi-core yes
348 Building tests: ${ENABLE_TESTS}