configure.ac 10.5 KB
Newer Older
dafydd.harries's avatar
import  
dafydd.harries committed
1

2
AC_PREREQ(2.62)
3

4 5 6
dnl Always compile with -Wall; if --enable-compile-warnings=error is passed,
dnl also use -Werror. git and pre-releases default to -Werror

7
dnl use a three digit version number for releases, and four for cvs/prerelease
Olivier Crête's avatar
Olivier Crête committed
8 9
AC_INIT([libnice],[0.1.14.1])
LIBNICE_RELEASE="no"
10

11
AC_CANONICAL_TARGET
12

13
AC_CONFIG_SRCDIR([agent/agent.c])
14
AC_CONFIG_HEADERS([config.h])
15
AM_INIT_AUTOMAKE([1.12 -Wall -Wno-portability subdir-objects])
16

17 18
AC_CONFIG_FILES([
	Makefile
19
	agent/Makefile
20
	stun/Makefile
21
	stun/tests/Makefile
22
	stun/tools/Makefile
23
	socket/Makefile
Dafydd Harries's avatar
Dafydd Harries committed
24
	nice/Makefile
25
	nice/nice.pc
26
	random/Makefile
27
	gst/Makefile
Youness Alaoui's avatar
Youness Alaoui committed
28 29 30
	docs/Makefile
	docs/reference/Makefile
	docs/reference/libnice/Makefile
31
	tests/Makefile
32
	examples/Makefile
33
	])
dafydd.harries's avatar
import  
dafydd.harries committed
34

35
# Set the libtool C/A/R version info
Youness Alaoui's avatar
Youness Alaoui committed
36 37 38 39 40 41
#    If the source code was changed, but there were no interface changes:
#      Increment REVISION.
#    If there was a compatible interface change:
#      Increment CURRENT and AGE. Set REVISION to 0
#    If there was an incompatible interface change:
#      Increment CURRENT. Set AGE and REVISION to 0
Olivier Crête's avatar
Olivier Crête committed
42 43 44
LIBNICE_CURRENT=17
LIBNICE_REVISION=0
LIBNICE_AGE=7
45
LIBNICE_LIBVERSION=${LIBNICE_CURRENT}:${LIBNICE_REVISION}:${LIBNICE_AGE}
Siraj Razick's avatar
Siraj Razick committed
46
LIBNICE_LT_LDFLAGS="-version-info ${LIBNICE_LIBVERSION} -no-undefined"
47
AC_SUBST(LIBNICE_LT_LDFLAGS)
48

Olivier Crête's avatar
Olivier Crête committed
49 50
dnl use pretty build output
AM_SILENT_RULES([yes])
51 52


dafydd.harries's avatar
import  
dafydd.harries committed
53 54
# Checks for programs.

55
AC_USE_SYSTEM_EXTENSIONS
dafydd.harries's avatar
import  
dafydd.harries committed
56
AC_PROG_CC
57
AM_PROG_AR
58 59
LT_PREREQ([2.2.6])
LT_INIT([dlopen win32-dll disable-static])
dafydd.harries's avatar
import  
dafydd.harries committed
60

61 62 63 64 65 66 67 68 69 70 71 72 73 74
# Check Operating System
AC_MSG_CHECKING([operating system])
case "$host" in
	*-*-*mingw*|*-*-*cygwin*)
		platform=win32
		AC_MSG_RESULT($platform)
		;;
	*)
		platform=linux/other
		AC_MSG_RESULT($platform)
		;;
esac

AM_CONDITIONAL([WINDOWS], [test "$platform" = "win32"])
75

76 77 78
# Checks for compiler features

