configure.ac 37.5 KB
Newer Older
aymeric's avatar
aymeric committed
1
dnl Process this file with autoconf to produce a configure script.
François Grisez's avatar
François Grisez committed
2
AC_INIT([mediastreamer],[2.11.1])
aymeric's avatar
aymeric committed
3 4 5 6

AC_MSG_NOTICE([$PACKAGE_NAME-$PACKAGE_VERSION		A mediastreaming library for telephony application.])
AC_MSG_NOTICE([licensed under the terms of the General Public License (GPL)])

7
dnl do not put anything else before AC_PROG_CC unless checking if macro still work for clang
jehan's avatar
jehan committed
8 9 10
AC_PROG_CXX(["xcrun clang++" g++])
AC_PROG_CC(["xcrun clang" gcc])
AC_PROG_OBJC(["xcrun clang" gcc])
aymeric's avatar
aymeric committed
11 12 13 14 15 16 17 18
AC_CANONICAL_SYSTEM

dnl Source packaging numbers
MEDIASTREAMER_MAJOR_VERSION=$(echo $PACKAGE_VERSION | cut -d. -f1)
MEDIASTREAMER_MINOR_VERSION=$(echo $PACKAGE_VERSION | cut -d. -f2)
MEDIASTREAMER_MICRO_VERSION=$(echo $PACKAGE_VERSION | cut -d. -f3)
MEDIASTREAMER_EXTRA_VERSION=$(echo $PACKAGE_VERSION | cut -d. -f4)

19
LIBMEDIASTREAMER_SO_CURRENT=4 dnl increment this number when you add/change/remove an interface
Simon Morlat's avatar
Simon Morlat committed
20
LIBMEDIASTREAMER_SO_REVISION=0 dnl increment this number when you change source code, without changing interfaces; set to 0 when incrementing CURRENT
aymeric's avatar
aymeric committed
21 22 23 24 25 26 27 28 29
LIBMEDIASTREAMER_SO_AGE=0 dnl increment this number when you add an interface, set to 0 if you remove an interface

LIBMEDIASTREAMER_SO_VERSION=$LIBMEDIASTREAMER_SO_CURRENT:$LIBMEDIASTREAMER_SO_REVISION:$LIBMEDIASTREAMER_SO_AGE
MEDIASTREAMER_VERSION=${MEDIASTREAMER_MAJOR_VERSION}.${MEDIASTREAMER_MINOR_VERSION}.${MEDIASTREAMER_MICRO_VERSION}

if test -n "$MEDIASTREAMER_EXTRA_VERSION" ; then
	MEDIASTREAMER_VERSION="${MEDIASTREAMER_VERSION}.${MEDIASTREAMER_EXTRA_VERSION}"
fi

30
AC_SUBST(LIBMEDIASTREAMER_SO_CURRENT, $LIBMEDIASTREAMER_SO_CURRENT)
aymeric's avatar
aymeric committed
31 32 33 34 35 36 37
AC_SUBST(LIBMEDIASTREAMER_SO_VERSION)
AC_SUBST(MEDIASTREAMER_VERSION)

PACKAGE=mediastreamer

OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
AC_MSG_RESULT([Building Package on ${OS}])
38
AM_INIT_AUTOMAKE([1.9 tar-pax subdir-objects])
39
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
Yann Diorcet's avatar
Yann Diorcet committed
40
AC_SUBST([docdir], [${datadir}/doc])
aymeric's avatar
aymeric committed
41 42 43 44 45 46
AC_CONFIG_HEADERS(mediastreamer-config.h)
AC_DEFINE_UNQUOTED(MEDIASTREAMER_MAJOR_VERSION,$MEDIASTREAMER_MAJOR_VERSION, [major version])
AC_DEFINE_UNQUOTED(MEDIASTREAMER_MINOR_VERSION,$MEDIASTREAMER_MINOR_VERSION, [minor version])
AC_DEFINE_UNQUOTED(MEDIASTREAMER_MICRO_VERSION,$MEDIASTREAMER_MICRO_VERSION, [micro version])
AC_DEFINE_UNQUOTED(MEDIASTREAMER_VERSION,"$MEDIASTREAMER_VERSION",[MEDIASTREAMER version number])

47 48
MS_PUBLIC_CFLAGS=

49 50
gl_LD_OUTPUT_DEF

aymeric's avatar
aymeric committed
51
AC_MSG_CHECKING([warning make an error on compilation])
52

aymeric's avatar
aymeric committed
53
AC_ARG_ENABLE(strict,
54 55 56
	AC_HELP_STRING([--enable-strict], [Build with stricter options @<:@yes@:>@]),
	[strictness="${enableval}"],
	[strictness=yes]
aymeric's avatar
aymeric committed
57
)
58

59 60 61
STRICT_OPTIONS="-Wall -Wuninitialized"
STRICT_OPTIONS_CC="-Wdeclaration-after-statement "
STRICT_OPTIONS_CXX=""
62

jehan's avatar
jehan committed
63 64 65
#for clang

case $CC in
66 67
	*clang*)
		STRICT_OPTIONS="$STRICT_OPTIONS -Qunused-arguments "
68 69 70
		#disabled due to wrong optimization false positive with small string
		#(cf. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35903)
		STRICT_OPTIONS="$STRICT_OPTIONS -Wno-array-bounds "
71
	;;
jehan's avatar
jehan committed
72
esac
aymeric's avatar
aymeric committed
73

74 75 76 77 78 79 80 81 82 83
# because Darwin's gcc is actually clang, we need to check it...
case "$target_os" in
	*darwin*)
	STRICT_OPTIONS="$STRICT_OPTIONS -Wno-error=unknown-warning-option -Qunused-arguments -Wno-tautological-compare -Wno-unused-function "
	#disabled due to wrong optimization false positive with small string
	#(cf. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35903)
	STRICT_OPTIONS="$STRICT_OPTIONS -Wno-array-bounds "
	;;
esac

84 85 86 87
if test "$strictness" = "yes" ; then
	STRICT_OPTIONS="$STRICT_OPTIONS -Werror"
	CFLAGS="$CFLAGS -fno-strict-aliasing"
fi
88
AC_SUBST(STRICT_OPTIONS)
89 90
AC_SUBST(STRICT_OPTIONS_CC)
AC_SUBST(STRICT_OPTIONS_CXX)
aymeric's avatar
aymeric committed
91

92
dnl enable timestamp support
93
AC_ARG_ENABLE(ntp-timestamp,
Yann Diorcet's avatar
Yann Diorcet committed
94 95 96 97 98 99 100 101
	[AS_HELP_STRING([--enable-ntp-timestamp], [Turn on NTP timestamping on received packet (default=no)])],
	[case "${enableval}" in
		yes)	ntptimestamp=true;;
		no)	ntptimestamp=false;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-ntp-timestamp) ;;
	esac],
	[ntptimestamp=false]
)
aymeric's avatar
aymeric committed
102

103

Simon Morlat's avatar
Simon Morlat committed
104 105 106 107 108 109
AC_CONFIG_MACRO_DIR([m4])
LT_INIT([win32-dll shared disable-static])


AC_SUBST([LIBTOOL_DEPS])

aymeric's avatar
aymeric committed
110 111 112 113 114
if test "$GCC" != "yes" ; then
	case $target_os in
		*hpux*)
			dnl we are probably using HPUX cc compiler, so add a +O2 to CFLAGS
			CFLAGS="$CFLAGS +O2 -g "
Yann Diorcet's avatar
Yann Diorcet committed
115
		;;
aymeric's avatar
aymeric committed
116 117
	esac
else
118
	CFLAGS="$CFLAGS -Wall -fdiagnostics-show-option"
