configure.ac 8.73 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.7.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])
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
LIBNICE_CURRENT=14
Olivier Crête's avatar
Olivier Crête committed
43
LIBNICE_REVISION=1
Olivier Crête's avatar
Olivier Crête committed
44
LIBNICE_AGE=4
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
LT_INIT
dafydd.harries's avatar
import  
dafydd.harries committed
59

60 61 62 63 64 65 66 67 68 69 70 71 72 73
# 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"])
74

75 76 77
# Checks for compiler features

AC_C_RESTRICT
78
AC_C_VARARRAYS
79 80
AC_HEADER_ASSERT
AC_HEADER_STDBOOL
81 82 83 84 85 86
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])
87
AC_DEFINE([NICEAPI_EXPORT], [ ], [Public library function implementation])
88 89
AC_CHECK_HEADERS([arpa/inet.h net/in.h])
AC_CHECK_HEADERS([ifaddrs.h], \
90 91
		      [AC_DEFINE(HAVE_GETIFADDRS, [1], \
		       [Whether getifaddrs() is available on the system])])
92
AC_CHECK_TYPES([size_t, ssize_t])
93

94 95 96
# Also put matching version in LIBNICE_CFLAGS
GLIB_REQ=2.30

97
LIBNICE_CFLAGS="-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_30 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_36"
98 99 100 101 102 103 104 105 106 107

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"])])
108 109 110 111 112 113

AC_DEFUN([NICE_ADD_FLAG],
  AS_COMPILER_FLAG([$1], LIBNICE_CFLAGS="$LIBNICE_CFLAGS $1", [])
)

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

115
AS_IF([test "$enable_compile_warnings" != "no"],[
116
    NICE_ADD_FLAG([-Wall])
117
])
118 119
AS_IF([test "x$enable_compile_warnings" != "xno" -a \
	    "x$enable_compile_warnings" != "xminimum"],[
120 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([-Wmissing-noreturn])
    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 162
])
AS_IF([test "x$enable_compile_warnings" = "xerror"],[
    NICE_ADD_FLAG([-Werror])
])
163

164 165 166 167 168 169 170 171 172 173 174
#
# 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
175

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

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

184 185 186 187 188 189 190 191 192
# Dependencies
NICE_PACKAGES_PUBLIC="glib-2.0 >= $GLIB_REQ gio-2.0 >= $GLIB_REQ gobject-2.0 >= $GLIB_REQ"
NICE_PACKAGES_PRIVATE="gthread-2.0"
NICE_PACKAGES="$NICE_PACKAGES_PUBLIC $NICE_PACKAGES_PRIVATE"
AC_SUBST([NICE_PACKAGES_PUBLIC])
AC_SUBST([NICE_PACKAGES_PRIVATE])
AC_SUBST([NICE_PACKAGES])

PKG_CHECK_MODULES(GLIB, [$NICE_PACKAGES])
dafydd.harries's avatar
import  
dafydd.harries committed
193

194
AC_ARG_WITH(gstreamer, 
195
	AS_HELP_STRING([--with-gstreamer],[build GStreamer plugin]),
196 197 198
	[with_gstreamer=${withval}],
	[with_gstreamer=auto])

199
AC_ARG_WITH(gstreamer-0.10, 
200
	AS_HELP_STRING([--with-gstreamer-0.10],[build GStreamer 0.10 plugin]),
201 202 203
	[with_gstreamer010=${withval}],
	[with_gstreamer010=auto])

204
AS_IF([test "$with_gstreamer" != no], [
205
  
206
	PKG_CHECK_MODULES(GST, [
207 208
		gstreamer-1.0 >= 0.11.91
		gstreamer-base-1.0 >= 0.11.91
209
		],
210 211
		[
		with_gstreamer=yes
Sjoerd Simons's avatar
Sjoerd Simons committed
212
		GST_MAJORMINOR=1.0
213
		gstplugindir="\$(libdir)/gstreamer-$GST_MAJORMINOR"
214
		],
215
		[
216
		AS_IF([test "$with_gstreamer" = yes], [
217
			AC_MSG_ERROR([GStreamer 1.0 support was requested but GStreamer 1.0 libraries are not available])
218
		])
219 220 221

		with_gstreamer=no
		])
222
])
223

