]> git.meshlink.io Git - catta/blob - configure.ac
* Fix building of python scripts to exclude things needing DBUS or GTK if they are...
[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 Qt 3
174 #
175 AC_ARG_ENABLE(qt3,
176         AS_HELP_STRING([--disable-qt3],[Disable building of Qt3 mainloop integration]),
177         [case "${enableval}" in
178                 yes) HAVE_QT3=yes ;;
179                 no)  HAVE_QT3=no ;;
180                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-qt3) ;;
181         esac],
182         [HAVE_QT3=yes])
183
184 if test "x$HAVE_QT3" = "xyes" ; then
185         PKG_CHECK_MODULES( QT3, [ qt-mt >= 3.0.0 ])
186         AC_SUBST(QT3_CFLAGS)
187         AC_SUBST(QT3_LIBS)
188             QT3_PREFIX="`$PKG_CONFIG --variable=prefix qt-mt`/bin"
189         MOC_QT3="no"
190             AC_CHECK_FILE( "$QT3_PREFIX/moc-qt3", [ MOC_QT3=$QT3_PREFIX/moc-qt3 ], [
191                     AC_CHECK_FILE("$QT3_PREFIX/moc", [ MOC_QT3=$QT3_PREFIX/moc ], [ 
192                 AC_MSG_ERROR([Couldn't find QT3 moc])])])
193         AC_SUBST(MOC_QT3)
194 fi
195 AM_CONDITIONAL(HAVE_QT3, test "x$HAVE_QT3" = "xyes")
196
197 #
198 # Check for Qt 4
199 #
200 AC_ARG_ENABLE(qt4,
201         AS_HELP_STRING([--disable-qt4],[Disable building of Qt4Core mainloop integration]),
202         [case "${enableval}" in
203                 yes) HAVE_QT4=yes ;;
204                 no)  HAVE_QT4=no ;;
205                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-qt4) ;;
206         esac],
207         [HAVE_QT4=yes])
208
209 if test "x$HAVE_QT4" = "xyes" ; then
210         PKG_CHECK_MODULES( QT4, [ QtCore >= 4.0.0 ])
211         AC_SUBST(QT4_CFLAGS)
212         AC_SUBST(QT4_LIBS)
213             QT4_PREFIX="`$PKG_CONFIG --variable=prefix QtCore`/bin"
214         MOC_QT4="no"
215             AC_CHECK_FILE( "$QT4_PREFIX/moc-qt4", [ MOC_QT4=$QT4_PREFIX/moc-qt4 ], [
216                AC_CHECK_FILE("$QT4_PREFIX/moc", [ MOC_QT4=$QT4_PREFIX/moc ], [ 
217                AC_MSG_ERROR([Couldn't find QT4 moc])])])
218         AC_SUBST(MOC_QT4)
219 fi
220 AM_CONDITIONAL(HAVE_QT4, test "x$HAVE_QT4" = "xyes")
221
222 #
223 # Check for GTK+
224 #
225 AC_ARG_ENABLE(gtk,
226         AS_HELP_STRING([--disable-gtk],[Disable use of GTK+]),
227         [case "${enableval}" in
228                 yes) HAVE_GTK=yes ;;
229                 no)  HAVE_GTK=no ;;
230                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-gtk) ;;
231         esac],
232         [HAVE_GTK=yes])
233
234 if test "x$HAVE_GTK" = "xyes" ; then
235         # Check for GTK 2.0
236         PKG_CHECK_MODULES(GTK20, [ gtk+-2.0 >= 2.4.0 ])
237         AC_SUBST(GTK20_CFLAGS)
238         AC_SUBST(GTK20_LIBS)
239         
240         # Check for GLADE 2.0
241         PKG_CHECK_MODULES(GLADE20, [ libglade-2.0 >= 2.4.0 ])
242         AC_SUBST(GLADE20_CFLAGS)
243         AC_SUBST(GLADE20_LIBS)
244
245         interfacesdir="${datadir}/${PACKAGE}/interfaces/"
246         AC_SUBST(interfacesdir)
247 fi
248 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
249
250 #
251 # D-BUS
252 #
253 AC_ARG_ENABLE(dbus,
254         AS_HELP_STRING([--disable-dbus],[Disable use of D-BUS]),
255         [case "${enableval}" in
256                 yes) HAVE_DBUS=yes ;;
257                 no)  HAVE_DBUS=no ;;
258                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-dbus) ;;
259         esac],
260         [HAVE_DBUS=yes]) 
261
262 AC_ARG_WITH(dbus-sys, AS_HELP_STRING([--with-dbus-sys=<dir>], [where D-BUS system.d directory is]))
263 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]))
264
265 if test "x$HAVE_DBUS" = "xyes" ; then
266     AC_DEFINE(HAVE_DBUS, 1, [Whether we have D-BUS or not])
267
268     PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 0.30 ])
269     DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
270     AC_SUBST(DBUS_CFLAGS)
271     AC_SUBST(DBUS_LIBS)
272
273     if ! test -z "$with_dbus_sys" ; then
274         DBUS_SYS_DIR="$with_dbus_sys"
275     else
276         DBUS_SYS_DIR="${sysconfdir}/dbus-1/system.d"
277     fi
278     AC_SUBST(DBUS_SYS_DIR)
279
280     if ! test -z "$with_dbus_system_address" ; then
281         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="$with_dbus_system_address"
282     else
283         # Note this default path is hardcoded in D-BUS and should
284         # not use $localstatedir
285         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
286     fi
287     AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
288     
289 fi
290 AM_CONDITIONAL(HAVE_DBUS, test "x$HAVE_DBUS" = "xyes")
291
292 #
293 # Expat
294 #
295 AC_ARG_ENABLE(expat,
296         AS_HELP_STRING([--disable-expat],[Disable use of Expat]),
297         [case "${enableval}" in
298                 yes) HAVE_EXPAT=yes ;;
299                 no)  HAVE_EXPAT=no ;;
300                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-expat) ;;
301         esac],
302         [HAVE_EXPAT=yes]) 
303
304 if test "x$HAVE_EXPAT" = "xyes" ; then
305     AC_CHECK_LIB(expat, XML_ParserCreate, [ AC_CHECK_HEADERS(expat.h, have_expat=true, have_expat=false) ], have_expat=false)
306
307     if ! $have_expat ; then
308         AC_MSG_ERROR([*** libexpat not found ***])
309     fi
310 fi
311 AM_CONDITIONAL(HAVE_EXPAT, test "x$HAVE_EXPAT" = "xyes")
312
313 #
314 # libdaemon
315 #
316 AC_ARG_ENABLE(libdaemon,
317         AS_HELP_STRING([--disable-libdaemon],[Disable use of libdaemon]),
318         [case "${enableval}" in
319                 yes) HAVE_LIBDAEMON=yes ;;
320                 no)  HAVE_LIBDAEMON=no ;;
321                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-libdaemon) ;;
322         esac],
323         [HAVE_LIBDAEMON=yes]) 
324
325 if test "x$HAVE_LIBDAEMON" = "xyes" ; then
326     PKG_CHECK_MODULES(LIBDAEMON, [ libdaemon >= 0.5 ])
327     AC_SUBST(LIBDAEMON_CFLAGS)
328     AC_SUBST(LIBDAEMON_LIBS)
329 fi
330 AM_CONDITIONAL(HAVE_LIBDAEMON, test "x$HAVE_LIBDAEMON" = "xyes")
331
332 #
333 # Python stuff
334 #
335 AC_ARG_ENABLE(python,
336     AS_HELP_STRING([--disable-python], [Disable scripts that depends on python]),
337     [case "${enableval}" in
338           yes) HAVE_PYTHON=yes ;;
339           no)  HAVE_PYTHON=no ;;
340           *) AC_MSG_ERROR([bad value ${enableval} for --enable-python]) ;;
341     esac],[HAVE_PYTHON=yes])
342
343 if test "x$HAVE_PYTHON" = "xyes" ; then
344     AM_PATH_PYTHON([2.4])
345     if test "x$HAVE_GTK" = "xyes" ; then
346         AM_CHECK_PYMOD(gtk,,,[AC_MSG_ERROR(Could not find Python module pygtk)])
347     fi
348     if test "x$HAVE_DBUS" = "xyes" ; then
349         AM_CHECK_PYMOD(dbus,,,[AC_MSG_ERROR(Could not find Python module dbus)])
350     fi
351     AM_CHECK_PYMOD(socket,,,[AC_MSG_ERROR(Could not find Python module socket)])
352     AM_CHECK_PYMOD(dbm,,,[AC_MSG_ERROR(Could not find Python module dbm)])
353     AM_CHECK_PYMOD(anydbm,,,[AC_MSG_ERROR(Could not find Python module anydbm)])
354 fi
355 AM_CONDITIONAL(HAVE_PYTHON, [test "x$HAVE_PYTHON" = "xyes" ])
356
357 #
358 # Defining Avahi User and Group.
359 #
360 AC_ARG_WITH(avahi_user, AS_HELP_STRING([--with-avahi-user=<user>],[User for running the Avahi daemon (avahi)]))
361 if test -z "$with_avahi_user" ; then
362     AVAHI_USER=avahi
363 else
364     AVAHI_USER=$with_avahi_user
365 fi
366 AC_SUBST(AVAHI_USER)
367 AC_DEFINE_UNQUOTED(AVAHI_USER,"$AVAHI_USER", [User for running the Avahi daemon])
368
369 AC_ARG_WITH(avahi_group,AS_HELP_STRING([--with-avahi-group=<group>],[Group for Avahi (avahi)]))
370 if test -z "$with_avahi_group" ; then
371     AVAHI_GROUP=avahi
372 else
373     AVAHI_GROUP=$with_avahi_group
374 fi
375 AC_SUBST(AVAHI_GROUP)
376 AC_DEFINE_UNQUOTED(AVAHI_GROUP,"$AVAHI_GROUP", [Group for Avahi])
377
378 #
379 # Avahi runtime dir
380 #
381 avahi_runtime_dir="${localstatedir}/run"
382 avahi_socket="${avahi_runtime_dir}/avahi-daemon/socket"
383 AC_SUBST(avahi_runtime_dir)
384 AC_SUBST(avahi_socket)
385
386
387 #
388 # Doxygen
389 #
390 DX_HTML_FEATURE(ON)
391 DX_CHM_FEATURE(OFF)
392 DX_CHI_FEATURE(OFF)
393 DX_MAN_FEATURE(OFF)
394 DX_RTF_FEATURE(OFF)
395 DX_XML_FEATURE(OFF)
396 DX_PDF_FEATURE(OFF)
397 DX_PS_FEATURE(OFF)
398 DX_INIT_DOXYGEN(avahi, doxygen.cfg, doxygen)
399
400 #
401 # XMLTOMAN manpage generation
402 #
403 AC_ARG_ENABLE(xmltoman,
404         AS_HELP_STRING([--disable-xmltoman],[Disable rebuilding of man pages with xmltoman]),
405 [case "${enableval}" in
406   yes) xmltoman=yes ;;
407   no)  xmltoman=no ;;
408   *) AC_MSG_ERROR([bad value ${enableval} for --disable-xmltoman]) ;;
409 esac],[xmltoman=yes])
410
411 if test x$xmltoman = xyes ; then
412     AC_CHECK_PROG(have_xmltoman, xmltoman, yes, no)
413  
414     if test x$have_xmltoman = xno ; then
415         if ! test -e man/avahi-daemon.8 ; then
416             AC_MSG_ERROR([*** xmltoman was not found, it is required to build the manpages and they have not been pre-built])
417             exit 1
418         fi
419         AC_MSG_WARN([*** Not rebuilding man pages as xmltoman is not found ***])
420         xmltoman=no
421     fi
422 fi
423
424 AM_CONDITIONAL([USE_XMLTOMAN], [test "x$xmltoman" = xyes])
425
426 # ==========================================================================
427 AC_CONFIG_FILES([
428 Makefile 
429 avahi-common/Makefile 
430 avahi-core/Makefile 
431 avahi-glib/Makefile 
432 avahi-qt/Makefile
433 avahi-daemon/Makefile 
434 avahi-daemon/avahi-dbus.conf
435 avahi-discover-standalone/Makefile 
436 avahi-client/Makefile 
437 initscript/Makefile 
438 initscript/debian/Makefile
439 initscript/gentoo/Makefile
440 initscript/archlinux/Makefile
441 avahi-dnsconfd/Makefile
442 avahi-utils/Makefile
443 avahi-utils/avahi/Makefile
444 examples/Makefile
445 common/Makefile
446 man/Makefile
447 tests/Makefile
448 service-type-database/Makefile
449 ])
450 AC_OUTPUT
451
452 # ==========================================================================
453 echo "
454  ---{ $PACKAGE_NAME $VERSION }---
455
456     prefix:                 ${prefix}
457     sysconfdir:             ${sysconfdir}
458     dbus-1 system.d dir:    ${DBUS_SYS_DIR}
459     dbus-1 version:         `pkg-config dbus-1 --modversion`
460     dbus-1 system socket    ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}
461     compiler:               ${CC}
462     cflags:                 ${CFLAGS}
463     Enable GLIB:            ${HAVE_GLIB}
464     Enable GTK:             ${HAVE_GTK}
465     Enable D-BUS:           ${HAVE_DBUS}
466     Enable Expat:           ${HAVE_EXPAT}
467     Enable libdaemon:       ${HAVE_LIBDAEMON}
468     Enable Python:          ${HAVE_PYTHON}
469     Enable QT3:             ${HAVE_QT3}
470     Enable QT4:             ${HAVE_QT4}
471     Linux Distro:           ${with_distro}
472     User for Avahi:         ${AVAHI_USER}
473     Group for Avahi:        ${AVAHI_GROUP}
474 "
475
476 BUILD_DAEMON="no (!)"
477
478 if test "x$HAVE_EXPAT" = "xyes" -a "x$HAVE_LIBDAEMON" = "xyes" ; then
479     BUILD_DAEMON=yes
480 fi
481
482 BUILD_UTILS="no (!)"
483
484 if test "x$BUILD_DAEMON" = "xyes" -a "x$HAVE_DBUS" = "xyes" -a "x$HAVE_PYTHON" = "xyes" ; then
485     BUILD_UTILS=yes
486 fi
487
488 BUILD_CLIENT="no (!)"
489
490 if test "x$BUILD_DAEMON" = "xyes" -a "x$HAVE_DBUS" = "xyes" ; then
491     BUILD_CLIENT=yes
492 fi
493
494 echo "
495     Building libavahi-core              yes
496     Building avahi-daemon:              ${BUILD_DAEMON}
497     Building avahi-dnsconfd:            ${BUILD_DAEMON}
498     Building avahi-utils:               ${BUILD_UTILS}
499     Building libavahi-glib:             ${HAVE_GLIB}
500     Building libavahi-client:           ${BUILD_CLIENT}
501     Building avahi-discover-standalone: ${HAVE_GTK}
502     Building libavahi-qt3:              ${HAVE_QT3}
503     Building libavahi-qt4:              ${HAVE_QT4}
504 "