119 120
	OBJCFLAGS="$OBJCFLAGS -Wall"
	CXXFLAGS="$CXXFLAGS -Wall"
aymeric's avatar
aymeric committed
121 122
fi

Simon Morlat's avatar
Simon Morlat committed
123
AC_ARG_ENABLE([debug],
Yann Diorcet's avatar
Yann Diorcet committed
124 125 126 127
	AS_HELP_STRING([--enable-debug=@<:@yes/no@:>@],[enables the display of traces showing the execution of the library. @<:@default=yes@:>@]),
	[],
	[enable_debug=no]
)
128

Simon Morlat's avatar
Simon Morlat committed
129 130 131

AS_CASE([$enable_debug],
		[yes],[
132 133 134
			CFLAGS="$CFLAGS -g -O0 -DDEBUG"
			CXXFLAGS="$CXXFLAGS -g -O0 -DDEBUG"
			OBJCFLAGS="$OBJCFLAGS -g -O0 -DDEBUG"
Simon Morlat's avatar
Simon Morlat committed
135 136 137 138 139 140 141
		],
		[no],
		[
			case "$CFLAGS" in
				*-O*)
				;;
				*)
Yann Diorcet's avatar
Yann Diorcet committed
142 143
					CFLAGS="$CFLAGS -O2 -g"
					CXXFLAGS="$CXXFLAGS -O2 -g"
Yann Diorcet's avatar
Yann Diorcet committed
144
					OBJCFLAGS="$OBJCFLAGS -O2 -g"
Simon Morlat's avatar
Simon Morlat committed
145 146 147 148
				;;
			esac
		],
		[AC_MSG_ERROR([Bad value ($enable_debug) for --enable-debug. Valid values are yes or no.])])
aymeric's avatar
aymeric committed
149

Simon Morlat's avatar
Simon Morlat committed
150 151 152 153 154 155 156 157 158 159 160 161
AC_ARG_ENABLE(non-free-codecs,
	AC_HELP_STRING([--enable-non-free-codecs], [Include non-free codecs in build @<:@yes@:>@]),
	[non_free_codecs="${enableval}"],
	[non_free_codecs=yes]
)

if test "$non_free_codecs" = "yes" ; then
	AC_DEFINE(HAVE_NON_FREE_CODECS, 1, [whether non free codecs are allowed in the build])
else
	AC_DEFINE(HAVE_NON_FREE_CODECS, 0, [whether non free codecs are allowed in the build])
fi

aymeric's avatar
aymeric committed
162 163 164 165 166 167 168 169 170 171 172 173 174
dnl Checks for header files.
AC_HEADER_STDC

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_HEADER_TIME
AC_WORDS_BIGENDIAN
if test x$ac_cv_c_bigendian = xyes ; then
	CFLAGS="$CFLAGS -D_BIGENDIAN "
fi

macosx_found=no
Jehan Monnier's avatar
Jehan Monnier committed
175
mingw32ce_found=no
jehan's avatar
jehan committed
176
ios_found=no
aymeric's avatar
aymeric committed
177 178

dnl add thread flags
Simon Morlat's avatar
Simon Morlat committed
179
case $host in
180
	i386-apple*|armv6-apple*|armv7-apple*|armv7s-apple*|aarch64-apple*|arm64-apple*|*-darwin.ios)
181
		ios_found=yes
Yann Diorcet's avatar
Yann Diorcet committed
182
	;;
jehan's avatar
jehan committed
183
	x86_64-apple*|i686-apple*)
184
		macosx_found=yes
185
		OBJCFLAGS="$OBJCFLAGS -Wno-error=deprecated-declarations"
186
	;;
187
  	*mingw32ce)
188 189
		CFLAGS="$CFLAGS -D_WIN32_WINNT=0x0501  -D_WIN32_WCE  -DORTP_STATIC"
		CXXFLAGS="$CXXFLAGS -D_WIN32_WINNT=0x0501 -DORTP_STATIC  -D_WIN32_WCE"
190
dnl ORTP_STATIC to tell ortp not to export its variable with dllexport, as if we were building statically, or dynamically on linux
Yann Diorcet's avatar
Yann Diorcet committed
191
	  	LIBS="$LIBS -lws2"
192
		mingw_found=yes
Jehan Monnier's avatar
Jehan Monnier committed
193
		mingw32ce_found=yes
Yann Diorcet's avatar
Yann Diorcet committed
194
	;;
195
	*mingw*)
196 197 198
		dnl Workaround for mingw, whose compiler does not check in /usr/include ...
		CPPFLAGS="$CPPFLAGS -I/usr/include"
		LDFLAGS="$LDFLAGS -L/usr/lib"
199 200
		CFLAGS="$CFLAGS -D_WIN32_WINNT=0x0501 -DORTP_STATIC"
		CXXFLAGS="$CXXFLAGS -D_WIN32_WINNT=0x0501 -DORTP_STATIC"
201 202 203 204
dnl ORTP_STATIC to tell ortp not to export its variable with dllexport, as if we were building statically, or dynamically on linux
		LIBS="$LIBS -lws2_32 -lwinmm "
		mingw_found=yes
	;;
Ghislain MARY's avatar
Ghislain MARY committed
205 206
	*nto-qnx*)
	;;
Yann Diorcet's avatar
Yann Diorcet committed
207 208 209 210 211 212
	*)
		MSPLUGINS_CFLAGS="-pthread"
		MSPLUGINS_LIBS="-shared -pthread"
		CFLAGS="$CFLAGS -pthread -D_REENTRANT"
		LIBS="$LIBS -pthread -lpthread"
	;;
aymeric's avatar
aymeric committed
213 214
esac

215 216 217 218
if test "$macosx_found" == "yes" ; then
	LIBS="$LIBS -framework CoreFoundation -framework AudioToolbox -framework CoreAudio -framework AppKit"
fi
if test "$ios_found" == "yes" ; then
219
	LIBS="$LIBS -framework CoreFoundation -framework AudioToolbox -framework CoreAudio -framework Foundation -framework QuartzCore -framework OpenGLES -framework UIKit -framework AVFoundation"
220
fi
Yann Diorcet's avatar
Yann Diorcet committed
221

Simon Morlat's avatar
Simon Morlat committed
222 223 224 225 226 227
dnl localization tools
IT_PROG_INTLTOOL([0.40], [no-xml])


GETTEXT_PACKAGE="mediastreamer"
AC_SUBST([GETTEXT_PACKAGE])
Yann Diorcet's avatar
Yann Diorcet committed
228
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[name of the gettext domain. Used in the call to 'bindtextdomain()'])
Simon Morlat's avatar
Simon Morlat committed
229 230
if test "$mingw_found" != "yes" ; then
	dnl gettext macro does not work properly under mingw. And we want to use the one provided by GTK.
Yann Diorcet's avatar
Yann Diorcet committed
231
	CPPFLAGS_save=$CPPFLAGS
Simon Morlat's avatar
Simon Morlat committed
232
	AM_GNU_GETTEXT([external])
233
	AC_SUBST(INTLLIBS)
Yann Diorcet's avatar
Yann Diorcet committed
234
	CPPFLAGS=$CPPFLAGS_save
Simon Morlat's avatar
Simon Morlat committed
235 236
	LIBS="$LIBS $LIBINTL"
else
237 238 239
	if test "$USE_NLS" = "yes" ; then
		AC_DEFINE(ENABLE_NLS,1,[Tells whether localisation is possible])
		AC_DEFINE(HAVE_GETTEXT,1,[Tells wheter localisation is possible])
Simon Morlat's avatar
Simon Morlat committed
240
		LIBS="$LIBS -L/usr/lib -lintl"
241
	fi
Simon Morlat's avatar
Simon Morlat committed
242 243
fi