AC_C_RESTRICT
79
AC_C_VARARRAYS
80 81
AC_HEADER_ASSERT
AC_HEADER_STDBOOL
82 83 84 85 86 87
AH_VERBATIM([_FORTIFY_SOURCE], 
[/* Define to `2' to get GNU/libc warnings. */
/* Only define if -O1 or more is enabled */
#if defined __OPTIMIZE__ && __OPTIMIZE__ > 0
# define _FORTIFY_SOURCE 2
#endif])
88
AC_DEFINE([NICEAPI_EXPORT], [ ], [Public library function implementation])
89
AC_CHECK_HEADERS([arpa/inet.h net/in.h netdb.h])
90
AC_CHECK_HEADERS([ifaddrs.h], \
91 92
		      [AC_DEFINE(HAVE_GETIFADDRS, [1], \
		       [Whether getifaddrs() is available on the system])])
93
AC_CHECK_TYPES([size_t, ssize_t])
94

95
# Also put matching version in LIBNICE_CFLAGS
96
GLIB_REQ=2.44
97

98
LIBNICE_CFLAGS="-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_44 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_44"
99 100 101 102 103 104 105 106 107 108

dnl Support different levels of compiler error reporting.
dnl This configure flag is designed to mimic one from gnome-common,
dnl Defaults to "error" except for releases where it defaults to "yes"
AC_ARG_ENABLE(compile-warnings,
              AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
                             [Enable different levels of compiler warnings]),,
              [AS_IF([test "$LIBNICE_RELEASE" = "yes"],
                  [enable_compile_warnings="yes"],
                  [enable_compile_warnings="error"])])
109 110

AC_DEFUN([NICE_ADD_FLAG],
111
  AS_COMPILER_FLAG([-Werror $1], LIBNICE_CFLAGS="$LIBNICE_CFLAGS $1", [])
112 113 114
)

NICE_ADD_FLAG([-fno-strict-aliasing])
115

116
AS_IF([test "$enable_compile_warnings" != "no"],[
117
    NICE_ADD_FLAG([-Wall])
118
])
119 120
AS_IF([test "x$enable_compile_warnings" != "xno" -a \
	    "x$enable_compile_warnings" != "xminimum"],[
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
    NICE_ADD_FLAG([-Wextra])
    NICE_ADD_FLAG([-Wundef])
    NICE_ADD_FLAG([-Wnested-externs])
    NICE_ADD_FLAG([-Wwrite-strings])
    NICE_ADD_FLAG([-Wpointer-arith])
    NICE_ADD_FLAG([-Wmissing-declarations])
    NICE_ADD_FLAG([-Wmissing-prototypes])
    NICE_ADD_FLAG([-Wstrict-prototypes])
    NICE_ADD_FLAG([-Wredundant-decls])
    NICE_ADD_FLAG([-Wno-unused-parameter])
    NICE_ADD_FLAG([-Wno-missing-field-initializers])
    NICE_ADD_FLAG([-Wdeclaration-after-statement])
    NICE_ADD_FLAG([-Wformat=2])
    NICE_ADD_FLAG([-Wold-style-definition])
    NICE_ADD_FLAG([-Wcast-align])
    NICE_ADD_FLAG([-Wformat-nonliteral])
    NICE_ADD_FLAG([-Wformat-security])
])
AS_IF([test "$enable_compile_warnings" = "yes" -o \
            "$enable_compile_warnings" = "maximum" -o \
            "$enable_compile_warnings" = "error"],[
    NICE_ADD_FLAG([-Wsign-compare])
    NICE_ADD_FLAG([-Wstrict-aliasing])
    NICE_ADD_FLAG([-Wshadow])
    NICE_ADD_FLAG([-Winline])
    NICE_ADD_FLAG([-Wpacked])
    NICE_ADD_FLAG([-Wmissing-format-attribute])
    NICE_ADD_FLAG([-Winit-self])
    NICE_ADD_FLAG([-Wredundant-decls])
    NICE_ADD_FLAG([-Wmissing-include-dirs])
    NICE_ADD_FLAG([-Wunused-but-set-variable])
    NICE_ADD_FLAG([-Warray-bounds])
])
AS_IF([test "$enable_compile_warnings" = "maximum" -o \
            "$enable_compile_warnings" = "error"],[
    NICE_ADD_FLAG([-Wswitch-enum])
    NICE_ADD_FLAG([-Wswitch-default])
    NICE_ADD_FLAG([-Waggregate-return])
159 160 161
])
AS_IF([test "x$enable_compile_warnings" = "xerror"],[
    NICE_ADD_FLAG([-Werror])
162
    NICE_ADD_FLAG([-Wno-suggest-attribute=format])
163
])
164

165 166 167 168 169 170 171 172 173 174 175
#
# Fixes for Solaris
#
AC_SEARCH_LIBS([inet_pton],[nsl])
AC_SEARCH_LIBS([socket],[socket inet])
case $host in
	*-*-solaris* )
	AC_DEFINE(_XOPEN_SOURCE,          600, Needed to get declarations for msg_control and msg_controllen on Solaris)
	AC_DEFINE(__EXTENSIONS__,         1, Needed to get declarations for msg_control and msg_controllen on Solaris)
     ;;
esac
176

177 178
AC_SUBST(LIBNICE_CFLAGS)
AC_MSG_NOTICE([set LIBNICE_CFLAGS to $LIBNICE_CFLAGS])
179

dafydd.harries's avatar
import  
dafydd.harries committed
180
# Checks for libraries.
181
AC_CHECK_LIB(rt, clock_gettime, [LIBRT="-lrt"], [LIBRT=""])
182
AC_CHECK_FUNCS([poll])
183 184
AC_SUBST(LIBRT)

185
# Dependencies
186 187 188 189

