configure.ac 11.3 KB
Newer Older
1 2 3
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

4
AC_PREREQ([2.63])
5

Ghislain MARY's avatar
Ghislain MARY committed
6
AC_INIT([belle-sip],[1.4.2],[jehan.monnier@linphone.org])
7 8 9 10 11 12 13 14 15

BELLESIP_SO_CURRENT=0 dnl increment this number when you add/change/remove an interface
BELLESIP_SO_REVISION=0 dnl increment this number when you change source code, without changing interfaces; set to 0 when incrementing CURRENT
BELLESIP_SO_AGE=0 dnl increment this number when you add an interface, set to 0 if you remove an interface

BELLESIP_SO_VERSION=$BELLESIP_SO_CURRENT:$BELLESIP_SO_REVISION:$BELLESIP_SO_AGE

AC_SUBST(BELLESIP_SO_CURRENT, $BELLESIP_SO_CURRENT)
AC_SUBST(BELLESIP_SO_VERSION)
16

17 18
AC_CONFIG_SRCDIR([src/belle_sip_utils.c])

19 20
AC_CONFIG_MACRO_DIR([m4])

21 22
AC_CONFIG_HEADERS([config.h])

Simon Morlat's avatar
Simon Morlat committed
23 24
AC_CANONICAL_SYSTEM

jehan's avatar
jehan committed
25 26 27
dnl initialize pkg-config so that we can use it within if else fi statements.
PKG_PROG_PKG_CONFIG()

28
AM_INIT_AUTOMAKE([subdir-objects])
Simon Morlat's avatar
Simon Morlat committed
29
AM_SILENT_RULES(yes)
30 31

# Checks for programs.
32
dnl do not put anythingelse before AC_PROG_CC unless checking if macro still work for clang
33
dnl because of tunnel library wrapper, C++ is required.
34
AC_PROG_CXX(["xcrun clang++" g++])
35
AC_PROG_CC(["xcrun clang" gcc])
36 37
AC_PROG_OBJC(["xcrun clang" gcc])

jehan's avatar
jehan committed
38
AM_PROG_CC_C_O
jehan's avatar
jehan committed
39 40 41 42 43
case $INSTALL in
	*ginstall*)
		INSTALL="$INSTALL -C"
	;;
esac
44
dnl AC_PROG_CC_C99
45
LT_INIT(win32-dll)
46

jehan's avatar
jehan committed
47
case "$target" in
Simon Morlat's avatar
Simon Morlat committed
48
	*-apple-darwin.ios|i386-apple*|armv6-apple*|armv7-apple*|armv7s-apple*|arm64-apple*|aarch64-apple*)
49
		LIBS="$LIBS -framework Foundation -framework CoreFoundation -framework CFNetwork -framework UIKit"
50
		build_apple=yes
Simon Morlat's avatar
Simon Morlat committed
51 52 53 54 55 56
	;;	
	#macosx 64 bits
	x86_64-apple-darwin*)
		LIBS="$LIBS -framework Foundation"
		OBJCFLAGS="$OBJCFLAGS  -fmodules"
		build_apple=yes
57
	;;
jehan's avatar
jehan committed
58 59
esac

60
AM_CONDITIONAL([BUILD_APPLE], [test "x$build_apple" = "xyes"])
61

62
dnl Workaround for mingw, whose compiler does not check in /usr/include ...
63 64
case "$target_os" in
	*mingw*)
65 66 67 68 69
		if test "$cross_compiling" != "yes"; then
			if test "$prefix" = "/usr" ; then
				CPPFLAGS="$CPPFLAGS -I/usr/include"
				LDFLAGS="$LDFLAGS -L/usr/lib"
			fi
70 71 72 73
		fi
	;;
esac

74

75 76 77 78 79 80
if test -f /etc/debian_version ; then
	use_deb=true;
else
	use_rpm=true;
fi