aymeric's avatar
aymeric committed
244
AM_CONDITIONAL(BUILD_MACOSX, test x$macosx_found = xyes)
jehan's avatar
jehan committed
245
AM_CONDITIONAL(BUILD_IOS, test x$ios_found = xyes)
aymeric's avatar
aymeric committed
246

Yann Diorcet's avatar
Yann Diorcet committed
247 248 249 250 251 252 253 254 255 256 257
AC_CONFIG_COMMANDS([libtool-hacking],
	[if test "$mingw_found" = "yes" ; then
		echo "Hacking libtool to work with mingw..."
		sed -e 's/\*\" \$a_deplib \"\*/\*/' < ./libtool > libtool.tmp
		cp -f ./libtool.tmp ./libtool
		rm -f ./libtool.tmp
	else
		echo "No need to hack libtool."
	fi],
	[mingw_found=$mingw_found]
)
258 259


260 261
dnl prefer fixed point computations
AC_ARG_ENABLE(fixed_point,
Yann Diorcet's avatar
Yann Diorcet committed
262 263 264 265 266 267 268 269 270
	[AS_HELP_STRING([--enable-fixed-point=@<:@yes/no/guess@:>@], [Turn on fixed point computations (default=guess)])],
	[case "${enableval}" in
		yes)	fixed_point=true;;
		no)	fixed_point=false;;
		guess)	fixed_point=guess;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-fixed-point) ;;
	esac],
	[fixed_point=guess]
)
271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286

if test "$fixed_point" = "guess" ; then
	AC_MSG_CHECKING([whether fixed point arithmetic is preferred])
	case ${target_cpu}${host_cpu} in
		*bfin*)
			fixed_point=true
		;;
		*arm*)
			fixed_point=true
		;;
		*)
			fixed_point=false
		;;
	esac
	AC_MSG_RESULT([$fixed_point])
fi
287

288

289 290 291 292 293
if test x$fixed_point = xtrue ; then
	MS_PUBLIC_CFLAGS="$MS_PUBLIC_CFLAGS -DMS_FIXED_POINT"
fi


smorlat's avatar
??  
smorlat committed
294 295 296
dnl initialize pkg-config so that we can use it within if else fi statements.
PKG_PROG_PKG_CONFIG()

aymeric's avatar
aymeric committed
297 298 299 300 301 302 303 304 305
AC_SUBST(MSPLUGINS_CFLAGS)
AC_SUBST(MSPLUGINS_LIBS)

dnl	*********************************
dnl	various checks for soundcard apis
dnl	*********************************

found_sound=no

306 307 308 309
if test x$mingw_found = xyes ; then
	found_sound=yes
fi

310
AC_ARG_ENABLE(sound,
Yann Diorcet's avatar
Yann Diorcet committed
311 312 313 314 315 316 317 318
	[AS_HELP_STRING([--disable-sound], [Turn off all possible sound backend (default=no)])],
	[case "${enableval}" in
		yes)	use_sound=true ;;
		no)	use_sound=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-sound) ;;
	esac],
	[use_sound=true]
)
319

smorlat's avatar
smorlat committed
320
AC_ARG_ENABLE(oss,
Yann Diorcet's avatar
Yann Diorcet committed
321 322 323 324 325 326 327 328
	[AS_HELP_STRING([--enable-oss], [Enable oss support])],
	[case "${enableval}" in
		yes)	oss=true ;;
		no)	oss=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-oss) ;;
	esac],
	[oss=$use_sound]
)
smorlat's avatar
smorlat committed
329 330

if "$oss" = "true"; then
Yann Diorcet's avatar
Yann Diorcet committed
331 332 333 334 335 336 337 338 339
	AC_CHECK_HEADERS(soundcard.h sys/soundcard.h machine/soundcard.h sys/audio.h)
	if test "${ac_cv_header_sys_soundcard_h}" = "yes" || \
	   test "${ac_cv_header_soundcard_h}" = "yes" || \
	   test "${ac_cv_header_sys_audio_h}" = "yes" || \
	   test "${ac_cv_header_machine_soundcard_h}" = "yes"; then
		found_sound=yes
	else
		oss=false
	fi
smorlat's avatar
smorlat committed
340
fi
aymeric's avatar
aymeric committed
341

342
AM_CONDITIONAL(BUILD_OSS, test x$oss = xtrue)
aymeric's avatar
aymeric committed
343 344 345

dnl conditionnal build of ALSA support
AC_ARG_ENABLE(alsa,
Yann Diorcet's avatar
Yann Diorcet committed
346 347 348 349 350 351 352 353
	[AS_HELP_STRING([--enable-alsa], [Turn on alsa native support compiling])],
	[case "${enableval}" in
		yes)	alsa=true ;;
		no)	alsa=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-alsa) ;;
	esac],
	[alsa=$use_sound]
)
aymeric's avatar
aymeric committed
354 355 356 357 358 359 360

if test "$alsa" = "true"; then
	AC_CHECK_HEADERS(alsa/asoundlib.h,
		[ AC_CHECK_LIB(asound,snd_pcm_open,
			[ ALSA_LIBS="-lasound"
			  found_sound=yes
			AC_DEFINE(__ALSA_ENABLED__,1,[defined if alsa support is available])
361
			alsa_enabled=true
aymeric's avatar
aymeric committed
362 363 364 365 366 367 368 369
			])
		]
	)
fi
AC_SUBST(ALSA_LIBS)

AM_CONDITIONAL(BUILD_ALSA, test x$alsa_enabled = xtrue)

370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393
dnl conditionnal build of QSA support
AC_ARG_ENABLE(qsa,
	[AS_HELP_STRING([--enable-qsa], [Turn on QSA (QNX Sound Architecture) support])],
	[case "${enableval}" in
		yes)	qsa=true ;;
		no)	qsa=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-qsa) ;;
	esac],
	[qsa=$false]
)
if test "$qsa" = "true"; then
	AC_CHECK_HEADERS(sys/asoundlib.h,
		[ AC_CHECK_LIB(asound, snd_pcm_open,
			[ QSA_LIBS="-lasound"
			  found_sound=yes
			AC_DEFINE(__QSA_ENABLED__, 1, [defined if QSA support is available])
			qsa_enabled=true
			])
		]
	)
fi
AC_SUBST(QSA_LIBS)
AM_CONDITIONAL(BUILD_QSA, test x$qsa_enabled = xtrue)

aymeric's avatar
aymeric committed
394 395

AC_ARG_ENABLE(artsc,
Yann Diorcet's avatar
Yann Diorcet committed
396 397 398 399 400 401 402 403
	[AS_HELP_STRING([--enable-artsc], [Turn on artsc (KDE<4) sound input/output (default=no)])],
	[case "${enableval}" in
		yes)	artsc=true ;;
		no)	artsc=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-artsc) ;;
	esac],
	[artsc=false]
)
aymeric's avatar
aymeric committed
404 405 406 407 408 409 410 411 412 413 414 415

arts_enabled=false

if test "$artsc" = "true" ; then
	dnl check for arts (kde sound daemon) support
	PKG_CHECK_MODULES(ARTS, [artsc],[
		dnl New detection
		arts_enabled=true
	],[
		dnl Old detection
		if test x$artsc = xtrue ; then
			AC_CHECK_HEADERS(kde/artsc/artsc.h,
416
				[ AC_CHECK_LIB(artsc,arts_init,
aymeric's avatar
aymeric committed
417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434
					[ ARTS_LIBS="-lartsc"
					arts_enabled=true
					])
				]
			)
		fi
		AC_SUBST(ARTS_LIBS)
	])
fi

if test x$arts_enabled = xtrue; then
	found_sound=yes
	AC_DEFINE(__ARTS_ENABLED__,1,[defined if arts support is available])
