configure.ac 11 KB
Newer Older
1 2 3 4
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
 
5
m4_define([short_version],
6 7 8
          m4_bpatsubst(m4_esyscmd([build_tools/make_version . dahdi/tools]),
                       [\([0-9.]*\)\(\w\|\W\)*],
                       [\1]))
9
AC_INIT([dahdi-tools], short_version, [www.asterisk.org])
10 11 12

# check existence of the package
AC_CONFIG_SRCDIR([dahdi_cfg.c])
13 14 15 16 17 18 19 20 21 22 23
AC_CONFIG_AUX_DIR([auxdir])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign subdir-objects])

build_version=`build_tools/make_version . dahdi/tools`
AC_SUBST([BUILD_VERSION], "$build_version")

# enable nice build output on automake1.11
m4_pattern_allow([AM_DEFAULT_VERBOSITY])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],[AM_DEFAULT_VERBOSITY=1])
AM_CONDITIONAL([SILENT_RULES], [test "$AM_DEFAULT_VERBOSITY" = '0'])
24 25 26 27

AC_COPYRIGHT("dahdi-tools")
AC_REVISION($Revision$)

28 29 30
# Preserve old defaults if called without --prefix or --prefix=/usr
#  prefix=/usr
#  sysconfdir=/etc
31

32 33 34 35 36 37 38 39 40 41 42 43
ac_default_prefix=/usr
if test "$prefix" = 'NONE' -o "$prefix" = '/usr'; then
	if test ${sysconfdir} = '${prefix}/etc'; then
	   sysconfdir=/etc
	fi
	if test ${mandir} = '${prefix}/man'; then
	   mandir=/usr/share/man
	fi

	if test ${localstatedir} = '${prefix}/var'; then
	     localstatedir=/var
	fi
44
fi
45 46
AC_SUBST([dahditoolsdir], ['${datadir}/dahdi'])
AC_SUBST([dahdiincludedir], ['${includedir}/dahdi'])
47

48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
# Where to install udev rules?
#  * Our default is $sysconfdir/udev/rules.d:
#    - This preserve legacy location.
#    - It doesn't write into modern vendor supplied location (/lib/udev/rules.d)
#    - It doesn't break "make distcheck" (where everything should be relative
#      to prefix.
#  * Packagers are encouraged to use --udevrules=/lib/udev/rules.d
#
m4_define([_UDEV_RULES_DIR_DEFAULT], [${sysconfdir}/udev/rules.d])dnl
AC_ARG_WITH(udevrules,
	[AS_HELP_STRING([--with-udevrules=PATH],
		[Location of UDEV rules @<:@default=]_UDEV_RULES_DIR_DEFAULT[@:>@])],
	[udevrulesdir=$withval],
	[udevrulesdir=]'_UDEV_RULES_DIR_DEFAULT'
)
AC_SUBST([udevrulesdir], "$udevrulesdir")
64

65 66 67 68 69 70 71 72 73
# specify output header file
AC_CONFIG_HEADER(autoconfig.h)

# This needs to be before any macros that use the C compiler
AC_GNU_SOURCE

AC_CHECK_TOOL([LD], [ld])

# Checks for programs.
74
AC_PROG_CXX
75 76
AC_PROG_CC
AC_PROG_CPP
77
AM_PROG_CC_C_O
78 79
AC_PROG_INSTALL
AC_PROG_LN_S
80 81
AC_PROG_MAKE_SET
AC_PROG_AWK
82
AC_PROG_LIBTOOL
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
AST_CHECK_GNU_MAKE

test_obj=conftest.o
AC_COMPILE_IFELSE(AC_LANG_SOURCE(),[
	BDFNAME=`LANG=C objdump -f $test_obj | grep -e "$test_obj:" | sed "s/.*file format \(.*\)/\1/"`
	BDFARCH=`LANG=C objdump -f $test_obj | grep -e "architecture:" | sed "s/.*ture: \(.*\),.*/\1/"`	   
],[])
AC_SUBST(BDFNAME)
AC_SUBST(BDFARCH)

# Set the default value of HOSTCC from CC if --host was not provided:
HOSTCC=${HOSTCC:=${CC}}
AC_SUBST(HOSTCC)

AC_PATH_PROG([GREP], [grep], :)
AC_PATH_PROG([SHELL], [sh], :)
AC_PATH_PROG([LN], [ln], :)