Simon Morlat's avatar
Simon Morlat committed
81
AC_ARG_ENABLE(debug,
82
		[  --enable-debug    Turn on debug mode (default=no)],
Simon Morlat's avatar
Simon Morlat committed
83 84 85 86
		[case "${enableval}" in
		yes) debug=true ;;
		no)  debug=false ;;
		*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
87
		esac],[debug=false])
Simon Morlat's avatar
Simon Morlat committed
88

89
CFLAGS="$CFLAGS -fms-extensions"
Simon Morlat's avatar
Simon Morlat committed
90
if test "$debug" = "no" ; then
91
	CFLAGS="$CFLAGS -g -O2"
Simon Morlat's avatar
Simon Morlat committed
92
else
93
	CFLAGS="$CFLAGS -g"
Simon Morlat's avatar
Simon Morlat committed
94
fi
95

Simon Morlat's avatar
Simon Morlat committed
96
AC_ARG_ENABLE(strict,
97
		[  --enable-strict    Turn on strict mode compilation, no warnings allowed (default=yes)],
Simon Morlat's avatar
Simon Morlat committed
98 99 100 101 102
		[case "${enableval}" in
		yes) strict=true ;;
		no)  strict=false ;;
		*) AC_MSG_ERROR(bad value ${enableval} for --enable-strict) ;;
		esac],[strict=true])
Simon Morlat's avatar
Simon Morlat committed
103

Simon Morlat's avatar
Simon Morlat committed
104
STRICT_OPTIONS="-Wall"
105
STRICT_OPTIONS_CC="-Wdeclaration-after-statement -Wstrict-prototypes"
106
STRICT_OPTIONS_CXX=""
Simon Morlat's avatar
Simon Morlat committed
107

108 109
case "$CC" in
	*clang*)
110
	STRICT_OPTIONS="$STRICT_OPTIONS -Wno-error=unknown-warning-option -Qunused-arguments -Wno-tautological-compare -Wno-builtin-requires-header -Wno-unused-function -Wno-gnu-designator "
111 112 113 114 115 116 117 118
	#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 "
	;;
	gcc*)
	STRICT_OPTIONS="$STRICT_OPTIONS -Wno-error=pragmas"
	;;
esac
Simon Morlat's avatar
Simon Morlat committed
119

120 121 122 123 124 125 126 127 128
# 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
Simon Morlat's avatar
Simon Morlat committed
129

130
if test "$strict" = "true"; then
131
	STRICT_OPTIONS="$STRICT_OPTIONS -Werror -Wno-error=unknown-pragmas -Wuninitialized -Wno-error=strict-prototypes"
Simon Morlat's avatar
Simon Morlat committed
132
fi
Simon Morlat's avatar
Simon Morlat committed
133

134
dnl because of antlr3 we must accept a few warnings...
Simon Morlat's avatar
Simon Morlat committed
135
dnl more portable for the moment
136
       LESS_STRICT_OPTIONS=
Simon Morlat's avatar
Simon Morlat committed
137 138 139
dnl       LESS_STRICT_OPTIONS="$STRICT_OPTIONS -Wno-error=unused-function \
dnl        -Wno-error=uninitialized -Wno-error=unused-variable \
dnl        -Wno-error=unused-but-set-variable "
140 141

AC_SUBST(STRICT_OPTIONS)
142
AC_SUBST(STRICT_OPTIONS_CC)
143
AC_SUBST(STRICT_OPTIONS_CXX)
144 145 146 147 148
AC_SUBST(LESS_STRICT_OPTIONS)

# Checks for libraries.

# Checks for header files.
jehan's avatar
jehan committed
149
AC_ARG_WITH( antlr,
150 151
      [  --with-antlr      Set prefix where libantlr3c can be found (ex:/usr or /usr/local)[default=PREFIX] ],
      [ antlr_prefix=${withval}],[ antlr_prefix=${prefix} ])
152 153

found_antlr3=no
Simon Morlat's avatar
Simon Morlat committed
154
if test "$antlr_prefix" != "NONE" && test "$antlr_prefix" != "/usr" ; then
155 156 157 158 159
	ANTLR_CFLAGS="-I${antlr_prefix}/include"
	ANTLR_LIBS="-L${antlr_prefix}/lib"