fi

AM_CONDITIONAL(BUILD_ARTS, test x$arts_enabled = xtrue)

AC_ARG_ENABLE(portaudio,
Yann Diorcet's avatar
Yann Diorcet committed
435 436 437 438 439 440 441 442
	[AS_HELP_STRING([--enable-portaudio], [Turn on portaudio native support compiling (default=no)])],
	[case "${enableval}" in
		yes)	portaudio=true ;;
		no)	portaudio=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-portaudio) ;;
	esac],
	[portaudio=false]
)
aymeric's avatar
aymeric committed
443 444 445 446

if test "$portaudio" = "true"; then
	AC_CHECK_HEADERS(portaudio.h,
		[ AC_CHECK_LIB(portaudio,Pa_Initialize,
Yann Diorcet's avatar
Yann Diorcet committed
447 448
			[PORTAUDIO_LIBS="-lportaudio"
			found_sound=yes
aymeric's avatar
aymeric committed
449
			AC_DEFINE(__PORTAUDIO_ENABLED__,1,[defined if portaudio support is available])
Yann Diorcet's avatar
Yann Diorcet committed
450 451
			portaudio_enabled=true]
			)
aymeric's avatar
aymeric committed
452 453 454 455 456 457 458 459
		]
	)
fi

AC_SUBST(PORTAUDIO_LIBS)
AM_CONDITIONAL(BUILD_PORTAUDIO, test x$portaudio_enabled = xtrue)

AC_ARG_ENABLE(macsnd,
Yann Diorcet's avatar
Yann Diorcet committed
460 461 462 463 464 465 466 467
	[AS_HELP_STRING([--enable-macsnd], [Turn on MAC OS X Audio Units sound support])],
	[case "${enableval}" in
		yes)	macsnd=true ;;
		no)	macsnd=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-macsnd) ;;
	esac],
	[macsnd=$use_sound]
)
aymeric's avatar
aymeric committed
468

Simon Morlat's avatar
Simon Morlat committed
469
macaqsnd_default=no
470 471 472
if test "$ios_found" = "yes" ; then
	macaqsnd_default=true;
fi
Simon Morlat's avatar
Simon Morlat committed
473

aymeric's avatar
aymeric committed
474
AC_ARG_ENABLE(macaqsnd,
Yann Diorcet's avatar
Yann Diorcet committed
475 476 477 478 479 480 481 482
	[AS_HELP_STRING([--enable-macaqsnd], [Turn on native MAC OS X Audio Queue sound support (default=no)])],
	[case "${enableval}" in
		yes)	macaqsnd=true ;;
		no)	macaqsnd=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-macaqsnd) ;;
	esac],
	[macaqsnd=$macaqsnd_default]
)
483 484 485 486 487

if test "$macosx_found" = "yes" ; then
	if test "$macsnd" = "true"; then
		AC_DEFINE(__MACSND_ENABLED__,1,[defined if native macosx sound support is available])
		macsnd_enabled=true
jehan's avatar
jehan committed
488
		LIBS="$LIBS -framework Carbon -framework AudioUnit"
489 490
		found_sound=yes
	fi
aymeric's avatar
aymeric committed
491 492
fi

493 494
if test "$macaqsnd" = "true"; then
	AC_DEFINE(__MAC_AQ_ENABLED__,1,[defined if native macosx AQ sound support is available])
495
	found_sound=yes
496
	macaqsnd=true
497 498
fi

499
AM_CONDITIONAL(BUILD_MACSND, test x$macsnd_enabled = xtrue)
smorlat's avatar
smorlat committed
500
AM_CONDITIONAL(BUILD_MACAQSND, test x$macaqsnd = xtrue)
501
AM_CONDITIONAL(BUILD_IOSIOUNIT, test x$ios_found = xyes)
smorlat's avatar
smorlat committed
502

503
AC_ARG_ENABLE(pulseaudio,
Yann Diorcet's avatar
Yann Diorcet committed
504 505 506 507 508 509 510 511
	[AS_HELP_STRING([--disable-pulseaudio], [Disable pulseaudio support])],
	[case "${enableval}" in
		yes)	pulseaudio=true ;;
		no)	pulseaudio=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-pulseaudio) ;;
	esac],
	[pulseaudio=$use_sound]
)
512 513 514 515


if test x$pulseaudio = xtrue ; then
	PKG_CHECK_MODULES(LIBPULSE, libpulse >= 0.9.21,
Yann Diorcet's avatar
Yann Diorcet committed
516 517 518 519
		[AC_DEFINE(__PULSEAUDIO_ENABLED__,1,[Pulse audio support])
		found_sound=yes],
		[pulseaudio=false]
	)
520 521 522 523 524
fi

AM_CONDITIONAL(BUILD_PULSEAUDIO,test x$pulseaudio = xtrue)


525 526
if test "${found_sound}${use_sound}" = "noyes"; then
	AC_MSG_ERROR([Could not find a support sound driver API. Use --disable-sound if you don't care about having sound.])
aymeric's avatar
aymeric committed
527 528 529 530 531 532 533
fi


dnl	*************************************
dnl	check for various codecs libraries
dnl	*************************************

smorlat's avatar
smorlat committed
534
AC_ARG_ENABLE(speex,
Yann Diorcet's avatar
Yann Diorcet committed
535 536 537 538 539 540 541
	[AS_HELP_STRING([--disable-speex], [Disable speex support])],
	[case "${enableval}" in
		yes)	speex=true ;;
		no)	speex=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-speex) ;;
	esac],
	[speex=true]
aymeric's avatar
aymeric committed
542
)
smorlat's avatar
smorlat committed
543

Yann Diorcet's avatar
Yann Diorcet committed
544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559
if test x$speex = xtrue; then
	dnl check for installed version of speex
	PKG_CHECK_MODULES(SPEEX, speex >= 1.2beta3,
		[ AC_DEFINE(HAVE_SPEEX_NOISE,1,[tells whether the noise arg of speex_echo_cancel can be used]) ],
		[try_other_speex=yes]
	)
	PKG_CHECK_MODULES(SPEEX, speex >= 1.2beta3, build_speex=yes)
	build_resample=false
	PKG_CHECK_MODULES(SPEEXDSP, speexdsp >= 1.2beta3,
		[SPEEX_LIBS="$SPEEX_LIBS $SPEEXDSP_LIBS"
		AC_DEFINE(HAVE_SPEEXDSP,1,[have speexdsp library])
		build_resample=yes],
		[AC_MSG_ERROR([No libspeexdsp library found.])]
	)
	AC_SUBST(SPEEX_CFLAGS)
	AC_SUBST(SPEEX_LIBS)
smorlat's avatar
smorlat committed
560 561
fi

aymeric's avatar
aymeric committed
562
AM_CONDITIONAL(BUILD_SPEEX, test x$build_speex = xyes )
aymeric's avatar
aymeric committed
563
AM_CONDITIONAL(BUILD_RESAMPLE, test x$build_resample = xyes )
aymeric's avatar
aymeric committed
564

smorlat's avatar
smorlat committed
565
AC_ARG_ENABLE(gsm,
Yann Diorcet's avatar
Yann Diorcet committed
566 567 568 569 570 571 572 573
	[AS_HELP_STRING([--disable-gsm], [Disable gsm support])],
	[case "${enableval}" in
		yes)	gsm=true ;;
		no)	gsm=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-gsm) ;;
	esac],
	[gsm=auto]
)
574

575
if test x$gsm != xfalse; then
smorlat's avatar
smorlat committed
576

