]> git.meshlink.io Git - catta/blob - configure.ac
981c02a41ad4a2c1565ef9e4110f19a30eb3a673
[catta] / configure.ac
1 # -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 # $Id$
5
6 # This file is part of avahi.
7 #
8 # avahi is free software; you can redistribute it and/or modify it
9 # under the terms of the GNU Lesser General Public License as
10 # published by the Free Software Foundation; either version 2 of the
11 # License, or (at your option) any later version.
12 #
13 # avahi is distributed in the hope that it will be useful, but WITHOUT
14 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16 # License for more details.
17 #
18 # You should have received a copy of the GNU Lesser General Public
19 # License along with avahi; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
21 # USA.
22
23 AC_PREREQ(2.57)
24 AC_INIT([avahi],[0.2],[avahi (at) lists (dot) freedesktop (dot) org])
25 AC_CONFIG_SRCDIR([avahi-core/server.c])
26 AC_CONFIG_HEADERS([config.h])
27 AM_INIT_AUTOMAKE([foreign 1.9 -Wall])
28
29 AC_SUBST(PACKAGE_URL, [http://www.freedesktop.org/Software/Avahi])
30
31 if type -p stow > /dev/null && test -d /usr/local/stow ; then
32     AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***])
33     ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}"
34 fi
35
36 # Checks for programs.
37 AC_PROG_CC
38 AC_PROG_CXX
39 AC_GNU_SOURCE
40 AC_PROG_CPP
41 AC_PROG_INSTALL
42 AC_PROG_LN_S
43 AC_PROG_MAKE_SET
44 AC_PROG_GCC_TRADITIONAL
45
46 # libtool stuff
47 AC_PROG_LIBTOOL
48
49 #
50 # Detecting the linux distribution for specific things like init scripts.
51 #
52 AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO],[Specify the Linux distribution to target: One of debian, gentoo, archlinux or none]))
53 if test "z$with_distro" = "z"; then
54     #AC_CHECK_FILE(/etc/SuSE-release,with_distro="suse")
55     AC_CHECK_FILE(/etc/gentoo-release,with_distro="gentoo")
56     AC_CHECK_FILE(/etc/arch-release,with_distro="archlinux")
57     AC_CHECK_FILE(/etc/debian_version,with_distro="debian")
58 fi
59 with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]' `
60
61 if test "z$with_distro" = "z"; then
62     AC_MSG_ERROR([Linux distribution autodetection failed, you must specify the distribution to target using --with-distro=DISTRO, set DISTRO to none if your distribution is not supported.])
63     exit 1
64 else
65 case $with_distro in
66     debian|gentoo|archlinux|none)
67      ;;
68     *)
69      AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, init scripts and dbus configuration will not be installed! (patches welcome), you can specify --with-distro=none to skip this check])
70      ;;
71 esac
72 fi
73
74 #AM_CONDITIONAL(TARGET_SUSE, test x"$with_distro" = xsuse)
75 AM_CONDITIONAL(TARGET_GENTOO, test x"$with_distro" = xgentoo)
76 AM_CONDITIONAL(TARGET_DEBIAN, test x"$with_distro" = xdebian)
77 AM_CONDITIONAL(TARGET_ARCHLINUX, test x"$with_distro" = xarchlinux)
78
79 test_gcc_flag() {
80     AC_LANG_CONFTEST([int main() {}])
81     $CC -c conftest.c $CFLAGS $@ > /dev/null 2> /dev/null
82     ret=$?
83     rm -f conftest.o
84     return $ret
85 }
86
87 # If using GCC specify some additional parameters
88 if test "x$GCC" = "xyes" ; then
89
90     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 -Wlarger-than-4000 -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Winline -Wno-unused-parameter"
91
92     # Test whether rtnetlink.h can be included when compiled with -std=c99
93     # some distributions (e.g. archlinux) have broken headers that dont
94     # define __u64 with -std=c99
95     AC_MSG_CHECKING([checking whether rtnetlink.h can be included with -std=c99])
96     OLDCFLAGS="$CFLAGS"
97     CFLAGS="-std=c99"
98     AC_TRY_COMPILE([#include <linux/rtnetlink.h>], [],
99         use_stdc99=yes, use_stdc99=no)
100
101     if test x"$use_stdc99" = xyes; then
102         DESIRED_FLAGS="-std=c99 $DESIRED_FLAGS"
103         AC_MSG_RESULT([yes])
104     else
105         AC_MSG_RESULT([no])
106     fi
107
108     CFLAGS="$OLDCFLAGS"
109
110     for flag in $DESIRED_FLAGS ; do
111         AC_MSG_CHECKING([whether $CC accepts $flag])
112         if test_gcc_flag $flag ; then 
113            CFLAGS="$CFLAGS $flag"
114            AC_MSG_RESULT([yes])
115         else
116            AC_MSG_RESULT([no])
117         fi
118     done 
119 fi
120
121 # Checks for header files.
122 AC_HEADER_STDC
123 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])
124
125 # Checks for typedefs, structures, and compiler characteristics.
126 AC_C_CONST
127 AC_TYPE_SIZE_T
128 AC_HEADER_TIME
129 AC_HEADER_SYS_WAIT
130
131 # Checks for library functions.
132 AC_FUNC_MEMCMP
133 AC_FUNC_SELECT_ARGTYPES
134 AC_FUNC_MALLOC
135 AC_FUNC_REALLOC
136 AC_CHECK_FUNCS([gethostname memchr memmove memset mkdir select socket strchr strcspn strdup strerror strrchr strspn strstr uname setresuid setreuid strcasecmp gettimeofday putenv strncasecmp])
137
138 AC_FUNC_CHOWN
139 AC_FUNC_STAT
140 AC_TYPE_MODE_T
141 AC_TYPE_PID_T
142
143 # Check for pkg-config manually first, as if its not installed the
144 # PKG_PROG_PKG_CONFIG macro won't be defined.
145 AC_CHECK_PROG(have_pkg_config, pkg-config, yes, no)
146
147 if test x"$have_pkg_config" == xno; then
148     AC_MSG_ERROR(pkg-config is required to install this program)
149 fi
150
151 PKG_PROG_PKG_CONFIG
152
153 #
154 # Check for GLIB 2.0
155 #
156 AC_ARG_ENABLE(glib,
157         AS_HELP_STRING([--disable-glib],[Disable use of GLib]),
158         [case "${enableval}" in
159                 yes) HAVE_GLIB=yes ;;
160                 no)  HAVE_GLIB=no ;;
161                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-glib) ;;
162         esac],
163         [HAVE_GLIB=yes])
164
165 if test "x$HAVE_GLIB" = "xyes" ; then
166         PKG_CHECK_MODULES(GLIB20, [ glib-2.0 >= 2.4.0 ])
167         AC_SUBST(GLIB20_CFLAGS)
168         AC_SUBST(GLIB20_LIBS)
169 fi
170 AM_CONDITIONAL(HAVE_GLIB, test "x$HAVE_GLIB" = "xyes")
171
172 #
173 # Check for GTK+
174 #
175 AC_ARG_ENABLE(gtk,
176         AS_HELP_STRING([--disable-gtk],[Disable use of GTK+]),
177         [case "${enableval}" in
178                 yes) HAVE_GTK=yes ;;
179                 no)  HAVE_GTK=no ;;
180                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-gtk) ;;
181         esac],
182         [HAVE_GTK=yes])
183
184 if test "x$HAVE_GTK" = "xyes" ; then
185         # Check for GTK 2.0
186         PKG_CHECK_MODULES(GTK20, [ gtk+-2.0 >= 2.4.0 ])
187         AC_SUBST(GTK20_CFLAGS)
188         AC_SUBST(GTK20_LIBS)
189         
190         # Check for GLADE 2.0
191         PKG_CHECK_MODULES(GLADE20, [ libglade-2.0 >= 2.4.0 ])
192         AC_SUBST(GLADE20_CFLAGS)
193         AC_SUBST(GLADE20_LIBS)
194
195         interfacesdir="${datadir}/${PACKAGE}/interfaces/"
196         AC_SUBST(interfacesdir)
197 fi
198 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
199
200 #
201 # D-BUS
202 #
203 AC_ARG_ENABLE(dbus,
204         AS_HELP_STRING([--disable-dbus],[Disable use of D-BUS]),
205         [case "${enableval}" in
206                 yes) HAVE_DBUS=yes ;;
207                 no)  HAVE_DBUS=no ;;
208                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-dbus) ;;
209         esac],
210         [HAVE_DBUS=yes]) 
211
212 AC_ARG_WITH(dbus-sys, AS_HELP_STRING([--with-dbus-sys=<dir>], [where D-BUS system.d directory is]))
213 AC_ARG_WITH(dbus-system-socket, AS_HELP_STRING([--with-dbus-system-address=<address>], [where the dbus system socket is, you probably want to put unix:path= at the start]))
214
215 if test "x$HAVE_DBUS" = "xyes" ; then
216     AC_DEFINE(HAVE_DBUS, 1, [Whether we have D-BUS or not])
217
218     PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 0.30 ])
219     DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
220     AC_SUBST(DBUS_CFLAGS)
221     AC_SUBST(DBUS_LIBS)
222
223     if ! test -z "$with_dbus_sys" ; then
224         DBUS_SYS_DIR="$with_dbus_sys"
225     else
226         DBUS_SYS_DIR="${sysconfdir}/dbus-1/system.d"
227     fi
228     AC_SUBST(DBUS_SYS_DIR)
229
230     if ! test -z "$with_dbus_system_address" ; then
231         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="$with_dbus_system_address"
232     else
233         # Note this default path is hardcoded in D-BUS and should
234         # not use $localstatedir
235         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
236     fi
237     AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
238     
239 fi
240 AM_CONDITIONAL(HAVE_DBUS, test "x$HAVE_DBUS" = "xyes")
241
242 #
243 # Expat
244 #
245 AC_ARG_ENABLE(expat,
246         AS_HELP_STRING([--disable-expat],[Disable use of Expat]),
247         [case "${enableval}" in
248                 yes) HAVE_EXPAT=yes ;;
249                 no)  HAVE_EXPAT=no ;;
250                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-expat) ;;
251         esac],
252         [HAVE_EXPAT=yes]) 
253
254 if test "x$HAVE_EXPAT" = "xyes" ; then
255     AC_CHECK_LIB(expat, XML_ParserCreate, [ AC_CHECK_HEADERS(expat.h, have_expat=true, have_expat=false) ], have_expat=false)
256
257     if ! $have_expat ; then
258         AC_MSG_ERROR([*** libexpat not found ***])
259     fi
260 fi
261 AM_CONDITIONAL(HAVE_EXPAT, test "x$HAVE_EXPAT" = "xyes")
262
263 #
264 # libdaemon
265 #
266 AC_ARG_ENABLE(libdaemon,
267         AS_HELP_STRING([--disable-libdaemon],[Disable use of libdaemon]),
268         [case "${enableval}" in
269                 yes) HAVE_LIBDAEMON=yes ;;
270                 no)  HAVE_LIBDAEMON=no ;;
271                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-libdaemon) ;;
272         esac],
273         [HAVE_LIBDAEMON=yes]) 
274
275 if test "x$HAVE_LIBDAEMON" = "xyes" ; then
276     PKG_CHECK_MODULES(LIBDAEMON, [ libdaemon >= 0.5 ])
277     AC_SUBST(LIBDAEMON_CFLAGS)
278     AC_SUBST(LIBDAEMON_LIBS)
279 fi
280 AM_CONDITIONAL(HAVE_LIBDAEMON, test "x$HAVE_LIBDAEMON" = "xyes")
281
282 #
283 # Python stuff
284 #
285 AC_ARG_ENABLE(python,
286     AS_HELP_STRING([--disable-python], [Disable scripts that depends on python]),
287     [case "${enableval}" in
288           yes) HAVE_PYTHON=yes ;;
289           no)  HAVE_PYTHON=no ;;
290           *) AC_MSG_ERROR([bad value ${enableval} for --enable-python]) ;;
291     esac],[HAVE_PYTHON=yes])
292
293 if test "x$HAVE_PYTHON" = "xyes" ; then
294     AM_PATH_PYTHON([2.4])
295     AM_CHECK_PYMOD(gtk,,,[AC_MSG_ERROR(Could not find Python module pygtk)])
296     AM_CHECK_PYMOD(dbus,,,[AC_MSG_ERROR(Could not find Python module dbus)])
297 fi
298 AM_CONDITIONAL(HAVE_PYTHON, [test "x$HAVE_PYTHON" = "xyes" ])
299
300 #
301 # Defining Avahi User and Group.
302 #
303 AC_ARG_WITH(avahi_user, AS_HELP_STRING([--with-avahi-user=<user>],[User for running the Avahi daemon (avahi)]))
304 if test -z "$with_avahi_user" ; then
305     AVAHI_USER=avahi
306 else
307     AVAHI_USER=$with_avahi_user
308 fi
309 AC_SUBST(AVAHI_USER)
310 AC_DEFINE_UNQUOTED(AVAHI_USER,"$AVAHI_USER", [User for running the Avahi daemon])
311
312 AC_ARG_WITH(avahi_group,AS_HELP_STRING([--with-avahi-group=<group>],[Group for Avahi (avahi)]))
313 if test -z "$with_avahi_group" ; then
314     AVAHI_GROUP=avahi
315 else
316     AVAHI_GROUP=$with_avahi_group
317 fi
318 AC_SUBST(AVAHI_GROUP)
319 AC_DEFINE_UNQUOTED(AVAHI_GROUP,"$AVAHI_GROUP", [Group for Avahi])
320
321 #
322 # Avahi runtime dir
323 #
324 avahi_runtime_dir="${localstatedir}/run"
325 avahi_socket="${avahi_runtime_dir}/avahi-daemon/socket"
326 AC_SUBST(avahi_runtime_dir)
327 AC_SUBST(avahi_socket)
328
329
330 #
331 # Doxygen
332 #
333 DX_HTML_FEATURE(ON)
334 DX_CHM_FEATURE(OFF)
335 DX_CHI_FEATURE(OFF)
336 DX_MAN_FEATURE(OFF)
337 DX_RTF_FEATURE(OFF)
338 DX_XML_FEATURE(OFF)
339 DX_PDF_FEATURE(OFF)
340 DX_PS_FEATURE(OFF)
341 DX_INIT_DOXYGEN(avahi, doxygen.cfg, doxygen)
342
343 #
344 # XMLTOMAN manpage generation
345 #
346 AC_ARG_ENABLE(xmltoman,
347         AS_HELP_STRING([--disable-xmltoman],[Disable rebuilding of man pages with xmltoman]),
348 [case "${enableval}" in
349   yes) xmltoman=yes ;;
350   no)  xmltoman=no ;;
351   *) AC_MSG_ERROR([bad value ${enableval} for --disable-xmltoman]) ;;
352 esac],[xmltoman=yes])
353
354 if test x$xmltoman = xyes ; then
355     AC_CHECK_PROG(have_xmltoman, xmltoman, yes, no)
356  
357     if test x$have_xmltoman = xno ; then
358         if ! test -e man/avahi-daemon.8 ; then
359             AC_MSG_ERROR([*** xmltoman was not found, it is required to build the manpages and they have not been pre-built])
360             exit 1
361         fi
362         AC_MSG_WARN([*** Not rebuilding man pages as xmltoman is not found ***])
363         xmltoman=no
364     fi
365 fi
366
367 AM_CONDITIONAL([USE_XMLTOMAN], [test "x$xmltoman" = xyes])
368
369 # ==========================================================================
370 AC_CONFIG_FILES([
371 Makefile 
372 avahi-common/Makefile 
373 avahi-core/Makefile 
374 avahi-glib/Makefile 
375 avahi-daemon/Makefile 
376 avahi-daemon/avahi-dbus.conf
377 avahi-discover-standalone/Makefile 
378 avahi-client/Makefile 
379 initscript/Makefile 
380 initscript/debian/Makefile
381 initscript/gentoo/Makefile
382 initscript/archlinux/Makefile
383 avahi-dnsconfd/Makefile
384 avahi-utils/Makefile
385 avahi-utils/avahi/Makefile
386 examples/Makefile
387 common/Makefile
388 man/Makefile
389 tests/Makefile
390 ])
391 AC_OUTPUT
392
393 # ==========================================================================
394 echo "
395  ---{ $PACKAGE_NAME $VERSION }---
396
397     prefix:                 ${prefix}
398     sysconfdir:             ${sysconfdir}
399     dbus-1 system.d dir:    ${DBUS_SYS_DIR}
400     dbus-1 version:         `pkg-config dbus-1 --modversion`
401     dbus-1 system socket    ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}
402     compiler:               ${CC}
403     cflags:                 ${CFLAGS}
404     Enable GLIB:            ${HAVE_GLIB}
405     Enable GTK:             ${HAVE_GTK}
406     Enable D-BUS:           ${HAVE_DBUS}
407     Enable Expat:           ${HAVE_EXPAT}
408     Enable libdaemon:       ${HAVE_LIBDAEMON}
409     Have Python:            ${HAVE_PYTHON}
410     Linux Distro:           ${with_distro}
411     User for Avahi:         ${AVAHI_USER}
412     Group for Avahi:        ${AVAHI_GROUP}
413 "
414
415 BUILD_DAEMON="no (!)"
416
417 if test "x$HAVE_EXPAT" = "xyes" -a "x$HAVE_LIBDAEMON" = "xyes" ; then
418     BUILD_DAEMON=yes
419 fi
420
421 BUILD_UTILS="no (!)"
422
423 if test "x$BUILD_DAEMON" = "xyes" -a "x$HAVE_DBUS" = "xyes" -a "x$HAVE_PYTHON" = "xyes" ; then
424     BUILD_UTILS=yes
425 fi
426
427 BUILD_CLIENT="no (!)"
428
429 if test "x$BUILD_DAEMON" = "xyes" -a "x$HAVE_DBUS" = "xyes" ; then
430     BUILD_CLIENT=yes
431 fi
432
433     
434 echo "
435     Building libavahi-core              yes
436     Building avahi-daemon:              ${BUILD_DAEMON}
437     Building avahi-dnsconfd:            ${BUILD_DAEMON}
438     Building avahi-utils:               ${BUILD_UTILS}
439     Building libavahi-glib:             ${HAVE_GLIB}
440     Building libavahi-client:           ${BUILD_CLIENT}
441     Building avahi-discover-standalone: ${HAVE_GTK}
442 "