fi

ANTLR_LIBS="$ANTLR_LIBS -lantlr3c"
jehan's avatar
jehan committed
160 161 162

dnl check antlr headers
CPPFLAGS_save=$CPPFLAGS
163
CPPFLAGS="$ANTLR_CFLAGS $CPPFLAGS"
164
AC_CHECK_HEADERS([antlr3.h], [found_antlr3=yes])
165 166 167 168
AC_CHECK_DECL([antlr3StringStreamNew],
		[AC_DEFINE(HAVE_ANTLR_STRING_STREAM_NEW,1,[Defined when antlr 3.4 api is detected])],
		[foo=bar],
		[#include <antlr3.h>])
169 170
libresolv_have_res_get_servers=no
resolv_h_hav_res_ndestroy=no
171 172 173
LIBS_save=$LIBS

LIBS="$LIBS -lresolv"
174

175 176 177 178 179 180
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <resolv.h>]],
                      			[[res_getservers(NULL,NULL,0)]])]
								,[libresolv_have_res_get_servers=yes
									AC_MSG_NOTICE([res_getservers usable])]
								,[LIBS=$LIBS_save
									AC_MSG_WARN([res_getservers not usable])])
181

182 183 184 185
AC_CHECK_DECL([res_ndestroy],
		[resolv_h_hav_res_ndestroy=yes],
		[foo=bar],
		[#include <resolv.h>])
186 187 188
if test "${libresolv_have_res_get_servers}${resolv_h_hav_res_ndestroy}" == "yesyes" ; then
	AC_DEFINE(HAVE_RESINIT,1,[Defined when res_ninit api is available])
fi
jehan's avatar
jehan committed
189
CPPFLAGS=$CPPFLAGS_save
190

jehan's avatar
jehan committed
191
if test "$found_antlr3" != "yes" ; then
192
	AC_MSG_ERROR([Could not find antlr3 development files. Please install antlr3 version > 3.2 (libantlr3c-dev on debian/ubuntu systems)])
jehan's avatar
jehan committed
193 194 195
	ANTLR_CFLAGS=
	ANTLR_LIBS=
fi
Simon Morlat's avatar
Simon Morlat committed
196
AC_PATH_PROG([ANTLR],[antlr3],[no],[$antlr_prefix/bin /usr/bin])
jehan's avatar
jehan committed
197 198 199 200 201 202 203

if test $ANTLR = "no" ; then
antlr_java_prefixes="$antlr_prefix/share/java /usr/local/share/java /usr/share/java /opt/local/share/java"

	for antlr_java_prefix in $antlr_java_prefixes
	do
		antlr_jar=$antlr_java_prefix/antlr.jar
jehan's avatar
jehan committed
204 205 206 207
		if test -f $antlr_jar ; then
			break
		else
			antlr_jar=no
208 209 210 211 212 213 214
		fi
		antlr_jar=$antlr_java_prefix/antlr3.jar
		if test -f $antlr_jar ; then
			break
		else
			antlr_jar=no
		fi
jehan's avatar
jehan committed
215 216 217 218
	done
	if test $antlr_jar = "no" ; then
		AC_MSG_ERROR([Could not find antlr.jar. Please install antlr3 ])
	fi
Ghislain MARY's avatar
Ghislain MARY committed
219
	AC_PATH_PROG([JAVA],[java],[no])
jehan's avatar
jehan committed
220 221
	if test $JAVA = "no" ; then
		AC_MSG_ERROR([Could not find java prog. Please install java ])
222
	else
223
		ANTLR="$JAVA -Xmx256m -jar $antlr_jar"
jehan's avatar
jehan committed
224
	fi
225
fi
jehan's avatar
jehan committed
226 227 228
AC_SUBST(ANTLR_CFLAGS)
AC_SUBST(ANTLR_LIBS)

Simon Morlat's avatar
Simon Morlat committed
229 230 231 232 233 234 235 236
AC_ARG_ENABLE(	tls,
		[  --enable-tls		Enable TLS support (default=yes)],
		[case "${enableval}" in
		yes) use_tls=true ;;
		no)  use_tls=false ;;
		*) AC_MSG_ERROR(bad value ${enableval} for --enable-tls) ;;
		esac],[use_tls=true])