aymeric's avatar
aymeric committed
577 578
dnl check for gsm
build_gsm=no
Yann Diorcet's avatar
Yann Diorcet committed
579 580 581 582 583
AC_ARG_WITH(gsm,
	[  --with-gsm		Sets the installation prefix of gsm codec library [default=/usr] ],
	[ gsmdir=${withval}],
	[ gsmdir=/usr ]
)
aymeric's avatar
aymeric committed
584 585 586 587 588 589 590

if test x"$gsmdir" != xno ; then
	test x"$gmsdir" = xyes && gsmdir=/usr
	MS_CHECK_DEP([gsm codec],[GSM],[${gsmdir}/include],
		[${gsmdir}/lib],[gsm/gsm.h],[gsm],[gsm_create])
	if test "$GSM_found" = "yes" ; then
		build_gsm=yes
591
	elif test "$gsm" = "true"; then
592
		AC_MSG_ERROR([Could not locate gsm headers or library.])
aymeric's avatar
aymeric committed
593 594 595 596
	fi
else
	build_gsm=no
fi
smorlat's avatar
smorlat committed
597 598 599

fi

600 601 602 603 604 605 606 607 608 609 610



dnl check for matroska file support
AC_ARG_ENABLE(matroska,
	[AS_HELP_STRING([--enable-matroska], [Enable mkv file support])],
	[case "${enableval}" in
		yes)	matroska=true ;;
		no)	matroska=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-matroska) ;;
	esac],
Simon Morlat's avatar
Simon Morlat committed
611
	[matroska=guess]
612 613 614 615 616 617 618 619 620 621 622 623
)
AC_ARG_WITH(ebml,
	[AS_HELP_STRING([--with-ebml],[Sets the installation prefix of ebml library (v2) [default=/usr]])],
	[ ebmldir=${withval} ],
	[ ebmldir=/usr ]
)
AC_ARG_WITH(matroska,
	[AS_HELP_STRING([--with-matroska],[Sets the installation prefix of matroska library (v2) [default=/usr]])],
	[ matroskadir=${withval} ],
	[ matroskadir=/usr ]
)

Simon Morlat's avatar
Simon Morlat committed
624
if test x$matroska != xfalse ; then
625 626 627

build_matroska=yes
if test x"$ebmldir" != xno ; then
Simon Morlat's avatar
Simon Morlat committed
628 629
	MS_CHECK_DEP([ebml library],[EBML],[${ebmldir}/include],
		[${ebmldir}/lib],[ebml/ebml.h],[ebml2],[EBML_ElementRender])
Gautier Pelloux-Prayer's avatar
Gautier Pelloux-Prayer committed
630
	if test "$EBML_found" = "no" ; then
631
		build_matroska=no
Gautier Pelloux-Prayer's avatar
Gautier Pelloux-Prayer committed
632 633 634
		if test "$matroska" = "true" ; then
			AC_MSG_ERROR([Could not locate ebml headers or library.])
		fi
635 636 637 638 639 640
	fi
else
	build_matroska=no
fi

if test x"$matroskadir" != xno ; then
Simon Morlat's avatar
Simon Morlat committed
641 642
	MS_CHECK_DEP([matroska library],[MATROSKA],[${matroskadir}/include}],
		[${matroskadir}/lib],[matroska/matroska.h],[matroska2],[MATROSKA_BlockReleaseData],[-lebml2])
Gautier Pelloux-Prayer's avatar
Gautier Pelloux-Prayer committed
643
	if test "$MATROSKA_found" = "trueno" ; then
644
		build_matroska=no
Gautier Pelloux-Prayer's avatar
Gautier Pelloux-Prayer committed
645 646 647
		if test "$matroska" = "true" ; then
			AC_MSG_ERROR([Could not locate matroska headers or library.])
		fi
648 649 650 651 652 653 654 655 656
	fi
else
	build_matroska=no
fi

fi



657 658
dnl check for spandsp support to bring up g726 codec
AC_ARG_ENABLE(spandsp,
Yann Diorcet's avatar
Yann Diorcet committed
659 660 661 662 663 664 665
	[AS_HELP_STRING([--disable-spandsp], [Disable spandsp support])],
	[case "${enableval}" in
		yes)	spandsp=true ;;
		no)	spandsp=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-spandsp) ;;
	esac],
	[spandsp=true]
666 667
)

Yann Diorcet's avatar
Yann Diorcet committed
668 669 670 671 672 673 674 675 676
if test x$spandsp = xtrue; then
	dnl check for installed version of speex
	PKG_CHECK_MODULES(SPANDSP, spandsp >= 0.0.6,
		[ AC_DEFINE(HAVE_SPANDSP,1,[tells whether spandsp can be used])
		have_spandsp=true ],
		[have_spandsp=false]
	)
	AC_SUBST(SPANDSP_CFLAGS)
	AC_SUBST(SPANDSP_LIBS)
677 678
fi

679 680
dnl check for installed version of libupnp
AC_ARG_ENABLE(upnp,
Yann Diorcet's avatar
Yann Diorcet committed
681 682 683 684 685 686 687 688
	[AS_HELP_STRING([--disable-upnp], [Disable uPnP support])],
	[case "${enableval}" in
		yes)	build_upnp=true ;;
		no)	build_upnp=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-upnp) ;;
	esac],
	[build_upnp=auto]
)
689 690

if test "$build_upnp" != "false" ; then
691
	PKG_CHECK_MODULES([LIBUPNP], [libupnp],
Yann Diorcet's avatar
Yann Diorcet committed
692 693
		[if  pkg-config --atleast-version=1.6 "libupnp < 1.7"; then
			build_upnp=true
694
			old_CFLAGS="$CFLAGS"
Simon Morlat's avatar
Simon Morlat committed
695
			CFLAGS="$CFLAGS $LIBUPNP_CFLAGS -Werror -Wno-error=unused-variable"
696 697 698
			AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
				#include <upnp.h>
			]], [[
Simon Morlat's avatar
Simon Morlat committed
699
				struct Upnp_Action_Complete aa={0};
700 701 702
				char *url = aa.CtrlUrl;
			]])],,
			AC_DEFINE(USE_PATCHED_UPNP, 1, [Define if upnp is patched]))
jehan's avatar
jehan committed
703
			CFLAGS="$old_CFLAGS"
Yann Diorcet's avatar
Yann Diorcet committed
704 705 706 707
		else
			AC_MSG_ERROR([libupnp >= 1.6 < 1.5 required.])
		fi],
		[if test "$build_upnp" == "true" ; then
708 709 710
			AC_MSG_ERROR([libupnp not found.])
		else
			build_upnp=false
Yann Diorcet's avatar
Yann Diorcet committed
711 712
		fi]
	)
713 714

fi
715

Ghislain MARY's avatar
Ghislain MARY committed
716 717 718 719 720 721 722 723 724 725 726 727
dnl check for opus codec support
AC_ARG_ENABLE(opus,
	[AS_HELP_STRING([--disable-opus], [Disable opus codec support])],
	[case "${enableval}" in
		yes) opus=true ;;
		no) opus=false ;;
		*) AC_MSG_ERROR(bad value ${enableval} for --disable-opus) ;;
	esac], [opus=true])
if test x$opus = xtrue; then
PKG_CHECK_MODULES(OPUS, opus >= 0.9.0,
	[AC_DEFINE(HAVE_OPUS, 1, [Tells whether opus can be used])
	have_opus=true],
728
	[have_opus=false]
Ghislain MARY's avatar
Ghislain MARY committed
729 730 731 732 733
)
AC_SUBST(OPUS_CFLAGS)
AC_SUBST(OPUS_LIBS)
fi

jehan's avatar
jehan committed
734
AM_CONDITIONAL(BUILD_OPUS, test x$have_opus = xtrue)
aymeric's avatar
aymeric committed
735
AM_CONDITIONAL(BUILD_GSM, test x$build_gsm = xyes )
736
AM_CONDITIONAL(BUILD_MATROSKA, test x$build_matroska = xyes )
737
AM_CONDITIONAL(BUILD_G726, test "$have_spandsp" = "true" )
aymeric's avatar
aymeric committed
738 739 740 741