AC_PATH_PROG([WGET], [wget], :)
if test "${WGET}" != ":" ; then
  DOWNLOAD=${WGET}
else
  AC_PATH_PROG([FETCH], [fetch], [:])
  DOWNLOAD=${FETCH}
fi
AC_SUBST(DOWNLOAD)

AC_LANG(C)

112 113 114 115
AC_PATH_PROG([PERL], [perl])
if test "$PERL" = ''; then
	      AC_MSG_ERROR(perl is mandatory)
fi
116 117 118 119 120 121
# Where to install perl modules?
#  * Packagers are encouraged to use the result of "perl -V:vendorlib"
#  * Our default is:
#    - The result of "perl -V:sitelib" for our default prefix (/usr)
#    - The "$datadir/perl5" directory otherwise (e.g: during "make distcheck")
#
122
AC_MSG_CHECKING(for perl libdir)
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
m4_define([_PERL_LIBDIR_DEFAULT], [${datadir}/perl5])dnl
AC_ARG_WITH(perllib,
	[AS_HELP_STRING([--with-perllib=PATH],
		[Location of perl modules @<:@default=]_PERL_LIBDIR_DEFAULT[, or perl -V:sitelib@:>@])],
	[perllibdir=$withval],
	[
		if test "$prefix" = 'NONE' -o "$prefix" = '/usr'; then
			eval `"$PERL" -V:sitelib`
			perllibdir="$sitelib"
		else
			perllibdir='_PERL_LIBDIR_DEFAULT'
		fi
	]
)
AC_SUBST([perllibdir], "$perllibdir")
138 139 140
AC_MSG_RESULT([$perllibdir])
AM_CONDITIONAL([PERL], [test "$perllibdir" != ''])

141 142 143 144 145 146 147 148
AC_ARG_ENABLE(dev-mode,
	[  --enable-dev-mode    Turn on developer mode],
	[case "${enableval}" in
	      y|ye|yes) DAHDI_DEVMODE=yes ;;
	      n|no)  DAHDI_DEVMODE=no ;;
	      *) AC_MSG_ERROR(bad value ${enableval} for --enable-dev-mode)  ;;
	esac])
AC_SUBST(DAHDI_DEVMODE)
149
AM_CONDITIONAL([DAHDI_DEVMODE], [test "$DAHDI_DEVMODE" = 'yes'])
150 151 152 153 154 155 156 157 158 159 160

AC_MSG_CHECKING(for -Wdeclaration-after-statement support)
if $(${CC} -Wdeclaration-after-statement -S -o /dev/null -xc /dev/null > /dev/null 2>&1); then
	AC_MSG_RESULT(yes)
	DAHDI_DECLARATION_AFTER_STATEMENT=-Wdeclaration-after-statement
else
	AC_MSG_RESULT(no)
	DAHDI_DECLARATION_AFTER_STATEMENT=
fi
AC_SUBST(DAHDI_DECLARATION_AFTER_STATEMENT)

161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
# Checks for header files.
AC_CHECK_HEADERS([sys/soundcard.h linux/soundcard.h])
AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netinet/in.h stdint.h stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h unistd.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT8_T

# Checks for libraries.
AC_CHECK_LIB([m], [cos])
AC_CHECK_LIB([pthread], [pthread_create])

177 178 179
AST_EXT_LIB_SETUP([DAHDI], [DAHDI], [dahdi])
AST_EXT_LIB_SETUP([NEWT], [newt], [newt])
AST_EXT_LIB_SETUP([USB], [usb], [usb])
180
AST_EXT_LIB_SETUP([PCAP], [pcap], [pcap])
181 182 183 184 185 186

AST_C_DEFINE_CHECK([DAHDI], [DAHDI_CODE], [dahdi/user.h])
DAHDI23_DIR="${DAHDI_DIR}"
AST_C_DEFINE_CHECK([DAHDI23], [DAHDI_CONFIG_NTTE], [dahdi/user.h])
AST_EXT_LIB_CHECK([NEWT], [newt], [newtBell], [newt.h])
AST_EXT_LIB_CHECK([USB], [usb], [usb_init], [usb.h])
187 188 189 190 191 192
AST_EXT_LIB_CHECK([PCAP], [pcap], [pcap_compile], [pcap.h])

saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $DAHDI_INCLUDE"
AC_CHECK_DECL([DAHDI_TXMIRROR], [DAHDI_TXMIRROR=1], [DAHDI_TXMIRROR=0], [#include <dahdi/user.h>])
CPPFLAGS="$saved_CPPFLAGS"
193

194
AM_CONDITIONAL([PBX_NEWT], [test "$PBX_NEWT" = "1"])
195
AM_CONDITIONAL([PBX_PCAP], [test "$PBX_PCAP" = "1" -a "$DAHDI_TXMIRROR" = "1"])
196

197
AC_CHECK_FUNCS([semtimedop])
198 199 200
AC_CHECK_FUNCS([alarm bzero gettimeofday memset pow regcomp select socket strcasecmp strchr strdup strerror strrchr strstr strtol strtoul])
AC_FUNC_ERROR_AT_LINE
AC_FUNC_MALLOC
201

202 203 204 205 206 207 208 209 210 211 212 213
# What the user asked for? libusb/libusbx
AC_ARG_WITH([libusbx],
	[AS_HELP_STRING([--without-libusbx], [Disable libusbx @<:@default=check@:>@])],
	[],
	[with_libusbx=check])
AC_ARG_WITH([libusb],
	[AS_HELP_STRING([--without-libusb], [Disable libusb-0.1 @<:@default=check@:>@])],
	[],
	[with_libusb=check])

# LIBUSBX tests
have_libusbx=
214
AS_IF([test "$with_libusbx" != "no"],
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259
	[PKG_CHECK_MODULES([LIBUSBX], [libusb-1.0],
		[AC_CHECK_LIB([usb-1.0], [libusb_error_name],
			[
				have_libusbx="yes"
				AC_DEFINE([HAVE_LIBUSBX], [1], [Define to 1 if you have <libusb.h>.])
				AC_SUBST([PBX_USB], [1])
			], [
				if test "$with_libusbx" != "yes"; then
					AC_MSG_NOTICE([Ignoring old libusb-1.0, trying fallback to old libusb])
				fi
			])
		], [:])
	], [])

AS_IF([test "$with_libusbx" = "yes" -a "$have_libusbx" = ""],
	[AC_MSG_ERROR([No libusbx found (--with-libusbx was given)])])

# LIBUSB tests
have_libusb=
AS_IF([test "$with_libusb" != "no"],
	[AS_IF([test "$have_libusbx" != ""],
		[
			AS_IF([test "$with_libusbx" = "check"], [
				AC_MSG_NOTICE([Skipping LIBUSB tests (have good LIBUSBX)])
				])
		], [
			PKG_CHECK_MODULES([LIBUSB], [libusb],
				[
					have_libusb="yes"
					AC_SUBST([PBX_USB], [1])
				]
				[AC_DEFINE([HAVE_LIBUSB], [1], [Define to 1 if you have <usb.h>.])],
				[:]
				)
		])
	], [])

AS_IF([test "$with_libusb" = "yes" -a "$have_libusb" = ""],
	[AC_MSG_ERROR([No libusb found (--with-libusb was given)])])

AM_CONDITIONAL([LIBUSBX], [test "$have_libusbx" != ""])
AM_CONDITIONAL([LIBUSB], [test "$have_libusb" != ""])
AM_CONDITIONAL([PBX_USB], [test "$PBX_USB" = "1"])


260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296
PBX_HDLC=0
AC_MSG_CHECKING([for GENERIC_HDLC_VERSION version 4 in linux/hdlc.h])
AC_COMPILE_IFELSE(
    [ AC_LANG_PROGRAM( [#include <linux/hdlc.h>],
	    [#if defined(GENERIC_HDLC_VERSION) && GENERIC_HDLC_VERSION >= 4
		int foo = 0;
		#else
		int foo = bar;
		#endif
		0])],
	[AC_MSG_RESULT(yes)
	 PBX_HDLC=1],
	[AC_MSG_RESULT(no)]
)
if test $PBX_HDLC = 0; then
    AC_MSG_CHECKING([for GENERIC_HDLC_VERSION version 4 in linux/hdlc/ioctl.h])
    AC_COMPILE_IFELSE(
	    [ AC_LANG_PROGRAM( [
		    #include <sys/socket.h>
			#include <linux/if.h>],
			[#if defined(GENERIC_HDLC_VERSION) && GENERIC_HDLC_VERSION >= 4
			int foo = 0;
			#else
			int foo = bar;
			#endif
			0])],
		[AC_MSG_RESULT(yes)
		 PBX_HDLC=1],
		[AC_MSG_RESULT(no)]
	)
fi

if test "x${PBX_HDLC}" != "x1"; then
   AC_MSG_NOTICE([GENERIC_HDLC_VERSION (version 4) not found, disabling sethdlc.])
fi

AC_SUBST(PBX_HDLC)
297
AM_CONDITIONAL([PBX_HDLC], [test "$PBX_HDLC" = "1"])
298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352

AC_ARG_WITH(selinux,
	[AS_HELP_STRING([--with-selinux],
			[enable (with) / disable (without) SELinux])],
	[USE_SELINUX=$withval],
	[ if test ! -x /usr/sbin/sestatus; then 
	   	USE_SELINUX=no;
	  elif /usr/sbin/sestatus | grep "SELinux status:" | grep -q "enabled"; then
		USE_SELINUX=yes
	  fi
	]
)


AC_SUBST(USE_SELINUX)

# for asciidoc before ver. 7, the backend must be stated explicitly:
ASCIIDOC='asciidoc'
asciidoc_ver=`asciidoc --version 2>&1 | awk '/^asciidoc /{print $2}' | cut -d. -f 1 | head -n 1`
if test "$asciidoc_ver" != '' && test $asciidoc_ver -lt 7; then
	ASCIIDOC="asciidoc -b xhtml"
fi
AC_SUBST(ASCIIDOC)

AC_ARG_WITH(ppp,
	    [AS_HELP_STRING([--with-ppp=PATH],[Use PPP support from PATH])],
	    [],
	    [with_ppp=check]
	    )
# somebody will fix that
default_ppp_path=/usr

case "$with_ppp" in
	yes|check) ppp_path="$default_ppp_path";;
	no) ppp_path='' ;;
	*) ppp_path="$with_ppp" ;;
esac

level_file="$ppp_path/include/pppd/patchlevel.h"
PPP_VERSION=
if test "$ppp_path" != '' && test -r "$level_file"; then
	PPPD_VERSION=`awk -F '"' '/VERSION/ { print $$2; }' $level_file`
fi

case "$with_ppp" in 
	check|no) :;;
	*) 
	# If we asked explicitly for ppp support
	if test "$PPPD_VERSION" = ''; then
		# but have not detected it
		AC_MSG_ERROR(failed to find pppd/patchlevel.h: no ppp support.)
	fi
	;;
