automake: handle "make dist"
[dahdi/tools.git] / configure.ac
1 # Process this file with autoconf to produce a configure script.
2
3 AC_PREREQ(2.59)
4  
5 m4_define([short_version],
6           m4_bpatsubst(m4_esyscmd([build_tools/make_version . dahdi/tools]),
7                        [\([0-9.]*\)\(\w\|\W\)*],
8                        [\1]))
9 AC_INIT([dahdi-tools], short_version, [www.asterisk.org])
10
11 # check existence of the package
12 AC_CONFIG_SRCDIR([dahdi_cfg.c])
13 AC_CONFIG_AUX_DIR([auxdir])
14 AC_CONFIG_MACRO_DIR([m4])
15 AM_INIT_AUTOMAKE([foreign subdir-objects])
16
17 build_version=`build_tools/make_version . dahdi/tools`
18 AC_SUBST([BUILD_VERSION], "$build_version")
19
20 # enable nice build output on automake1.11
21 m4_pattern_allow([AM_DEFAULT_VERBOSITY])
22 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],[AM_DEFAULT_VERBOSITY=1])
23 AM_CONDITIONAL([SILENT_RULES], [test "$AM_DEFAULT_VERBOSITY" = '0'])
24
25 AC_COPYRIGHT("dahdi-tools")
26 AC_REVISION($Revision$)
27
28 ac_default_prefix=/usr
29 if test ${sysconfdir} = '${prefix}/etc'; then
30    sysconfdir=/etc
31 fi
32 if test ${mandir} = '${prefix}/man'; then
33    mandir=/usr/share/man
34 fi
35
36 if test ${localstatedir} = '${prefix}/var'; then
37      localstatedir=/var
38 fi
39
40 AC_SUBST([udevrulesdir], '${sysconfdir}/udev/rules.d')
41
42 # specify output header file
43 AC_CONFIG_HEADER(autoconfig.h)
44
45 # This needs to be before any macros that use the C compiler
46 AC_GNU_SOURCE
47
48 AC_CHECK_HEADERS([sys/soundcard.h linux/soundcard.h])
49
50 AC_CHECK_TOOL([LD], [ld])
51
52 # Checks for programs.
53 AC_PROG_CXX
54 AC_PROG_CC
55 AC_PROG_CPP
56 AM_PROG_CC_C_O
57 AC_PROG_INSTALL
58 AC_PROG_LN_S
59 AC_PROG_MAKE_SET
60 AC_PROG_AWK
61 AC_PROG_LIBTOOL
62 AST_CHECK_GNU_MAKE
63
64 test_obj=conftest.o
65 AC_COMPILE_IFELSE(AC_LANG_SOURCE(),[
66         BDFNAME=`LANG=C objdump -f $test_obj | grep -e "$test_obj:" | sed "s/.*file format \(.*\)/\1/"`
67         BDFARCH=`LANG=C objdump -f $test_obj | grep -e "architecture:" | sed "s/.*ture: \(.*\),.*/\1/"`    
68 ],[])
69 AC_SUBST(BDFNAME)
70 AC_SUBST(BDFARCH)
71
72 # Set the default value of HOSTCC from CC if --host was not provided:
73 HOSTCC=${HOSTCC:=${CC}}
74 AC_SUBST(HOSTCC)
75
76 AC_PATH_PROG([GREP], [grep], :)
77 AC_PATH_PROG([SHELL], [sh], :)
78 AC_PATH_PROG([LN], [ln], :)
79
80 AC_PATH_PROG([WGET], [wget], :)
81 if test "${WGET}" != ":" ; then
82   DOWNLOAD=${WGET}
83 else
84   AC_PATH_PROG([FETCH], [fetch], [:])
85   DOWNLOAD=${FETCH}
86 fi
87 AC_SUBST(DOWNLOAD)
88
89 AC_LANG(C)
90
91 AC_PATH_PROG([PERL], [perl])
92 if test "$PERL" = ''; then
93               AC_MSG_ERROR(perl is mandatory)
94 fi
95 AC_MSG_CHECKING(for perl libdir)
96 eval `"$PERL" -V:sitelib`
97 AC_SUBST([perllibdir], [`echo "$sitelib"`])
98 AC_MSG_RESULT([$perllibdir])
99 AM_CONDITIONAL([PERL], [test "$perllibdir" != ''])
100
101 AC_ARG_ENABLE(dev-mode,
102         [  --enable-dev-mode    Turn on developer mode],
103         [case "${enableval}" in
104               y|ye|yes) DAHDI_DEVMODE=yes ;;
105               n|no)  DAHDI_DEVMODE=no ;;
106               *) AC_MSG_ERROR(bad value ${enableval} for --enable-dev-mode)  ;;
107         esac])
108 AC_SUBST(DAHDI_DEVMODE)
109 AM_CONDITIONAL([DAHDI_DEVMODE], [test "$DAHDI_DEVMODE" = 'yes'])
110
111 AC_MSG_CHECKING(for -Wdeclaration-after-statement support)
112 if $(${CC} -Wdeclaration-after-statement -S -o /dev/null -xc /dev/null > /dev/null 2>&1); then
113         AC_MSG_RESULT(yes)
114         DAHDI_DECLARATION_AFTER_STATEMENT=-Wdeclaration-after-statement
115 else
116         AC_MSG_RESULT(no)
117         DAHDI_DECLARATION_AFTER_STATEMENT=
118 fi
119 AC_SUBST(DAHDI_DECLARATION_AFTER_STATEMENT)
120
121 AST_EXT_LIB_SETUP([DAHDI], [DAHDI], [dahdi])
122 AST_EXT_LIB_SETUP([NEWT], [newt], [newt])
123 AST_EXT_LIB_SETUP([USB], [usb], [usb])
124 AST_EXT_LIB_SETUP([PCAP], [pcap], [pcap])
125
126 AST_C_DEFINE_CHECK([DAHDI], [DAHDI_CODE], [dahdi/user.h])
127 DAHDI23_DIR="${DAHDI_DIR}"
128 AST_C_DEFINE_CHECK([DAHDI23], [DAHDI_CONFIG_NTTE], [dahdi/user.h])
129 AST_EXT_LIB_CHECK([NEWT], [newt], [newtBell], [newt.h])
130 AST_EXT_LIB_CHECK([USB], [usb], [usb_init], [usb.h])
131 AST_EXT_LIB_CHECK([PCAP], [pcap], [pcap_compile], [pcap.h])
132
133 saved_CPPFLAGS="$CPPFLAGS"
134 CPPFLAGS="$CPPFLAGS $DAHDI_INCLUDE"
135 AC_CHECK_DECL([DAHDI_TXMIRROR], [DAHDI_TXMIRROR=1], [DAHDI_TXMIRROR=0], [#include <dahdi/user.h>])
136 CPPFLAGS="$saved_CPPFLAGS"
137
138 AM_CONDITIONAL([PBX_NEWT], [test "$PBX_NEWT" = "1"])
139 AM_CONDITIONAL([PBX_PCAP], [test "$PBX_PCAP" = "1" -a "$DAHDI_TXMIRROR" = "1"])
140
141 AC_CHECK_FUNCS([semtimedop])
142
143 PBX_HDLC=0
144 AC_MSG_CHECKING([for GENERIC_HDLC_VERSION version 4 in linux/hdlc.h])
145 AC_COMPILE_IFELSE(
146     [ AC_LANG_PROGRAM( [#include <linux/hdlc.h>],
147             [#if defined(GENERIC_HDLC_VERSION) && GENERIC_HDLC_VERSION >= 4
148                 int foo = 0;
149                 #else
150                 int foo = bar;
151                 #endif
152                 0])],
153         [AC_MSG_RESULT(yes)
154          PBX_HDLC=1],
155         [AC_MSG_RESULT(no)]
156 )
157 if test $PBX_HDLC = 0; then
158     AC_MSG_CHECKING([for GENERIC_HDLC_VERSION version 4 in linux/hdlc/ioctl.h])
159     AC_COMPILE_IFELSE(
160             [ AC_LANG_PROGRAM( [
161                     #include <sys/socket.h>
162                         #include <linux/if.h>],
163                         [#if defined(GENERIC_HDLC_VERSION) && GENERIC_HDLC_VERSION >= 4
164                         int foo = 0;
165                         #else
166                         int foo = bar;
167                         #endif
168                         0])],
169                 [AC_MSG_RESULT(yes)
170                  PBX_HDLC=1],
171                 [AC_MSG_RESULT(no)]
172         )
173 fi
174
175 if test "x${PBX_HDLC}" != "x1"; then
176    AC_MSG_NOTICE([GENERIC_HDLC_VERSION (version 4) not found, disabling sethdlc.])
177 fi
178
179 AC_SUBST(PBX_HDLC)
180 AM_CONDITIONAL([PBX_HDLC], [test "$PBX_HDLC" = "1"])
181
182 AC_ARG_WITH(selinux,
183         [AS_HELP_STRING([--with-selinux],
184                         [enable (with) / disable (without) SELinux])],
185         [USE_SELINUX=$withval],
186         [ if test ! -x /usr/sbin/sestatus; then 
187                 USE_SELINUX=no;
188           elif /usr/sbin/sestatus | grep "SELinux status:" | grep -q "enabled"; then
189                 USE_SELINUX=yes
190           fi
191         ]
192 )
193
194
195 AC_SUBST(USE_SELINUX)
196
197 # for asciidoc before ver. 7, the backend must be stated explicitly:
198 ASCIIDOC='asciidoc'
199 asciidoc_ver=`asciidoc --version 2>&1 | awk '/^asciidoc /{print $2}' | cut -d. -f 1 | head -n 1`
200 if test "$asciidoc_ver" != '' && test $asciidoc_ver -lt 7; then
201         ASCIIDOC="asciidoc -b xhtml"
202 fi
203 AC_SUBST(ASCIIDOC)
204
205 AC_ARG_WITH(ppp,
206             [AS_HELP_STRING([--with-ppp=PATH],[Use PPP support from PATH])],
207             [],
208             [with_ppp=check]
209             )
210 # somebody will fix that
211 default_ppp_path=/usr
212
213 case "$with_ppp" in
214         yes|check) ppp_path="$default_ppp_path";;
215         no) ppp_path='' ;;
216         *) ppp_path="$with_ppp" ;;
217 esac
218
219 level_file="$ppp_path/include/pppd/patchlevel.h"
220 PPP_VERSION=
221 if test "$ppp_path" != '' && test -r "$level_file"; then
222         PPPD_VERSION=`awk -F '"' '/VERSION/ { print $$2; }' $level_file`
223 fi
224
225 case "$with_ppp" in 
226         check|no) :;;
227         *) 
228         # If we asked explicitly for ppp support
229         if test "$PPPD_VERSION" = ''; then
230                 # but have not detected it
231                 AC_MSG_ERROR(failed to find pppd/patchlevel.h: no ppp support.)
232         fi
233         ;;
234 esac
235
236 AC_SUBST(PPPD_VERSION)
237 AM_CONDITIONAL([PPPD], [test "$PPPD_VERSION" != ''])
238
239 if test "x${PBX_DAHDI}" != "x1"; then
240    AC_MSG_NOTICE([***])
241    AC_MSG_NOTICE([*** Building this package requires DAHDI support. *** ])
242    AC_MSG_NOTICE([*** Please install the dahdi-linux package. ***])
243    AC_MSG_NOTICE([***])
244    exit 1
245 fi
246
247 if test "x${PBX_DAHDI23}" != "x1"; then
248    AC_MSG_NOTICE([***])
249    AC_MSG_NOTICE([*** Building this package requires DAHDI support (>= 2.3) *** ])
250    AC_MSG_NOTICE([*** Please install a recent dahdi-linux package. ***])
251    AC_MSG_NOTICE([***])
252    exit 1
253 fi
254
255 AC_SUBST(PPPD_VERSION)
256
257 AM_CONDITIONAL([PBX_USB], [test "$PBX_USB" = "1"])
258
259 # Taken from octasic-helper
260 AC_SUBST([USE_OCTASIC], [yes])
261 AM_CONDITIONAL([USE_OCTASIC], [test "$USE_OCTASIC" = 'yes'])
262 octasic_dir='$(top_srcdir)/xpp/oct612x'
263 AC_SUBST([OCTASIC_CFLAGS], ["-I$octasic_dir/include -I$octasic_dir/octdeviceapi -I$octasic_dir/octdeviceapi/oct6100api"])
264
265 AC_SUBST([TOOLSVERSION], m4_esyscmd([build_tools/make_version . dahdi/tools]))
266
267 AC_CONFIG_FILES([
268         makeopts
269         version.c
270         Makefile
271         doc/Makefile
272         hotplug/Makefile
273         ppp/Makefile
274         xpp/Makefile
275         xpp/oct612x/Makefile
276         xpp/perl_modules/Makefile
277         ])
278 AC_OUTPUT
279
280 AC_MSG_NOTICE(*** dahdi-tools build successfully configured ***)