MS_CHECK_VIDEO
AM_CONDITIONAL(BUILD_VIDEO, test "$video" = "true")
AM_CONDITIONAL(BUILD_THEORA, test "$have_theora" = "yes")
742
AM_CONDITIONAL(BUILD_VP8, test "$have_vp8" = "yes")
743
AM_CONDITIONAL(BUILD_WIN32, test "$mingw_found" = "yes")
Jehan Monnier's avatar
Jehan Monnier committed
744
AM_CONDITIONAL(BUILD_WIN32_WCE, test "$mingw32ce_found" = "yes")
745 746
AM_CONDITIONAL(BUILD_AVCODEC, test x$avcodec_found = xyes)
AM_CONDITIONAL(BUILD_SWSCALE, test x$swscale_found = xyes)
Simon Morlat's avatar
Simon Morlat committed
747 748
AM_CONDITIONAL(BUILD_SDL,test "$sdl_found" = "true" )
AM_CONDITIONAL(BUILD_X11_XV, test "$enable_xv" = "true" )
749
AM_CONDITIONAL(BUILD_X11_GL, test "$enable_glx" = "true" )
750
AM_CONDITIONAL(BUILD_UPNP, test "$build_upnp" = "true" )
751 752 753 754 755 756 757 758 759 760 761

dnl	*********************************************
dnl	Enable/disable oRTP dependency
dnl	*********************************************
AC_ARG_ENABLE(ortp,
	[AS_HELP_STRING([--disable-ortp], [Disable usage of the oRTP library (default=no)])],
	[case "${enableval}" in
		yes)	ortp_enabled=true ;;
		no)	ortp_enabled=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-ortp) ;;
	esac],
Yann Diorcet's avatar
Yann Diorcet committed
762 763
	[ortp_enabled=true]
)
764
AM_CONDITIONAL(ORTP_ENABLED, test x$ortp_enabled = xtrue)
765 766


aymeric's avatar
aymeric committed
767 768 769 770
dnl	*********************************************
dnl	setup oRTP dependency
dnl	*********************************************
AC_ARG_ENABLE(external-ortp,
Yann Diorcet's avatar
Yann Diorcet committed
771 772 773 774 775 776 777 778
	[AS_HELP_STRING([--enable-external-ortp], [Use external oRTP library (default=no)])],
	[case "${enableval}" in
		yes)	external_ortp=true ;;
		no)	external_ortp=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-external-ortp) ;;
	esac],
	[external_ortp=false]
)
aymeric's avatar
aymeric committed
779

780 781
if test "$ortp_enabled" = 'true'; then
	if test "$external_ortp" = 'false'; then
782
		if test -e ../oRTP/ortp.defs ; then
783 784
			echo "building from linphone source tree, using ../oRTP/include/ortp/ortp.h"
			ORTP_CFLAGS="-I\$(top_srcdir)/../oRTP/include"
785 786
			ORTP_DEFS=`cat ../oRTP/ortp.defs`
			ORTP_CFLAGS="$ORTP_CFLAGS $ORTP_DEFS"
787 788 789 790 791 792 793 794 795
			ORTP_LIBS="\$(top_builddir)/../oRTP/src/libortp.la"
			if test x$ac_cv_c_bigendian = xyes ; then
				ORTP_CFLAGS="$ORTP_CFLAGS -DORTP_BIGENDIAN"
			fi
			if test x$ntptimestamp = xtrue ; then
				ORTP_CFLAGS="$ORTP_CFLAGS -DORTP_TIMESTAMP"
			fi
		else
			external_ortp=true
aymeric's avatar
aymeric committed
796 797
		fi
	fi
798
	if test "$external_ortp" = 'true'; then
Simon Morlat's avatar
Simon Morlat committed
799
		PKG_CHECK_MODULES(ORTP, ortp >= 0.24.0, ,
800 801
			[ AC_MSG_ERROR([Couldn't find ortp library]) ] )
	fi
802 803 804
else
	AC_CHECK_HEADERS(sys/shm.h)
	ORTP_CFLAGS="-Iortp-deps"
aymeric's avatar
aymeric committed
805
fi
806 807
AC_SUBST(ORTP_CFLAGS)
AC_SUBST(ORTP_LIBS)
aymeric's avatar
aymeric committed
808 809


810 811 812 813 814 815 816 817 818 819
dnl	*********************************************
dnl	Enable/disable mediastreamer2 filters
dnl	*********************************************
AC_ARG_ENABLE(filters,
	[AS_HELP_STRING([--disable-filters], [Disable compilation of filters (default=no)])],
	[case "${enableval}" in
		yes)	filters=true ;;
		no)	filters=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-filters) ;;
	esac],
Yann Diorcet's avatar
Yann Diorcet committed
820 821
	[filters=true]
)
822
AM_CONDITIONAL(MS2_FILTERS, test x$filters = xtrue)
823

824
AM_CONDITIONAL(BUILD_VOIP_LIBRARY, test x$ortp_enabled = xtrue)
825 826


aymeric's avatar
aymeric committed
827 828 829 830 831 832 833 834 835 836 837
dnl check dlopen support in headers and libraries, so that we can use mediastreamer plugins
AC_CHECK_HEADERS(dlfcn.h)
have_dlopen=false
AC_CHECK_LIB(dl,dlopen,[LIBS="$LIBS -ldl"; have_dlopen=true])
AC_CHECK_FUNC(dlopen,[have_dlopen=true])
if test "$have_dlopen" = "true" ; then
	AC_DEFINE(HAVE_DLOPEN,1,[Defined if dlopen() is availlable])
fi

dnl check various things
AC_FUNC_ALLOCA
838
AC_ARG_ENABLE(relativeprefix,
Yann Diorcet's avatar
Yann Diorcet committed
839 840 841 842 843 844 845 846
	[AS_HELP_STRING([--enable-relativeprefix], [Build a linphone that finds its resources relatively to the directory where it is installed])],
	[case "${enableval}" in
		yes)	relativeprefix=yes ;;
		no)	relativeprefix=no ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-relativeprefix) ;;
	esac],
	[relativeprefix=guess]
)
aymeric's avatar
aymeric committed
847

smorlat's avatar
fixes  
smorlat committed
848
if test "x${prefix}" = "xNONE"; then
simorl's avatar
simorl committed
849 850 851 852 853
	package_prefix=${ac_default_prefix}
else
	package_prefix=${prefix}
fi

854 855


856
if test x$mingw_found = xyes || test x$relativeprefix = xyes ; then
simorl's avatar
simorl committed
857
	package_prefix="."
858
	PACKAGE_PLUGINS_DIR="./lib/mediastreamer/plugins"
859
else
Yann Diorcet's avatar
Yann Diorcet committed
860
	PACKAGE_PLUGINS_DIR="\$(libdir)/mediastreamer/plugins"
smorlat's avatar
fixes  
smorlat committed
861 862
fi

aymeric's avatar
aymeric committed
863
dnl define path of plugins:
864

aymeric's avatar
aymeric committed
865 866
AC_SUBST(PACKAGE_PLUGINS_DIR)

smorlat's avatar
smorlat committed
867
PACKAGE_DATA_DIR="$prefix/share"
simorl's avatar
simorl committed
868
AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR,  "${package_prefix}/share" ,[path of data])
aymeric's avatar
aymeric committed
869 870 871 872
AC_SUBST(PACKAGE_DATA_DIR)

dnl check for video4linux headers
AC_CHECK_HEADERS(linux/videodev.h linux/videodev2.h)
873 874
if test "${ac_cv_header_linux_videodev_h}" = "yes" ; then
	found_v4l1=yes
