automake: add basic libtool support
[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 # specify output header file
41 AC_CONFIG_HEADER(autoconfig.h)
42
43 # This needs to be before any macros that use the C compiler
44 AC_GNU_SOURCE
45
46 AC_CHECK_HEADERS([sys/soundcard.h linux/soundcard.h])
47
48 AC_CHECK_TOOL([LD], [ld])
49
50 # Checks for programs.
51 AC_PROG_CXX
52 AC_PROG_CC
53 AC_PROG_CPP
54 AM_PROG_CC_C_O
55 AC_PROG_INSTALL
56 AC_PROG_LN_S
57 AC_PROG_MAKE_SET
58 AC_PROG_AWK
59 AC_PROG_LIBTOOL
60 AST_CHECK_GNU_MAKE
61
62 test_obj=conftest.o
63 AC_COMPILE_IFELSE(AC_LANG_SOURCE(),[
64         BDFNAME=`LANG=C objdump -f $test_obj | grep -e "$test_obj:" | sed "s/.*file format \(.*\)/\1/"`
65         BDFARCH=`LANG=C objdump -f $test_obj | grep -e "architecture:" | sed "s/.*ture: \(.*\),.*/\1/"`    
66 ],[])
67 AC_SUBST(BDFNAME)
68 AC_SUBST(BDFARCH)
69
70 # Set the default value of HOSTCC from CC if --host was not provided:
71 HOSTCC=${HOSTCC:=${CC}}
72 AC_SUBST(HOSTCC)
73
74 AC_PATH_PROG([GREP], [grep], :)
75 AC_PATH_PROG([SHELL], [sh], :)
76 AC_PATH_PROG([LN], [ln], :)
77
78 AC_PATH_PROG([WGET], [wget], :)
79 if test "${WGET}" != ":" ; then
80   DOWNLOAD=${WGET}
81 else
82   AC_PATH_PROG([FETCH], [fetch], [:])
83   DOWNLOAD=${FETCH}
84 fi
85 AC_SUBST(DOWNLOAD)
86
87 AC_LANG(C)
88
89 AC_ARG_ENABLE(dev-mode,
90         [  --enable-dev-mode    Turn on developer mode],
91         [case "${enableval}" in
92               y|ye|yes) DAHDI_DEVMODE=yes ;;
93               n|no)  DAHDI_DEVMODE=no ;;
94               *) AC_MSG_ERROR(bad value ${enableval} for --enable-dev-mode)  ;;
95         esac])
96 AC_SUBST(DAHDI_DEVMODE)
97
98 AC_MSG_CHECKING(for -Wdeclaration-after-statement support)
99 if $(${CC} -Wdeclaration-after-statement -S -o /dev/null -xc /dev/null > /dev/null 2>&1); then
100         AC_MSG_RESULT(yes)
101         DAHDI_DECLARATION_AFTER_STATEMENT=-Wdeclaration-after-statement
102 else
103         AC_MSG_RESULT(no)
104         DAHDI_DECLARATION_AFTER_STATEMENT=
105 fi
106 AC_SUBST(DAHDI_DECLARATION_AFTER_STATEMENT)
107
108 AST_EXT_LIB_SETUP([DAHDI], [DAHDI], [dahdi])
109 AST_EXT_LIB_SETUP([NEWT], [newt], [newt])
110 AST_EXT_LIB_SETUP([USB], [usb], [usb])
111
112 AST_C_DEFINE_CHECK([DAHDI], [DAHDI_CODE], [dahdi/user.h])
113 DAHDI23_DIR="${DAHDI_DIR}"
114 AST_C_DEFINE_CHECK([DAHDI23], [DAHDI_CONFIG_NTTE], [dahdi/user.h])
115 AST_EXT_LIB_CHECK([NEWT], [newt], [newtBell], [newt.h])
116 AST_EXT_LIB_CHECK([USB], [usb], [usb_init], [usb.h])
117
118 AC_CHECK_FUNCS([semtimedop])
119
120 PBX_HDLC=0
121 AC_MSG_CHECKING([for GENERIC_HDLC_VERSION version 4 in linux/hdlc.h])
122 AC_COMPILE_IFELSE(
123     [ AC_LANG_PROGRAM( [#include <linux/hdlc.h>],
124             [#if defined(GENERIC_HDLC_VERSION) && GENERIC_HDLC_VERSION >= 4
125                 int foo = 0;
126                 #else
127                 int foo = bar;
128                 #endif
129                 0])],
130         [AC_MSG_RESULT(yes)
131          PBX_HDLC=1],
132         [AC_MSG_RESULT(no)]
133 )
134 if test $PBX_HDLC = 0; then
135     AC_MSG_CHECKING([for GENERIC_HDLC_VERSION version 4 in linux/hdlc/ioctl.h])
136     AC_COMPILE_IFELSE(
137             [ AC_LANG_PROGRAM( [
138                     #include <sys/socket.h>
139                         #include <linux/if.h>],
140                         [#if defined(GENERIC_HDLC_VERSION) && GENERIC_HDLC_VERSION >= 4
141                         int foo = 0;
142                         #else
143                         int foo = bar;
144                         #endif
145                         0])],
146                 [AC_MSG_RESULT(yes)
147                  PBX_HDLC=1],
148                 [AC_MSG_RESULT(no)]
149         )
150 fi
151
152 if test "x${PBX_HDLC}" != "x1"; then
153    AC_MSG_NOTICE([GENERIC_HDLC_VERSION (version 4) not found, disabling sethdlc.])
154 fi
155
156 AC_SUBST(PBX_HDLC)
157
158 AC_ARG_WITH(selinux,
159         [AS_HELP_STRING([--with-selinux],
160                         [enable (with) / disable (without) SELinux])],
161         [USE_SELINUX=$withval],
162         [ if test ! -x /usr/sbin/sestatus; then 
163                 USE_SELINUX=no;
164           elif /usr/sbin/sestatus | grep "SELinux status:" | grep -q "enabled"; then
165                 USE_SELINUX=yes
166           fi
167         ]
168 )
169
170
171 AC_SUBST(USE_SELINUX)
172
173 # for asciidoc before ver. 7, the backend must be stated explicitly:
174 ASCIIDOC='asciidoc'
175 asciidoc_ver=`asciidoc --version 2>&1 | awk '/^asciidoc /{print $2}' | cut -d. -f 1 | head -n 1`
176 if test "$asciidoc_ver" != '' && test $asciidoc_ver -lt 7; then
177         ASCIIDOC="asciidoc -b xhtml"
178 fi
179 AC_SUBST(ASCIIDOC)
180
181 AC_ARG_WITH(ppp,
182             [AS_HELP_STRING([--with-ppp=PATH],[Use PPP support from PATH])],
183             [],
184             [with_ppp=check]
185             )
186 # somebody will fix that
187 default_ppp_path=/usr
188
189 case "$with_ppp" in
190         yes|check) ppp_path="$default_ppp_path";;
191         no) ppp_path='' ;;
192         *) ppp_path="$with_ppp" ;;
193 esac
194
195 level_file="$ppp_path/include/pppd/patchlevel.h"
196 PPP_VERSION=
197 if test "$ppp_path" != '' && test -r "$level_file"; then
198         PPPD_VERSION=`awk -F '"' '/VERSION/ { print $$2; }' $level_file`
199 fi
200
201 case "$with_ppp" in 
202         check|no) :;;
203         *) 
204         # If we asked explicitly for ppp support
205         if test "$PPPD_VERSION" = ''; then
206                 # but have not detected it
207                 AC_MSG_ERROR(failed to find pppd/patchlevel.h: no ppp support.)
208         fi
209         ;;
210 esac
211
212 if test "x${PBX_DAHDI}" != "x1"; then
213    AC_MSG_NOTICE([***])
214    AC_MSG_NOTICE([*** Building this package requires DAHDI support. *** ])
215    AC_MSG_NOTICE([*** Please install the dahdi-linux package. ***])
216    AC_MSG_NOTICE([***])
217    exit 1
218 fi
219
220 if test "x${PBX_DAHDI23}" != "x1"; then
221    AC_MSG_NOTICE([***])
222    AC_MSG_NOTICE([*** Building this package requires DAHDI support (>= 2.3) *** ])
223    AC_MSG_NOTICE([*** Please install a recent dahdi-linux package. ***])
224    AC_MSG_NOTICE([***])
225    exit 1
226 fi
227
228 AC_SUBST(PPPD_VERSION)
229
230 AC_SUBST([TOOLSVERSION], m4_esyscmd([build_tools/make_version . dahdi/tools]))
231
232 AC_CONFIG_FILES([
233         makeopts
234         version.c
235         Makefile
236         ppp/Makefile
237         xpp/Makefile
238         ])
239 AC_OUTPUT
240
241 AC_MSG_NOTICE(*** dahdi-tools build successfully configured ***)