configure.ac 8.79 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.8.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
43
44
LIBNICE_CURRENT=15
LIBNICE_REVISION=0
LIBNICE_AGE=5
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
AC_CHECK_HEADERS([arpa/inet.h net/in.h netdb.h])
89
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
])
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
186
187
188
189
190
191
192
193
# 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
194

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

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

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

		with_gstreamer=no
		])
223
])
224

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

245
AC_SUBST(gstplugindir)
246
AC_SUBST(gstplugin010dir)
247

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

251
GUPNP_IGD_REQUIRED=0.2.4
252

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

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

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

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

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

292
293
294
295
296
297
298
299
300
301
302
303
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
304
305
306
307
308
309
310
311
case $host_os in
  solaris*)
    LDFLAGS="$LDFLAGS -lsocket -lnls"
    ;;
  *)
    ;;
esac

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

# GObject introspection
GOBJECT_INTROSPECTION_CHECK([1.30.0])

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

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