esac

Oron Peled's avatar
Oron Peled committed
353 354 355
AC_SUBST(PPPD_VERSION)
AM_CONDITIONAL([PPPD], [test "$PPPD_VERSION" != ''])

356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373
if test "x${PBX_DAHDI}" != "x1"; then
   AC_MSG_NOTICE([***])
   AC_MSG_NOTICE([*** Building this package requires DAHDI support. *** ])
   AC_MSG_NOTICE([*** Please install the dahdi-linux package. ***])
   AC_MSG_NOTICE([***])
   exit 1
fi

if test "x${PBX_DAHDI23}" != "x1"; then
   AC_MSG_NOTICE([***])
   AC_MSG_NOTICE([*** Building this package requires DAHDI support (>= 2.3) *** ])
   AC_MSG_NOTICE([*** Please install a recent dahdi-linux package. ***])
   AC_MSG_NOTICE([***])
   exit 1
fi

AC_SUBST(PPPD_VERSION)

374 375 376 377 378 379
# Taken from octasic-helper
AC_SUBST([USE_OCTASIC], [yes])
AM_CONDITIONAL([USE_OCTASIC], [test "$USE_OCTASIC" = 'yes'])
octasic_dir='$(top_srcdir)/xpp/oct612x'
AC_SUBST([OCTASIC_CFLAGS], ["-I$octasic_dir/include -I$octasic_dir/octdeviceapi -I$octasic_dir/octdeviceapi/oct6100api"])

380 381 382 383 384
AC_SUBST([TOOLSVERSION], m4_esyscmd([build_tools/make_version . dahdi/tools]))

AC_CONFIG_FILES([
	makeopts
	version.c
385
	Makefile
386
	doc/Makefile
387
	hotplug/Makefile
388 389
	ppp/Makefile
	xpp/Makefile
390
	xpp/xtalk/Makefile
391
	xpp/oct612x/Makefile
392
	xpp/perl_modules/Makefile
393
	])
394 395 396
AC_OUTPUT

AC_MSG_NOTICE(*** dahdi-tools build successfully configured ***)