]> git.meshlink.io Git - catta/blob - configure.ac
4fcf13d9433e59dbb670f919efadbd279dfe8002
[catta] / configure.ac
1 # -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 # This file is part of avahi.
5 #
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.
10 #
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.
15 #
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
19 # USA.
20
21 AC_PREREQ(2.63)
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])
27
28 AC_SUBST(PACKAGE_URL, [http://avahi.org/])
29
30 AC_SUBST(LIBAVAHI_COMMON_VERSION_INFO, [8:3:5])
31 AC_SUBST(LIBAVAHI_CORE_VERSION_INFO, [7:2:0])
32
33 AC_CANONICAL_HOST
34
35 AM_SILENT_RULES([yes])
36
37 AC_CHECK_PROG([STOW], [stow], [yes], [no])
38
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}"
42 ])
43
44 # Checks for programs.
45 AC_PROG_CC
46 AC_PROG_CC_C99
47 AM_PROG_CC_C_O
48 AC_USE_SYSTEM_EXTENSIONS
49 AC_PROG_MKDIR_P
50 AC_PROG_INSTALL
51 AC_PROG_LN_S
52 AC_PROG_MAKE_SET
53 AC_PROG_GCC_TRADITIONAL
54
55 # -fstack-protector
56 AC_ARG_ENABLE([stack-protector],
57     [AS_HELP_STRING([--disable-stack-protector],
58         [Disable GCC's/libc's stack-smashing protection])],
59     [case "${enableval}" in
60          yes) enable_ssp=yes ;;
61           no) enable_ssp=no ;;
62            *) AC_MSG_ERROR([invalid value ${enableval} for --disable-stack-protector]) ;;
63      esac],
64     [enable_ssp=yes])
65
66 if test x"$enable_ssp" = x"yes" && test x"$GCC" != x"yes"; then
67     AC_MSG_NOTICE([Disabling stack-smashing protection because compiler is not GCC])
68     enable_ssp=no
69 fi
70
71 if test x"$enable_ssp" = x"yes"; then
72     # Check for broken ssp in libc: http://www.avahi.org/ticket/105
73     # libc's brokenness will get in the way regardless of whether -lssp is
74     # provided, but provide it anyway (otherwise non-libc ssp would wrongly
75     # break here)
76
77     # Get -lssp if it exists
78     GCC_STACK_PROTECT_LIB
79
80     AC_MSG_CHECKING([whether stack-smashing protection is available])
81     ssp_old_cflags="$CFLAGS"
82     ssp_old_ldflags="$LDFLAGS"
83     CFLAGS="$CFLAGS -Werror -fstack-protector-all -fPIC"
84     LDFLAGS="$LDFLAGS -Wl,-z,defs"
85     cat confdefs.h > conftest.c
86     cat >>conftest.c <<_ACEOF
87 void test_broken_ssp(c)
88     const char *c;
89 {
90     char arr[[123]], *p; /* beware of possible double-braces if copying this */
91     for (p = arr; *c; ++p) {
92         *p = *c;
93         ++c;
94     }
95 }
96 _ACEOF
97     rm -f conftest.o
98
99     if $CC -c $CFLAGS $CPPFLAGS -o conftest.o conftest.c >/dev/null 2>&1; then
100         AC_MSG_RESULT([yes])
101         AC_MSG_CHECKING([whether stack-smashing protection is buggy])
102         if $CC -o conftest.so $LDFLAGS -shared conftest.o $LIBS >/dev/null 2>&1; then
103             AC_MSG_RESULT([no])
104         else
105             AC_MSG_RESULT([yes])
106             enable_ssp=no
107         fi
108     else
109         AC_MSG_RESULT([no])
110     fi
111
112     rm -f conftest.c conftest.o conftest.so
113
114     CFLAGS="$ssp_old_cflags"
115     LDFLAGS="$ssp_old_ldflags"
116 fi
117
118 if test x"$enable_ssp" = x"yes"; then
119     # Do this the long way so we don't call GCC_STACK_PROTECT_LIB twice
120     GCC_STACK_PROTECT_CC
121
122     AC_LANG_PUSH([C++])
123     GCC_STACK_PROTECT_CXX
124     AC_LANG_POP([C++])
125     # XXX: Update the enable_ssp value now for output later?
126 fi
127
128 # libtool stuff
129 AC_PROG_LIBTOOL
130
131 ACX_PTHREAD(,AC_MSG_ERROR([Missing POSIX Threads support]))
132
133 #
134 # Check for netlink.h
135 #
136 AC_CHECK_HEADER(linux/netlink.h,
137 HAVE_NETLINK=yes
138 AC_DEFINE([HAVE_NETLINK],[],[Support for Linux netlink])
139 , [], [
140 #include <sys/socket.h>
141 #include <asm/types.h>
142 ])
143
144 AM_CONDITIONAL(HAVE_NETLINK, [ test x"$HAVE_NETLINK" = xyes ])
145
146 #
147 # Check for net/route.h
148 #
149 AC_CHECK_HEADER(net/route.h,
150 HAVE_PF_ROUTE=yes
151 AC_DEFINE([HAVE_PF_ROUTE],[],[Support for PF_ROUTE])
152 , [], [
153 #include <sys/types.h>
154 #include <sys/socket.h>
155 #include <net/if_dl.h>
156 ])
157
158 AM_CONDITIONAL(HAVE_PF_ROUTE, [ test x"$HAVE_PF_ROUTE" = xyes ])
159
160 #
161 # Check for sys/filio.h; needed for FIONREAD on Solaris
162 #
163 AC_CHECK_HEADER(sys/filio.h,
164 HAVE_SYS_FILIO_H=yes
165 AC_DEFINE([HAVE_SYS_FILIO_H],[],[Support for sys/filio.h])
166 , [], [
167 ])
168
169 AM_CONDITIONAL(HAVE_SYS_FILIO_H, [ test x"$HAVE_SYS_FILIO_H" = xyes ])
170
171 #
172 # Check for sys/sysctl.h; not present on Solaris
173 #
174 AC_CHECK_HEADER(sys/sysctl.h,
175 HAVE_SYS_SYSCTL=yes
176 AC_DEFINE([HAVE_SYS_SYSCTL_H],[],[Support for sys/sysctl.h])
177 , [], [
178 #include <sys/types.h>
179 #include <sys/socket.h>
180 #include <sys/param.h>
181 ])
182
183 AM_CONDITIONAL(HAVE_SYS_SYSCTL_H, [ test x"$HAVE_SYS_SYSCTL_H" = xyes ])
184
185 #
186 # Check for lifconf struct; only present on Solaris
187 #
188 AC_MSG_CHECKING(for struct lifconf)
189 AC_CACHE_VAL(avahi_cv_has_struct_lifconf,
190 [AC_TRY_COMPILE(
191 [#include <sys/socket.h>
192 #include <net/if.h>
193 ],[sizeof (struct lifconf);],
194 avahi_cv_has_struct_lifconf=yes,avahi_cv_has_struct_lifconf=no)])
195 AC_MSG_RESULT($avahi_cv_has_struct_lifconf)
196 if test $avahi_cv_has_struct_lifconf = yes; then
197     AC_DEFINE(HAVE_STRUCT_LIFCONF,1,[Define if there is a struct lifconf.])
198 fi
199
200 #
201 # Check for struct ip_mreqn
202 #
203 AC_MSG_CHECKING(for struct ip_mreqn)
204 AC_TRY_COMPILE([#include <netinet/in.h>], [
205         struct ip_mreqn mreq;
206         mreq.imr_address.s_addr = 0;
207 ], [
208         # Yes, we have it...
209         AC_MSG_RESULT(yes)
210         AC_DEFINE([HAVE_STRUCT_IP_MREQN],[],[Support for struct ip_mreqn])
211 ], [
212         # We'll just have to try and use struct ip_mreq
213         AC_MSG_RESULT(no)
214         AC_MSG_CHECKING(for struct ip_mreq)
215         AC_TRY_COMPILE([#include <netinet/in.h>], [
216                 struct ip_mreq mreq;
217                 mreq.imr_interface.s_addr = 0;
218         ], [
219                 # Yes, we have it...
220                 AC_MSG_RESULT(yes)
221                 AC_DEFINE([HAVE_STRUCT_IP_MREQ],[],[Support for struct ip_mreq])
222         ], [
223                 # No multicast support
224                         AC_MSG_RESULT(no)
225         ])
226 ])
227
228 test_gcc_flag() {
229     AC_LANG_CONFTEST([AC_LANG_SOURCE([[int main() {}]])])
230     $CC -c conftest.c $CFLAGS $@ > /dev/null 2> /dev/null
231     ret=$?
232     rm -f conftest.o
233     return $ret
234 }
235
236 # If using GCC specify some additional parameters
237 if test "x$GCC" = "xyes" ; then
238
239     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"
240
241     if test "x$HAVE_NETLINK" = "xyes" ; then
242         # Test whether rtnetlink.h can be included when compiled with -std=c99
243         # some distributions (e.g. archlinux) have broken headers that dont
244         # define __u64 with -std=c99
245         AC_MSG_CHECKING([checking whether rtnetlink.h can be included with -std=c99])
246         OLDCFLAGS="$CFLAGS"
247         CFLAGS="-std=c99"
248         AC_TRY_COMPILE([#include <linux/rtnetlink.h>], [],
249             use_stdc99=yes, use_stdc99=no)
250
251         if test x"$use_stdc99" = xyes; then
252             DESIRED_FLAGS="-std=c99 $DESIRED_FLAGS"
253             AC_MSG_RESULT([yes])
254         else
255             AC_MSG_RESULT([no])
256         fi
257
258         CFLAGS="$OLDCFLAGS"
259     else
260         DESIRED_FLAGS="-std=c99 $DESIRED_FLAGS"
261     fi
262
263     for flag in $DESIRED_FLAGS ; do
264         AC_MSG_CHECKING([whether $CC accepts $flag])
265         if test_gcc_flag $flag ; then
266            CFLAGS="$CFLAGS $flag"
267            AC_MSG_RESULT([yes])
268         else
269            AC_MSG_RESULT([no])
270         fi
271     done
272 fi
273
274 # Checks for header files.
275 AC_HEADER_STDC
276 AC_CHECK_HEADERS([arpa/inet.h fcntl.h inttypes.h limits.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h unistd.h netdb.h syslog.h])
277 AC_HEADER_STDBOOL
278
279 # Checks for typedefs, structures, and compiler characteristics.
280 AC_C_CONST
281 AC_TYPE_SIZE_T
282 AC_HEADER_TIME
283 AC_HEADER_SYS_WAIT
284
285  # Solaris stuff
286  AC_SEARCH_LIBS([inet_ntop],[nsl])
287  AC_SEARCH_LIBS([recv],[socket])
288  AC_CHECK_DECL([CMSG_SPACE],,CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500 -D__EXTENSIONS__", [[#include <sys/socket.h>]])
289
290 # Checks for library functions.
291 AC_FUNC_MEMCMP
292 AC_FUNC_SELECT_ARGTYPES
293 # avahi_malloc actually returns NULL for avahi_malloc(0), so it does not matter
294 # whether libc's malloc does too. (Same for realloc.)
295 #AC_FUNC_MALLOC
296 #AC_FUNC_REALLOC
297 AC_CHECK_FUNCS([gethostname memchr memmove memset mkdir select socket strchr strcspn strdup strerror strrchr strspn strstr uname setresuid setreuid setresgid setregid strcasecmp gettimeofday putenv strncasecmp strlcpy gethostbyname seteuid setegid setproctitle getprogname])
298
299 AC_FUNC_CHOWN
300 AC_FUNC_STAT
301 AC_TYPE_MODE_T
302 AC_TYPE_PID_T
303
304 AC_CHECK_DECLS(environ)
305
306 # check if gcc's -fvisibility is supported
307 CHECK_VISIBILITY_HIDDEN
308
309 # Check for pkg-config manually first, as if its not installed the
310 # PKG_PROG_PKG_CONFIG macro won't be defined.
311 AC_CHECK_PROG(have_pkg_config, pkg-config, yes, no)
312
313 if test x"$have_pkg_config" = "xno"; then
314     AC_MSG_ERROR(pkg-config is required to install this program)
315 fi
316
317 PKG_PROG_PKG_CONFIG
318
319 #
320 # Doxygen
321 #
322 DX_HTML_FEATURE(ON)
323 DX_CHM_FEATURE(OFF)
324 DX_CHI_FEATURE(OFF)
325 DX_MAN_FEATURE(OFF)
326 DX_RTF_FEATURE(OFF)
327 DX_XML_FEATURE(ON)
328 DX_PDF_FEATURE(OFF)
329 DX_PS_FEATURE(OFF)
330 DX_INIT_DOXYGEN(avahi, doxygen.cfg, doxygen)
331
332 #
333 # Conditionally compile test and example programs
334 #
335 AC_ARG_ENABLE(tests,
336         AS_HELP_STRING([--enable-tests],[Enable building of tests and examples]),
337         [case "${enableval}" in
338                 yes) ENABLE_TESTS=yes ;;
339                 no)  ENABLE_TESTS=no ;;
340                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-tests) ;;
341         esac],
342         [ENABLE_TESTS=no])
343
344 AM_CONDITIONAL([ENABLE_TESTS], [test "x$ENABLE_TESTS" = "xyes"])
345
346 # ==========================================================================
347 AC_CONFIG_FILES([
348 Makefile
349 avahi-common/Makefile
350 avahi-core/Makefile
351 examples/Makefile
352 common/Makefile
353 ])
354 AC_OUTPUT
355
356 # ==========================================================================
357 echo "
358  ---{ $PACKAGE_NAME $VERSION }---
359
360     prefix:                                    ${prefix}
361     sysconfdir:                                ${sysconfdir}
362     localstatedir:                             ${localstatedir}
363     C Compiler:                                ${CC}
364     CFLAGS:                                    ${CFLAGS}
365     Enable stack-smashing protection:          ${enable_ssp}
366 "
367
368 echo "\
369     Building libavahi-core              yes
370     Building tests:                     ${ENABLE_TESTS}
371 "