224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
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
		])
])

244
AC_SUBST(gstplugindir)
245
AC_SUBST(gstplugin010dir)
246

247
AM_CONDITIONAL(WITH_GSTREAMER, test "$with_gstreamer" = yes)
248
AM_CONDITIONAL(WITH_GSTREAMER010, test "$with_gstreamer010" = yes)
249

250 251
GUPNP_IGD_REQUIRED=0.1.2

Youness Alaoui's avatar
Youness Alaoui committed
252
AC_ARG_ENABLE([gupnp],
253
        AS_HELP_STRING([--disable-gupnp],[Disable GUPnP IGD support]),
Youness Alaoui's avatar
Youness Alaoui committed
254 255 256 257 258 259 260
        [case "${enableval}" in
            yes) WANT_GUPNP=yes ;;
            no)  WANT_GUPNP=no ;;
            *) AC_MSG_ERROR(bad value ${enableval} for --enable-gupnp) ;;
        esac],
        WANT_GUPNP=test)

261 262 263 264
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
265 266
HAVE_GUPNP=no
if test "x$WANT_GUPNP" != "xno"; then
267
   PKG_CHECK_MODULES(GUPNP, [$GUPNP_PACKAGES],
Youness Alaoui's avatar
Youness Alaoui committed
268 269 270 271
    [ HAVE_GUPNP=yes ],
    [ HAVE_GUPNP=no ])
fi
if test "x$WANT_GUPNP" = "xyes" && test "x$HAVE_GUPNP" = "xno"; then
272
   AC_MSG_ERROR(Requested GUPnP IGD, but it is not available)
Youness Alaoui's avatar
Youness Alaoui committed
273 274 275 276
fi

if test "x$HAVE_GUPNP" = "xyes"; then
   AC_DEFINE(HAVE_GUPNP,,[Have the GUPnP IGD library])
277
  UPNP_ENABLED="true"
278 279 280 281
else
  GUPNP_PACKAGES_PUBLIC=""
  GUPNP_PACKAGES_PRIVATE=""
  GUPNP_PACKAGES=""
Youness Alaoui's avatar
Youness Alaoui committed
282 283
fi

284 285 286 287
AC_SUBST([GUPNP_PACKAGES_PUBLIC])
AC_SUBST([GUPNP_PACKAGES_PRIVATE])
AC_SUBST([GUPNP_PACKAGES])

Youness Alaoui's avatar
Youness Alaoui committed
288
AC_SUBST(HAVE_GUPNP)
289
AC_SUBST([UPNP_ENABLED])
Youness Alaoui's avatar
Youness Alaoui committed
290

291 292 293 294 295 296 297 298 299 300 301 302
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)

Apostolos Syropoulos's avatar
Apostolos Syropoulos committed
303 304 305 306 307 308 309 310
case $host_os in
  solaris*)
    LDFLAGS="$LDFLAGS -lsocket -lnls"
    ;;
  *)
    ;;
esac

Youness Alaoui's avatar
Youness Alaoui committed
311
# check for gtk-doc
312
m4_ifdef([GTK_DOC_CHECK], [
Youness Alaoui's avatar
Youness Alaoui committed
313
GTK_DOC_CHECK(1.9)
314 315 316
],[
AM_CONDITIONAL([ENABLE_GTK_DOC], false)
])
317 318 319 320

# GObject introspection
GOBJECT_INTROSPECTION_CHECK([1.30.0])

Youness Alaoui's avatar
Youness Alaoui committed
321
AC_CONFIG_MACRO_DIR(m4)
322

dafydd.harries's avatar
import  
dafydd.harries committed
323 324
AC_OUTPUT