jehan's avatar
jehan committed
237 238 239 240
PKG_CHECK_MODULES(BCTOOLBOX, bctoolbox, [found_bctoolbox=yes],[found_bctoolbox=no])
if test "x$found_bctoolbox" = "xyes" ; then
	TLS_CFLAGS=$BCTOOLBOX_CFLAGS
	TLS_LIBS=$BCTOOLBOX_LIBS
241 242
else
	AC_MSG_ERROR(["Could not find bctoolbox (required dependency)"])
jehan's avatar
jehan committed
243
fi
244
AC_SUBST(TLS_CFLAGS)
245
AC_SUBST(TLS_LIBS)
jehan's avatar
jehan committed
246
AC_SUBST(TLS_PC)
247

248 249 250 251 252 253 254 255 256 257 258 259 260
AC_ARG_ENABLE(server_sockets,
	[AS_HELP_STRING([--disable-server-sockets], [Disable server sockets creation])],
	[case "${enableval}" in
		yes) server_sockets_enabled=true ;;
		no) server_sockets_enabled=false ;;
		*) AC_MSG_ERROR(bad value ${enableval} for --disable-server-sockets) ;;
	esac],
	[server_sockets_enabled=yes]
)
if test "x$server_sockets_enabled" = "xyes" ; then
	AC_DEFINE(ENABLE_SERVER_SOCKETS,1,[Defined when server sockets are enabled])
fi

Ghislain MARY's avatar
Ghislain MARY committed
261 262 263 264 265 266 267 268
AC_ARG_ENABLE(tunnel,
	[AS_HELP_STRING([--enable-tunnel], [Enable tunnel support (default=no)])])
if test "$enable_tunnel" = "yes" ; then
	PKG_CHECK_MODULES(TUNNEL, tunnel, [found_tunnel=yes], [found_tunnel=no])
	if test "$found_tunnel" = "yes" ; then
		AC_DEFINE(HAVE_TUNNEL, 1, [Defined when tunnel is enabled and available])
	fi
fi
269
AM_CONDITIONAL(BUILD_TUNNEL, test "$found_tunnel" = "yes")
Ghislain MARY's avatar
Ghislain MARY committed
270

271
PKG_CHECK_MODULES(CUNIT, cunit, [found_pkg_config_cunit=yes],[found_pkg_config_cunit=no])
jehan's avatar
jehan committed
272

273
if test "$found_pkg_config_cunit" = "no" ; then
274 275
	AC_CHECK_HEADERS(CUnit/CUnit.h,
		[
Simon Morlat's avatar
Simon Morlat committed
276 277 278 279
			AC_CHECK_LIB(cunit,CU_add_suite,[
				found_cunit=yes
				CUNIT_LIBS+=" -lcunit"
			])
280

281
		])
282 283
else
	found_cunit=yes
284
fi
Simon Morlat's avatar
Simon Morlat committed
285 286 287 288 289
case "$target_os" in
	*darwin*)
		#hack for macport
		CUNIT_LIBS+=" -lncurses"
	;;
Simon Morlat's avatar
Simon Morlat committed
290
	*mingw*)
Ghislain MARY's avatar
Ghislain MARY committed
291
		LIBBELLESIP_CFLAGS="-DBELLESIP_EXPORTS"
Simon Morlat's avatar
Simon Morlat committed
292
		CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0501"
293
		LIBS="$LIBS -lws2_32 -liphlpapi"
Ghislain MARY's avatar
Ghislain MARY committed
294
		LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
Simon Morlat's avatar
Simon Morlat committed
295
	;;