GNUTLS_PACKAGES_PRIVATE="gnutls >= 2.12.0"
PKG_CHECK_MODULES(GNUTLS, [$GNUTLS_PACKAGES_PRIVATE])

190 191
NICE_PACKAGES_PUBLIC="glib-2.0 >= $GLIB_REQ gio-2.0 >= $GLIB_REQ gobject-2.0 >= $GLIB_REQ"
NICE_PACKAGES_PRIVATE="gthread-2.0"
192 193 194 195 196

PKG_CHECK_MODULES(GLIB, [$NICE_PACKAGES_PUBLIC $NICE_PACKAGES_PRIVATE])

NICE_PACKAGES_PRIVATE="$NICE_PACKAGES_PRIVATE $GNUTLS_PACKAGES_PRIVATE"

197 198 199
AC_SUBST([NICE_PACKAGES_PUBLIC])
AC_SUBST([NICE_PACKAGES_PRIVATE])

dafydd.harries's avatar
import  
dafydd.harries committed
200

201
AC_ARG_WITH(gstreamer, 
202
	AS_HELP_STRING([--with-gstreamer],[build GStreamer plugin]),
203 204 205
	[with_gstreamer=${withval}],
	[with_gstreamer=auto])

206
AC_ARG_WITH(gstreamer-0.10, 
207
	AS_HELP_STRING([--with-gstreamer-0.10],[build GStreamer 0.10 plugin]),
208 209 210
	[with_gstreamer010=${withval}],
	[with_gstreamer010=auto])

211
AS_IF([test "$with_gstreamer" != no], [
212

213
	PKG_CHECK_MODULES(GST, [
214 215
		gstreamer-1.0 >= 0.11.91
		gstreamer-base-1.0 >= 0.11.91
216
		],
217 218
		[
		with_gstreamer=yes
Sjoerd Simons's avatar
Sjoerd Simons committed
219
		GST_MAJORMINOR=1.0
220
		gstplugindir="\$(libdir)/gstreamer-$GST_MAJORMINOR"
221
		],
222
		[
223
		AS_IF([test "$with_gstreamer" = yes], [
224
			AC_MSG_ERROR([GStreamer 1.0 support was requested but GStreamer 1.0 libraries are not available])
225
		])
226 227 228

		with_gstreamer=no
		])
229 230 231 232 233 234 235 236 237 238

	PKG_CHECK_MODULES(GST_CHECK, [
		gstreamer-check-1.0 >= 0.11.91
		],
		[
		have_gst_check=yes
		],
		[
		have_gst_check=no
		])
239
])
240

241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
AS_IF([test "$with_gstreamer010" != no], [
  
	PKG_CHECK_MODULES(GST010, [
		gstreamer-0.10 >= 0.10.10
		gstreamer-base-0.10 >= 0.10.10
		],
		[
		with_gstreamer010=yes
		GST_MAJORMINOR=0.10
		gstplugin010dir="\$(libdir)/gstreamer-$GST_MAJORMINOR"
		],
		[
		AS_IF([test "$with_gstreamer010" = yes], [
			AC_MSG_ERROR([GStreamer 0.10 support was requested but GStreamer 0.10 libraries are not available])
		])

		with_gstreamer010=no
		])
])

261
AC_SUBST(gstplugindir)
262
AC_SUBST(gstplugin010dir)
263

264
AM_CONDITIONAL(WITH_GSTREAMER, test "$with_gstreamer" = yes)
265
AM_CONDITIONAL(HAVE_GST_CHECK, test "$have_gst_check" = yes)
266
AM_CONDITIONAL(WITH_GSTREAMER010, test "$with_gstreamer010" = yes)
267

268
GUPNP_IGD_REQUIRED=0.2.4
269

Youness Alaoui's avatar
Youness Alaoui committed
270
AC_ARG_ENABLE([gupnp],
271
        AS_HELP_STRING([--disable-gupnp],[Disable GUPnP IGD support]),
Youness Alaoui's avatar
Youness Alaoui committed
272 273 274 275 276 277 278
        [case "${enableval}" in
            yes) WANT_GUPNP=yes ;;
            no)  WANT_GUPNP=no ;;
            *) AC_MSG_ERROR(bad value ${enableval} for --enable-gupnp) ;;
        esac],
        WANT_GUPNP=test)

279 280 281 282
GUPNP_PACKAGES_PUBLIC=""
GUPNP_PACKAGES_PRIVATE="gupnp-igd-1.0 >= $GUPNP_IGD_REQUIRED"
GUPNP_PACKAGES="$GUPNP_PACKAGES_PUBLIC $GUPNP_PACKAGES_PRIVATE"