875
else
876 877 878 879 880 881
	found_v4l1=no
fi
if test "${ac_cv_header_linux_videodev2_h}" = "yes" ; then
	found_v4l2=yes
else
	found_v4l2=no
882 883
fi

884 885 886 887
AM_CONDITIONAL(BUILD_V4L1, test x$found_v4l1 = xyes )
AM_CONDITIONAL(BUILD_V4L2, test x$found_v4l2 = xyes )

AC_ARG_ENABLE(libv4l1,
Yann Diorcet's avatar
Yann Diorcet committed
888 889 890 891 892 893 894 895
	[AS_HELP_STRING([--disable-libv4l1], [Disable usage of libv4l1, really discouraged])],
	[case "${enableval}" in
		yes)	libv4l1=yes ;;
		no)	libv4l1=no ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-libv4l1) ;;
	esac],
	[libv4l1=yes]
)
896

897
AC_ARG_ENABLE(libv4l2,
Yann Diorcet's avatar
Yann Diorcet committed
898 899 900 901 902 903 904 905
	[AS_HELP_STRING([--disable-libv4l2], [Disable usage of libv4l2, really discouraged])],
	[case "${enableval}" in
		yes)	libv4l2=yes ;;
		no)	libv4l2=no ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-libv4l2) ;;
	esac],
	[libv4l2=yes]
)
906

907
PKG_CHECK_MODULES(LIBV4L2, libv4l2,
908
	[AC_DEFINE(HAVE_LIBV4L2,1,[Defined if we have libv4l2])
Yann Diorcet's avatar
Yann Diorcet committed
909 910
	have_libv4l2=yes],
	[echo "No libv4l2 found."]
911 912
)
PKG_CHECK_MODULES(LIBV4L1, libv4l1,
913
	[AC_DEFINE(HAVE_LIBV4L1,1,[Defined if we have libv4l1])
Yann Diorcet's avatar
Yann Diorcet committed
914 915
	have_libv4l1=yes],
	[echo "No libv4l1 found."]
916
)
917 918 919 920 921
PKG_CHECK_MODULES(LIBV4LCONVERT, libv4lconvert,
	[AC_DEFINE(HAVE_LIBV4LCONVERT,1,[Defined if we have libv4lconvert])
	have_libv4lconvert=yes],
	[echo "No libv4lconvert found."]
)
aymeric's avatar
aymeric committed
922

923 924
if test "$found_v4l2" = "yes" && test "$have_libv4l2" != "yes" ; then
	if test "$video" = "true" && test "$libv4l2" = "yes" ; then
Yann Diorcet's avatar
Yann Diorcet committed
925
		AC_MSG_ERROR([
926 927 928
Missing libv4l2. It is highly recommended to build with
libv4l2 headers and library. Many camera will won't work or will crash
your application if libv4l2 is not installed.
929
If you know what you are doing, you can use --disable-libv4l2 to disable
930
this check.
Yann Diorcet's avatar
Yann Diorcet committed
931
		])
932 933 934
	fi
fi

935

Ghislain MARY's avatar
Ghislain MARY committed
936 937
AC_PATH_PROG(PCAP,pcap-config,false)
AM_CONDITIONAL(HAVE_PCAP, test $PCAP != false)
938 939 940
AC_ARG_ENABLE(pcap,
	[AS_HELP_STRING([--enable-pcap], [Enable pcap library (default=no)])],
	[case "${enableval}" in
Yann Diorcet's avatar
Yann Diorcet committed
941 942 943 944 945 946
		yes)	enable_pcap=yes ;;
		no)	enable_pcap=no ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-pcap) ;;
	esac],
	[enable_pcap=no]
)
947 948
AM_CONDITIONAL(ENABLE_PCAP, test x$enable_pcap = xyes)
if test x$enable_pcap == xyes ; then
949 950 951 952 953
	if test $PCAP != false ; then
		PCAP_LIBS=`pcap-config --libs`
		PCAP_CFLAGS=`pcap-config --cflags`
		AC_SUBST(PCAP_LIBS)
		AC_SUBST(PCAP_CFLAGS)
954
		AC_DEFINE(HAVE_PCAP,1,[whether we compile with libpcap support])
955
	fi
956

957
fi
Ghislain MARY's avatar
Ghislain MARY committed
958 959


960
AC_ARG_ENABLE(tests,
Yann Diorcet's avatar
Yann Diorcet committed
961 962 963 964 965 966 967 968
	[AS_HELP_STRING([--enable-tests], [Enable compilation of tests (default=yes)])],
	[case "${enableval}" in
		yes)	tests=yes ;;
		no)	tests=no  ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-tests) ;;
	esac],
	[tests=yes]
)
969
AM_CONDITIONAL(ENABLE_TESTS, test x$tests = xyes)
970 971


Ghislain MARY's avatar
Ghislain MARY committed
972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011
dnl ##################################################
dnl # Check for CUnit
dnl ##################################################

PKG_CHECK_MODULES(CUNIT, cunit, [found_cunit=yes],[found_cunit=no])

if test "$found_cunit" = "no" ; then
	AC_CHECK_HEADERS(CUnit/CUnit.h,
		[
			AC_CHECK_LIB(cunit,CU_add_suite,[
				found_cunit=yes
				CUNIT_LIBS+=" -lcunit"
			])
		])
fi
case "$target_os" in
	*darwin*)
		#hack for macport
		CUNIT_LIBS+=" -lncurses"
	;;
	*mingw*)
		CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0501"
		LIBS="$LIBS -lws2_32 -liphlpapi"
		LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
	;;
esac

if test "$found_cunit" = "no" ; then
	AC_MSG_WARN([Could not find cunit framework, tests are not compiled.])
else
	AC_CHECK_LIB(cunit,CU_get_suite,[
					AC_DEFINE(HAVE_CU_GET_SUITE,1,[defined when CU_get_suite is available])
					],[foo=bar],[$CUNIT_LIBS])
	AC_CHECK_LIB(cunit,CU_curses_run_tests,[
					AC_DEFINE(HAVE_CU_CURSES,1,[defined when CU_curses_run_tests is available])
					],[foo=bar],[$CUNIT_LIBS])
fi

AM_CONDITIONAL(BUILD_TESTS,test x$found_cunit = xyes)

1012 1013 1014 1015 1016 1017
case "$target_os" in
	*linux*)
		# Eliminate -lstdc++ addition to postdeps for cross compiles.
		postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
	;;
esac
Ghislain MARY's avatar
Ghislain MARY committed
1018

johan's avatar
johan committed
1019 1020 1021 1022
dnl check for libsrtp support (secure rtp)
AC_ARG_WITH(srtp,
	AC_HELP_STRING([--with-srtp], [Set prefix where libsrtp can be found or "none" to disable (ex:/usr or /usr/local) [[default=/usr]]]),
	[srtp_prefix=$withval],
1023
	[if test "$prefix" != "NONE"; then
1024 1025 1026 1027 1028
		srtp_prefix=$prefix
	 else
		srtp_prefix="/usr"
	 fi])

johan's avatar
johan committed
1029
if test "${srtp_prefix}" != "none" ; then
1030
	if test "${srtp_prefix}" != "/usr" ; then
johan's avatar
johan committed
1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045
		SRTP_CFLAGS="-I${srtp_prefix}/include -I${srtp_prefix}/include/srtp"
		SRTP_LIBS="-L${srtp_prefix}/lib"
	fi
	SRTP_LIBS="$SRTP_LIBS -lsrtp"

	dnl check srtp headers
	CPPFLAGS_save=$CPPFLAGS
	CPPFLAGS="$CPPFLAGS $SRTP_CFLAGS"
	AC_CHECK_HEADER([srtp/srtp.h],have_srtp_headers=yes)
	CPPFLAGS=$CPPFLAGS_save

	dnl check for srtp lib
	LDFLAGS_save=$LDFLAGS
	LDFLAGS="$LDFLAGS $SRTP_LIBS"
	LIBS_save=$LIBS
