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

4
AC_PREREQ([2.63])
5

6
AC_INIT([belle-sip],[1.6.0],[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 foreign])
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
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
51
	;;
Simon Morlat's avatar
Simon Morlat committed
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

96
AC_ARG_ENABLE(strict,
97
		[  --enable-strict    Turn on strict mode compilation, no warnings allowed (default=yes)],
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

104
STRICT_OPTIONS="-Wall"
105
STRICT_OPTIONS_CC="-Wdeclaration-after-statement -Wstrict-prototypes"
106
STRICT_OPTIONS_CXX=""
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
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
129

130
if test "$strict" = "true"; then
131
	STRICT_OPTIONS="$STRICT_OPTIONS -Werror -Wextra -Wno-unused-parameter -Wno-error=unknown-pragmas -Wuninitialized -Wno-error=strict-prototypes -Wno-missing-field-initializers"
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="-Wno-error=sign-compare"
137 138

AC_SUBST(STRICT_OPTIONS)
139
AC_SUBST(STRICT_OPTIONS_CC)
140
AC_SUBST(STRICT_OPTIONS_CXX)
141 142 143 144 145
AC_SUBST(LESS_STRICT_OPTIONS)

# Checks for libraries.

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

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

ANTLR_LIBS="$ANTLR_LIBS -lantlr3c"
jehan's avatar
jehan committed
157 158 159

dnl check antlr headers
CPPFLAGS_save=$CPPFLAGS
160
CPPFLAGS="$ANTLR_CFLAGS $CPPFLAGS"
161
AC_CHECK_HEADERS([antlr3.h], [found_antlr3=yes])
162 163 164 165
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>])
166 167
libresolv_have_res_get_servers=no
resolv_h_hav_res_ndestroy=no
168 169 170
LIBS_save=$LIBS

LIBS="$LIBS -lresolv"
171

172 173 174 175 176 177
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])])
178

179 180 181 182
AC_CHECK_DECL([res_ndestroy],
		[resolv_h_hav_res_ndestroy=yes],
		[foo=bar],
		[#include <resolv.h>])
183 184 185
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
186
CPPFLAGS=$CPPFLAGS_save
187

jehan's avatar
jehan committed
188
if test "$found_antlr3" != "yes" ; then
189
	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
190 191 192
	ANTLR_CFLAGS=
	ANTLR_LIBS=
fi
Simon Morlat's avatar
Simon Morlat committed
193
AC_PATH_PROG([ANTLR],[antlr3],[no],[$antlr_prefix/bin /usr/bin])
jehan's avatar
jehan committed
194 195 196 197 198 199 200

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
201 202 203 204
		if test -f $antlr_jar ; then
			break
		else
			antlr_jar=no
205 206 207 208 209 210 211
		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
212 213 214 215
	done
	if test $antlr_jar = "no" ; then
		AC_MSG_ERROR([Could not find antlr.jar. Please install antlr3 ])
	fi
216
	AC_PATH_PROG([JAVA],[java],[no])
jehan's avatar
jehan committed
217 218
	if test $JAVA = "no" ; then
		AC_MSG_ERROR([Could not find java prog. Please install java ])
219
	else
220
		ANTLR="$JAVA -Xmx256m -jar $antlr_jar"
jehan's avatar
jehan committed
221
	fi
222
fi
jehan's avatar
jehan committed
223 224 225
AC_SUBST(ANTLR_CFLAGS)
AC_SUBST(ANTLR_LIBS)

Simon Morlat's avatar
Simon Morlat committed
226 227 228 229 230 231 232 233
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])

234 235 236 237
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
238 239
else
	AC_MSG_ERROR(["Could not find bctoolbox (required dependency)"])
jehan's avatar
jehan committed
240
fi
241
AC_SUBST(TLS_CFLAGS)
242
AC_SUBST(TLS_LIBS)
jehan's avatar
jehan committed
243
AC_SUBST(TLS_PC)
244

Ghislain MARY's avatar
Ghislain MARY committed
245 246 247 248 249 250 251 252
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
253
AM_CONDITIONAL(BUILD_TUNNEL, test "$found_tunnel" = "yes")
Ghislain MARY's avatar
Ghislain MARY committed
254

255
PKG_CHECK_MODULES(BCTOOLBOXTESTER, bctoolbox-tester, [found_pkg_config_bctoolboxtester=yes],[found_pkg_config_bctoolboxtester=no])
256

Simon Morlat's avatar
Simon Morlat committed
257
case "$target_os" in
Simon Morlat's avatar
Simon Morlat committed
258
	*mingw*)
259
		LIBBELLESIP_CFLAGS="-DBELLESIP_EXPORTS"
Simon Morlat's avatar
Simon Morlat committed
260
		CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0501"
261
		LIBS="$LIBS -lws2_32 -liphlpapi"
262
		LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
Simon Morlat's avatar
Simon Morlat committed
263
	;;
Simon Morlat's avatar
Simon Morlat committed
264
esac
265
AC_SUBST(LIBBELLESIP_CFLAGS)
Simon Morlat's avatar
Simon Morlat committed
266

267 268
if test "$found_pkg_config_bctoolboxtester" = "no" ; then
	AC_MSG_WARN([Could not find bctoolbox tester wrapper, tests are not compiled.])
269
fi
270 271 272 273 274 275 276 277 278
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]
)
279
AM_CONDITIONAL(ENABLE_TESTS, test x$tests_enabled = xyes && test x$found_pkg_config_bctoolboxtester = xyes)
280

281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316
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

317
LIBS_PRIVATE="$LIBS_PRIVATE $ANTLR_LIBS $POLARSSL_LIBS"
318 319
AC_SUBST(LIBS_PRIVATE)

320 321 322
REQUIRES_PRIVATE=""
AC_SUBST(REQUIRES_PRIVATE)

323 324 325
# Checks for typedefs, structures, and compiler characteristics.


326 327
# Eliminate -lstdc++ addition to postdeps for cross compiles.
postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
328 329


330
# Checks for library functions.
331
AC_CHECK_LIB(rt, clock_gettime)
332
AC_CHECK_LIB(dl, dlopen)
333 334
AC_CHECK_LIB(pthread, pthread_getspecific,,
    [AC_MSG_ERROR([pthread library not found])])
335 336 337 338 339 340 341

AC_CONFIG_FILES(
[
Makefile
include/Makefile
include/belle-sip/Makefile
src/Makefile
342
src/grammars/Makefile
343
tester/Makefile
jehan's avatar
jehan committed
344
belle-sip.pc
jehan's avatar
jehan committed
345
belle-sip.spec
346 347
])
AC_OUTPUT