Youness Alaoui's avatar
Youness Alaoui committed
283 284
HAVE_GUPNP=no
if test "x$WANT_GUPNP" != "xno"; then
285
   PKG_CHECK_MODULES(GUPNP, [$GUPNP_PACKAGES],
Youness Alaoui's avatar
Youness Alaoui committed
286 287 288 289
    [ HAVE_GUPNP=yes ],
    [ HAVE_GUPNP=no ])
fi
if test "x$WANT_GUPNP" = "xyes" && test "x$HAVE_GUPNP" = "xno"; then
290
   AC_MSG_ERROR([Requested GUPnP IGD, but it is not available])
Youness Alaoui's avatar
Youness Alaoui committed
291 292 293 294
fi

if test "x$HAVE_GUPNP" = "xyes"; then
   AC_DEFINE(HAVE_GUPNP,,[Have the GUPnP IGD library])
295
  UPNP_ENABLED="true"
296 297 298 299
else
  GUPNP_PACKAGES_PUBLIC=""
  GUPNP_PACKAGES_PRIVATE=""
  GUPNP_PACKAGES=""
Youness Alaoui's avatar
Youness Alaoui committed
300 301
fi

302 303 304 305
AC_SUBST([GUPNP_PACKAGES_PUBLIC])
AC_SUBST([GUPNP_PACKAGES_PRIVATE])
AC_SUBST([GUPNP_PACKAGES])

Youness Alaoui's avatar
Youness Alaoui committed
306
AC_SUBST(HAVE_GUPNP)
307
AC_SUBST([UPNP_ENABLED])
Youness Alaoui's avatar
Youness Alaoui committed
308

309 310 311 312 313 314 315 316 317 318 319 320
dnl Test coverage
AC_ARG_ENABLE([coverage],
	[AS_HELP_STRING([--enable-coverage],
		[build for test coverage (default disabled)])],,
	[enable_coverage="no"])
AS_IF([test "${enable_coverage}" != "no"], [
	CFLAGS="${CFLAGS} -g -O0 -fprofile-arcs -ftest-coverage"
	LDFLAGS="-lgcov"
	CCACHE_DISABLE=1
])
AC_SUBST(CCACHE_DISABLE)

321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338
dnl build static plugins or not
AC_MSG_CHECKING([whether to build static plugins or not])
AC_ARG_ENABLE(
  static-plugins,
  AC_HELP_STRING(
    [--enable-static-plugins],
    [build static plugins @<:@default=no@:>@]),
  [AS_CASE(
    [$enableval], [no], [], [yes], [],
    [AC_MSG_ERROR([bad value "$enableval" for --enable-static-plugins])])],
  [enable_static_plugins=no])
AC_MSG_RESULT([$enable_static_plugins])
if test "x$enable_static_plugins" = xyes; then
  AC_DEFINE(GST_PLUGIN_BUILD_STATIC, 1,
    [Define if static plugins should be built])
fi
AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static_plugins" = "xyes")

Apostolos Syropoulos's avatar
Apostolos Syropoulos committed
339 340
case $host_os in
  solaris*)
341
    LDFLAGS="$LDFLAGS -lsocket -lnsl"
Apostolos Syropoulos's avatar
Apostolos Syropoulos committed
342 343 344 345 346
    ;;
  *)
    ;;
esac

Youness Alaoui's avatar
Youness Alaoui committed
347
# check for gtk-doc
348
m4_ifdef([GTK_DOC_CHECK], [
349
GTK_DOC_CHECK([1.10],[--flavour no-tmpl])
350 351 352
],[
AM_CONDITIONAL([ENABLE_GTK_DOC], false)
])
353 354 355 356

# GObject introspection
GOBJECT_INTROSPECTION_CHECK([1.30.0])

357 358 359 360 361 362 363 364 365 366 367 368 369 370
dnl Ignore a specific network interface name prefix from the connection check
AC_MSG_CHECKING([whether to ignore a specific network interface name prefix])
AC_ARG_WITH([ignored-network-interface-prefix],
  [AS_HELP_STRING([--with-ignored-network-interface-prefix=string],
    [Ignore network interfaces whose name starts with "string" from the ICE connection
     check algorithm. For example, interfaces "virbr" in the case of the virtual bridge
     handled by libvirtd, do not help in finding connectivity.])],
    [interface_prefix="$withval"])
AS_IF([test -n "$interface_prefix"],
  [AC_DEFINE_UNQUOTED([IGNORED_IFACE_PREFIX],["$interface_prefix"],
    [Ignore this network interface prefix from the connection check])
   AC_MSG_RESULT([yes, $interface_prefix])],
  [AC_MSG_RESULT([no])])

Youness Alaoui's avatar
Youness Alaoui committed
371
AC_CONFIG_MACRO_DIR(m4)
372

dafydd.harries's avatar
import  
dafydd.harries committed
373 374
AC_OUTPUT