1046
	AC_CHECK_LIB(srtp,[srtp_init, crypto_policy_set_aes_cm_256_hmac_sha1_80, crypto_policy_set_aes_cm_256_hmac_sha1_32], have_srtp_lib=yes)
johan's avatar
johan committed
1047 1048 1049 1050
	LDFLAGS=$LDFLAGS_save
	LIBS=$LIBS_save

	if test "$have_srtp_headers$have_srtp_lib" = "yesyes" ; then
1051 1052
		LDFLAGS_save=$LDFLAGS
		LIBS_save=$LIBS
1053 1054 1055 1056 1057 1058 1059 1060 1061
		LDFLAGS="$LDFLAGS $SRTP_LIBS"
		AC_CHECK_LIB(
			srtp,
			sha1_update,[
				AC_MSG_WARN([This libsrtp version exports symbols conflicting with polarssl, resulting in a bad execution path. libsrtp will be statically linked])
				srtp_polarssl_conflict=yes
			],
			srtp_polarssl_conflict=no
		)
1062 1063 1064 1065
		LDFLAGS=$LDFLAGS_save
		LIBS=$LIBS_save

		if test "$srtp_polarssl_conflict" = "yes"; then
1066 1067
			srtp_static_lib="${srtp_prefix}/lib/libsrtp.a"
			if test -f $srtp_static_lib -a -r $srtp_static_lib; then
1068
				SRTP_LIBS="${srtp_prefix}/lib/libsrtp.a -Bsymbolic -Wl,--version-script=\$(top_srcdir)/src/libsrtp.map"
1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079
				AC_DEFINE(HAVE_SRTP, 1, [Defined when srtp support is compiled])
				have_srtp=yes
			else
				AC_MSG_WARN([Could not access to $srtp_static_lib. Please use --with-srtp=PREFIX to specify the prefix where libsrtp.a has been installed])
				SRTP_CFLAGS=
				SRTP_LIBS=
				have_srtp=no
			fi
		else
			AC_DEFINE(HAVE_SRTP, 1, [Defined when srtp support is compiled])
			have_srtp=yes
johan's avatar
johan committed
1080
		fi
1081

johan's avatar
johan committed
1082 1083
	else
		AC_MSG_NOTICE([Could not find libsrtp headers or lib, cryto transport disabled.])
1084
		have_srtp=no
johan's avatar
johan committed
1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097
		SRTP_CFLAGS=
		SRTP_LIBS=
	fi

	AC_SUBST(SRTP_CFLAGS)
	AC_SUBST(SRTP_LIBS)
else
	have_srtp=no
	SRTP_CFLAGS=
	SRTP_LIBS=
fi


1098 1099
dnl check for libzrtp support (RFC 6189: Media Path Key Agreement for Unicast Secure RTP)
AC_ARG_ENABLE(zrtp,
Simon Morlat's avatar
Simon Morlat committed
1100
	[AS_HELP_STRING([--enable-zrtp], [Turn on or off compilation of zrtp (default=detect)])],
1101 1102 1103 1104 1105
	[case "${enableval}" in
		yes)	zrtp=true ;;
		no)	zrtp=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-zrtp) ;;
	esac],
Simon Morlat's avatar
Simon Morlat committed
1106
	[zrtp=detect]
1107 1108
)

Simon Morlat's avatar
Simon Morlat committed
1109 1110 1111 1112 1113 1114 1115
if test "$zrtp" != "false" ; then
	PKG_CHECK_MODULES(LIBBZRTP, libbzrtp >= 1.0.0, found_zrtp=true, found_zrtp=false)
	if test "$zrtp$found_zrtp" = "truefalse" ; then
		AC_MSG_ERROR("Cound not find bZRTP library.")
	fi
	if test "$found_zrtp" = "true" ; then
		if test "$have_srtp" = "no" ; then
1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126
			if test "$zrtp" = "true" ; then
				AC_MSG_ERROR("ZRTP requires SRTP")
			else
				AC_MSG_WARN("ZRTP requires SRTP")
				zrtp=false
			fi
		else
			AC_DEFINE(HAVE_ZRTP, 1, [Defined when zrtp support is compiled])
			LIBS="$LIBS $LIBBZRTP_LIBS"
			CFLAGS="$CFLAGS $LIBBZRTP_CFLAGS"
			zrtp=true
Simon Morlat's avatar
Simon Morlat committed
1127 1128 1129
		fi
	else
		zrtp=false
1130 1131
	fi
fi
1132

1133 1134
AM_CONDITIONAL(LIBBZRTP,test x$zrtp != xfalse)

johan's avatar
johan committed
1135 1136
dnl Polarssl lib is requested for DTLS
AC_ARG_WITH( polarssl,
1137 1138 1139 1140 1141 1142
      [  --with-polarssl      Set prefix where polarssl can be found (ex:/usr, /usr/local)[[default=PREFIX or /usr if NONE]] ],
      [ polarssl_prefix=${withval}],[ if test "$prefix" != "NONE"; then
					polarssl_prefix=${prefix}
				      else
					polarssl_prefix="/usr"
				      fi ])
johan's avatar
johan committed
1143

1144 1145
found_polarssl=no

1146
if test "$polarssl_prefix" != "none" ; then
jehan's avatar
jehan committed
1147 1148 1149 1150
	if test "$polarssl_prefix" != "/usr" ; then
		POLARSSL_CFLAGS="-I${polarssl_prefix}/include"
		POLARSSL_LIBS="-L${polarssl_prefix}/lib"
	fi
jehan's avatar
jehan committed
1151
	POLARSSL_LIBS="$POLARSSL_LIBS -lpolarssl"
johan's avatar
johan committed
1152

1153 1154
	CPPFLAGS_save=$CPPFLAGS
	LIBS_save=$LIBS
1155

1156 1157 1158
	CPPFLAGS="$CPPFLAGS $POLARSSL_CFLAGS"
	LIBS="$LIBS $POLARSSL_LIBS"
	AC_CHECK_HEADERS(polarssl/ssl.h, [
1159 1160 1161 1162
				AC_CHECK_LIB(polarssl,sha1_hmac,
					[found_polarssl=yes; AC_MSG_NOTICE([polarssl usable])],
					[POLARSSL_CFLAGS=""
					POLARSSL_LIBS=""
1163
					AC_MSG_ERROR([polarssl headers found but library not found !])])
1164 1165
				],[POLARSSL_CFLAGS=""
					POLARSSL_LIBS=""])
1166 1167 1168
	CPPFLAGS=$CPPFLAGS_save
	LIBS=$LIBS_save
fi
johan's avatar
johan committed
1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185

dnl check for DTLS-SRTP support, need polarssl version >= 1.4
AC_ARG_ENABLE(dtls,
	[AS_HELP_STRING([--enable-dtls], [Turn on or off compilation of dtls (default=no)])],
	[case "${enableval}" in
		yes)	dtls=true ;;
		no)	dtls=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --enable-dtls) ;;
	esac],
	[dtls=false]
)

if test "$dtls" = "true" ; then
	if test "$have_srtp" = "no" ; then
		AC_MSG_ERROR("DTLS-SRTP requires SRTP")
	fi

1186 1187 1188
	if test "x$found_polarssl" != "xyes" ; then
		AC_MSG_ERROR("DTLS-SRTP requires POLARSSL")
	fi
johan's avatar
johan committed
1189 1190