Simon Morlat's avatar
Simon Morlat committed
296
esac
Ghislain MARY's avatar
Ghislain MARY committed
297
AC_SUBST(LIBBELLESIP_CFLAGS)
Simon Morlat's avatar
Simon Morlat committed
298

299
if test "$found_cunit" = "no" ; then
300
	AC_MSG_WARN([Could not find cunit framework, tests are not compiled.])
301
else
302 303 304
	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])
305 306 307
	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])
308
fi
jehan's avatar
jehan committed
309 310 311 312 313 314 315 316 317 318
AC_ARG_ENABLE(tests,
        [AS_HELP_STRING([--disable-tests], [Disable compilation of tests])],
        [case "${enableval}" in
                yes)    tests_enabled=true ;;
                no)     tests_enabled=false ;;
                *)      AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
        esac],
        [tests_enabled=yes]
)
AM_CONDITIONAL(ENABLE_TESTS, test x$tests_enabled = xyes && test x$found_cunit = xyes)
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 353 354 355
dnl check zlib
AC_ARG_ENABLE(zlib,
	[AS_HELP_STRING([--disable-zlib], [Disable ZLib support])],
	[case "${enableval}" in
		yes)	build_zlib=true ;;
		no)	build_zlib=false ;;
		*)	AC_MSG_ERROR(bad value ${enableval} for --disable-zlib) ;;
	esac],
	[build_zlib=auto]
)
if test "$build_zlib" != "false" ; then
	PKG_CHECK_MODULES(ZLIB, [zlib], [found_zlib=yes], [found_zlib=no])
	if test "x$found_zlib" = "xno" ; then
		AC_CHECK_LIB(z, inflate,
			[AC_CHECK_HEADER([zlib.h],
			[AC_COMPILE_IFELSE(
				[AC_LANG_PROGRAM([[
				 #include <zlib.h>
				 #if !defined(ZLIB_VERNUM) || (ZLIB_VERNUM < 0x1230)
				 // compile error
				 #endif
			]],[])],
			[found_zlib=yes])])])
		if test "x$found_zlib" = "xno" ; then
			AC_MSG_NOTICE([zlib library and headers not found])
		else
			AC_DEFINE( HAVE_ZLIB, 1, [ZLIB support] )
			ZLIB_LIBS='-lz'
			AC_SUBST(ZLIB_LIBS)
		fi
	else
		AC_MSG_NOTICE([ZLIB found])
		AC_DEFINE( HAVE_ZLIB, 1, [ZLIB support] )
	fi
fi

356
REQUIRES_PRIVATE=""
357 358
LIBS_PRIVATE=""
if test "$found_pkg_config_cunit" = "yes" ; then
359
	REQUIRES_PRIVATE="$REQUIRES_PRIVATE cunit"
360 361 362 363
else
	if test "$found_cunit" = "yes" ; then
		LIBS_PRIVATE="$LIBS_PRIVATE $CUNIT_LIBS"
	fi
364
fi
365
LIBS_PRIVATE="$LIBS_PRIVATE $ANTLR_LIBS $POLARSSL_LIBS"
366 367 368
AC_SUBST(REQUIRES_PRIVATE)
AC_SUBST(LIBS_PRIVATE)

369 370 371
# Checks for typedefs, structures, and compiler characteristics.


372 373
# Eliminate -lstdc++ addition to postdeps for cross compiles.
postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
374 375


376
# Checks for library functions.
377
AC_CHECK_LIB(rt, clock_gettime)
Simon Morlat's avatar
Simon Morlat committed
378
AC_CHECK_LIB(dl, dlopen)
379 380
AC_CHECK_LIB(pthread, pthread_getspecific,,
    [AC_MSG_ERROR([pthread library not found])])
381 382 383 384 385 386 387

AC_CONFIG_FILES(
[
Makefile
include/Makefile
include/belle-sip/Makefile
src/Makefile
388
src/grammars/Makefile
389
tester/Makefile
jehan's avatar
jehan committed
390
belle-sip.pc
jehan's avatar
jehan committed
391
belle-sip.spec
392 393
])
AC_OUTPUT