1 dnl ensure recent enough version of Autoconf
4 dnl Use `VERSION' files to get version.
5 m4_define([SIPE_VERSION_DATA], m4_include([VERSION]))
7 dnl Strip off newline characters.
8 m4_define([SIPE_VERSION],
9 m4_substr(SIPE_VERSION_DATA,
10 [0], m4_decr(m4_len(SIPE_VERSION_DATA))))
13 m4_define([SIPE_HOMEPAGE], [http://sipe.sourceforge.net/])
15 dnl initialize package name, version, bugtracker & homepage
16 AC_INIT([pidgin-sipe], SIPE_VERSION,
17 [https://sourceforge.net/tracker/?atid=949931&group_id=194563], [],
20 AC_DEFINE([SIPE_TRANSLATIONS_URL],
21 ["https://www.transifex.net/projects/p/pidgin-sipe/r/mob/"],
22 [URL for submitting translations.])
24 dnl setup automake and require recent enough version
25 AM_INIT_AUTOMAKE([1.9 dist-bzip2 no-define tar-ustar])
29 dnl set PACKAGE_URL for autoconf < 2.64
30 AS_IF([test "x${PACKAGE_URL}" = x],
31 [AC_MSG_NOTICE([set PACKAGE_URL for autoconf < 2.64])
32 AC_DEFINE(PACKAGE_URL, "SIPE_HOMEPAGE", [Define to the home page for this package.])
35 dnl set programming language
40 dnl setup shared library generation
41 LT_INIT([disable-static])
44 IT_PROG_INTLTOOL([0.35.0])
48 dnl ******************************
50 dnl ******************************
51 AC_MSG_CHECKING([for Win32])
53 [*-mingw*], [os_win32=yes],
55 AC_MSG_RESULT([$os_win32])
56 AM_CONDITIONAL(SIPE_OS_WIN32, [test "x${os_win32}" = xyes])
58 dnl checks for header files
59 AC_CHECK_HEADERS([sys/sockio.h])
61 dnl checks for library functions
64 dnl tell pkgconfig to look in the same prefix where we're installing this to,
65 dnl as that is likely where libpurple will be found if it is not in the default
67 PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${libdir}/pkgconfig"
68 export PKG_CONFIG_PATH
72 [AS_HELP_STRING([--enable-debug],
73 [compile with debugging support [default=no]])],
77 AS_IF([test "x$enable_debug" = xyes],
78 [AC_DEFINE(DEBUG, 1, [Define if debugging is enabled.])])
79 AC_SUBST(DEBUG_CFLAGS)
81 dnl quality check mode
82 dnl For people who are interested in finding bugs and not hiding them
83 AC_ARG_ENABLE(quality-check,
84 [AS_HELP_STRING([--enable-quality-check],
85 [compile with compiler checks enabled [default=yes]])],
87 [enable_quality_check=yes])
89 AS_IF([test "x$enable_quality_check" = xyes],
90 [dnl default quality configuration
91 QUALITY_CFLAGS="$QUALITY_CFLAGS -Werror -Wall"
93 dnl enable warnings supported by the GCC on the build system
96 "-Waggregate-return" \
98 "-Wdeclaration-after-statement" \
99 "-Wdeprecated-declarations" \
101 "-Wmaybe-uninitialized" \
102 "-Wmissing-declarations" \
103 "-Wmissing-prototypes" \
107 "-Wunused-but-set-variable" \
109 ac_save_CFLAGS=$CFLAGS
110 AC_MSG_CHECKING([if $CC supports $newflag])
111 CFLAGS="$QUALITY_CFLAGS $newflag"
113 [AC_LANG_SOURCE([[]])],
115 QUALITY_CFLAGS="$QUALITY_CFLAGS $newflag"],
118 CFLAGS=$ac_save_CFLAGS
121 AC_SUBST(QUALITY_CFLAGS)
123 dnl Check for pkg-config before using it
126 dnl check for valgrind (optional, only needed for debugging)
127 PKG_CHECK_MODULES(VALGRIND, [valgrind],
128 [AC_DEFINE(HAVE_VALGRIND, 1, [Define to 1 if you have the valgrind headers])],
131 dnl build option: with voice & video support (for all backends)
133 [AC_HELP_STRING([--with-vv],
134 [compile with voice and video support @<:@default=check@:>@])],
135 [AS_IF([test "x$withval" = xyes], [with_vv=check])],
138 dnl check for Kerberos 5 support
140 [AC_HELP_STRING([--with-krb5],
141 [compile with Kerberos 5 support @<:@default=check@:>@])],
142 [AS_IF([test "x$withval" = xyes], [with_krb5=check])],
145 AS_IF([test "x$with_krb5" = xno], [], dnl disabled by user
146 [test "x$with_krb5" = xcheck], dnl autodetect with krb5-config
147 [AC_MSG_CHECKING(if Kerberos 5 is available)
148 AS_IF([AC_RUN_LOG([krb5-config --version])],
149 [KRB5_CFLAGS=`krb5-config --cflags 2>/dev/null`
152 dnl same as AC_CHECK_LIB()
153 LIBS="$LIBS `krb5-config --libs gssapi 2>/dev/null`"
154 AC_DEFINE(HAVE_LIBKRB5, 1, [Define to 1 if you have the `krb5' library (-lkrb5)])],
157 [ dnl path specified by user
158 KRB5_CFLAGS="-I${with_krb5}/include"
159 KRB5_LDFLAGS="-L${with_krb5}/lib"
160 ac_save_LDFLAGS="$LDLAGS"
161 LDFLAGS="$LDFLAGS $KRB5_LDFLAGS"
162 AC_CHECK_LIB(krb5, krb5_rd_req, [],
163 [AC_CHECK_LIB(krb5, krb5_rd_req, [],
164 [AC_ERROR(Kerberos 5 libraries not found)])])
165 AC_CHECK_LIB(gssapi_krb5, gss_krb5_export_lucid_sec_context, [],
166 [AC_ERROR(GSSAPI Kerberos 5 libraries not found)])
167 LDFLAGS="$ac_save_LDFLAGS"])
168 AM_CONDITIONAL(SIP_SEC_KRB5, [test "x$with_krb5" != xno])
169 AC_SUBST(KRB5_CFLAGS)
170 AC_SUBST(KRB5_LDFLAGS)
173 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0])
174 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0 >= 2.12.0])
177 dnl See also: https://bugzilla.gnome.org/show_bug.cgi?id=613653#c8
178 PKG_CHECK_MODULES(GMIME, [gmime-2.6 >= 2.5.2],
180 [PKG_CHECK_MODULES(GMIME, [gmime-2.4 >= 2.4.16],
184 AM_CONDITIONAL(SIPE_MIME_GMIME, [test "x$ac_have_gmime" = xyes])
185 AS_IF([test "x$ac_have_gmime" = xyes],
186 [AC_DEFINE(HAVE_GMIME, 1, [Define if gmime should be used in sipe.])])
189 PKG_CHECK_MODULES(NSS, [nss],
191 [PKG_CHECK_MODULES(NSS, [mozilla-nss],
193 [PKG_CHECK_MODULES(NSS, [microb-engine-nss],
195 [AC_ERROR([nss, mozilla-nss or microb-engine-nss package is required])])
199 dnl check for libxml2
200 PKG_CHECK_MODULES(LIBXML2, [libxml-2.0])
202 dnl assumption check: sizof(uuid_t) must be 16 (see uuid.c)
203 AC_MSG_CHECKING([that sizeof(uuid_t) is 16])
204 ac_save_CFLAGS=$CFLAGS
205 CFLAGS="$GLIB_CFLAGS $QUALITY_CFLAGS"
206 dnl note the [[[ quoting: our code contains []!
213 /* Copied from uuid.c */
217 guint16 time_hi_and_version;
218 guint8 clock_seq_hi_and_reserved;
219 guint8 clock_seq_low;
223 [[if (sizeof(uuid_t) == 16) {
226 printf("\n\nOoops, sizeof(uuid_t) is %" G_GSIZE_FORMAT ".\n\n", sizeof(uuid_t));
229 [AC_MSG_RESULT(yes)],
230 [AC_MSG_FAILURE([sizeof(uuid_t) is not 16
232 Please notify the SIPE developers.
234 Copy & paste all lines starting with the line
236 checking that sizeof(uuid_t) is 16...
238 to the report and attach the file "config.log".
240 Compiler information:
246 [AC_MSG_WARN([cross compiling: not checking])])
247 CFLAGS=$ac_save_CFLAGS
249 dnl build option: OCS2005 client hack
250 AC_ARG_ENABLE([ocs2005-message-hack],
251 [AC_HELP_STRING([--enable-ocs2005-message-hack], [disable message timeout for OCS2005 clients
252 which causes "false" not delivered error messages
253 @<:@default=no@:>@])],
254 [AC_DEFINE([ENABLE_OCS2005_MESSAGE_HACK], [1],
255 [Define to 1 to disable SIP MESSAGE timeout feature.
256 OCS2005 clients don't seem to acknowledge MESSAGEs and
257 disabling the timeout suppresses "false" error messages])])
259 dnl build option: purple backend
260 AC_ARG_ENABLE([purple],
261 [AC_HELP_STRING([--enable-purple], [build purple plugin @<:@default=yes@:>@])],
265 AS_IF([test "x$enable_purple" != xno],
266 [PKG_CHECK_MODULES(PURPLE, [purple >= 2.4.0],
267 [dnl unfortunately PURPLE_MAJOR_VERSION is not exported by purple.m4
268 PURPLE_MAJOR_VERSION=`$PKG_CONFIG --modversion purple | cut -d. -f 1`
269 AC_SUBST(PURPLE_MAJOR_VERSION)
271 dnl let user now if he has a 32- and 64-bit header conflict...
272 AC_MSG_CHECKING([for 32- and 64-bit header conflicts])
273 ac_save_CFLAGS=$CFLAGS
274 CFLAGS="$PURPLE_CFLAGS $QUALITY_CFLAGS"
280 /* Compile some code that has caused trouble in the past */
281 static void testfunc(unsigned long len)
283 PurpleCipherContext *rc4 = NULL;
284 guchar *plaintext = NULL;
285 gsize plaintext_length = 0;
286 guchar *encrypted_text = NULL;
288 purple_cipher_context_set_option(rc4, "key_len", GUINT_TO_POINTER(len));
289 purple_cipher_context_encrypt(rc4, plaintext, plaintext_length,
290 encrypted_text, &dummy);
294 [AC_MSG_RESULT(none)],
295 [AC_MSG_FAILURE([conflicts found.
297 Check that you have the correct glib/libpurple headers installed for
298 your architecture or set GLIB_CFLAGS/PURPLE_CFLAGS to override the
304 dnl test program needs to be in the same location as libpurple
305 dnl installation for latter to load ssl plugin referenced by
307 AS_IF([test "x${os_win32}" != xyes],
308 [dnl purple SSL support is mandatory
309 AC_MSG_CHECKING([for purple SSL support])
319 purple_plugins_init();
320 purple_plugins_probe(G_MODULE_SUFFIX);
322 return(purple_ssl_is_supported()?0:1);
325 [AC_MSG_FAILURE([your purple hasn't been compiled with SSL support.
328 [AC_MSG_WARN([cross compiling: not checking])])
331 dnl check whether enable voice and video support
332 AS_IF([test "x$with_vv" = xno], [], dnl disabled by user
333 [test "x$with_vv" = xcheck], dnl autodetect
334 [AC_MSG_CHECKING(for purple voice and video support)
339 [[return (purple_media_get_type() == G_TYPE_NONE ? 1 : 0);]]
342 PKG_CHECK_MODULES(NICE, [nice >= 0.1.0],
343 dnl sipe-media.c uses g_slist_free_full()
344 [PKG_CHECK_MODULES(_SIPE_MEDIA_RECHECK_PLEASE_IGNORE, [purple >= 2.8.0 glib-2.0 >= 2.28.0],
345 [PKG_CHECK_MODULES(GSTREAMER, [gstreamer-0.10],
346 [with_purple_vv=yes],
347 [AC_MSG_NOTICE(GStreamer required: disabling purple voice and video support)])],
348 [AC_MSG_NOTICE(libpurple >= 2.8.0 glib2 >= 2.28.0 required: disabling purple voice and video support)])],
349 [AC_MSG_NOTICE(libnice required: disabling purple voice and video support)])],
350 [AC_MSG_RESULT(no - your purple hasn't been compiled with voice and video support.)],
351 [AC_MSG_WARN([cross compiling: not checking])])
354 dnl check if we have TCP media transport patches in libpurple
355 AS_IF([test "x$with_purple_vv" != xno],
357 AC_MSG_CHECKING(for TCP media transport)
359 [AC_LANG_PROGRAM([[#include <media.h>]],[[return PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_ACTIVE]])],
362 AC_DEFINE(HAVE_ICE_TCP, 1, [Define if we have support for TCP media transport.])
369 CFLAGS=$ac_save_CFLAGS
371 [enable_purple=no])])
372 AM_CONDITIONAL(SIPE_INCLUDE_PURPLE, [test "x$enable_purple" != xno])
374 dnl build option: telepathy backend
375 AC_ARG_ENABLE([telepathy],
376 [AC_HELP_STRING([--enable-telepathy], [build telepathy plugin @<:@default=yes@:>@])],
378 [enable_telepathy=yes])
379 AS_IF([test "x$enable_telepathy" != xno],
380 [PKG_CHECK_MODULES(TELEPATHY_GLIB, [telepathy-glib >= 0.18.0],
381 [dnl GMIME is a build requirement
382 AS_IF([test "x$ac_have_gmime" = xyes],
384 [AC_ERROR(GMIME package is required for telepathy plugin)])
386 dnl telepathy is based on GObject & D-Bus GLib
387 PKG_CHECK_MODULES(GOBJECT, [gobject-2.0])
388 PKG_CHECK_MODULES(DBUS_GLIB, [dbus-glib-1])
390 dnl telepathy uses from gio:
391 dnl - GIOStream (>= 2.22.0)
392 dnl - GResolver (>= 2.22.0)
393 dnl - GTlsConnection (>= 2.28.0)
394 PKG_CHECK_MODULES(GIO, [gio-2.0 >= 2.28.0])
397 [enable_telepathy=no])])
398 AM_CONDITIONAL(SIPE_INCLUDE_TELEPATHY, [test "x$enable_telepathy" != xno])
401 AS_IF([test "x$enable_purple" = xno -a "x$enable_telepathy" = xno],
402 [AC_ERROR(at least one plugin must be selected
404 If you didn't use a --enable option then please check that you have
405 the headers for the packages "purple" or "telepathy-glib" installed.
409 dnl enable voice & video support if any backend supports it
410 AS_IF([test "x$with_purple_vv" != xno],
411 [AC_DEFINE(HAVE_VV, 1, [Define if voice & video is enabled.])])
412 AM_CONDITIONAL(SIPE_WITH_VV, [test "x$with_purple_vv" != xno])
415 AC_MSG_CHECKING([locale_CPPFLAGS])
416 LOCALE_CPPFLAGS='-DLOCALEDIR=\"$(datadir)/locale\"'
417 AC_SUBST([LOCALE_CPPFLAGS])
418 AC_MSG_RESULT([$LOCALE_CPPFLAGS])
420 AC_SUBST(GETTEXT_PACKAGE, "${PACKAGE_NAME}")
425 dnl substitutions and generated files
426 AC_CONFIG_HEADERS([config.h])
437 pixmaps/scalable/Makefile
442 src/telepathy/Makefile
443 src/telepathy/data/Makefile
449 dnl additional info for the user
451 AS_IF([test "x$enable_purple" = xno],
452 [AS_ECHO("Not building purple plugin")],
453 [AS_ECHO("Build purple plugin")
454 AS_ECHO("PURPLE_CFLAGS : $PURPLE_CFLAGS")
455 AS_ECHO("PURPLE_LIBS : $PURPLE_LIBS")
456 AS_ECHO_N("Voice and video: ")
457 AS_IF([test "x$with_purple_vv" = xno],
458 [AS_ECHO("disabled")],
461 AS_IF([test "x$with_purple_tcp" = xyes], [AS_ECHO_N(" with TCP transport")])
466 AS_IF([test "x$enable_telepathy" = xno],
467 [AS_ECHO("Not building telepathy plugin")],
468 [AS_ECHO("Build telepathy plugin")
469 AS_ECHO("TELEPATHY_GLIB_CFLAGS: $TELEPATHY_GLIB_CFLAGS")
470 AS_ECHO("TELEPATHY_GLIB_LIBS : $TELEPATHY_GLIB_LIBS")])
472 AS_IF([test "x$with_krb5" = xno],
473 [AS_ECHO("Not building with Kerberos 5 support")],
474 [AS_ECHO("Build with Kerberos 5 support")
475 AS_ECHO("KRB5_CFLAGS : $KRB5_CFLAGS")
476 AS_ECHO("KRB5_LDFLAGS : $KRB5_LDFLAGS")])
478 AS_IF([test "x$enable_debug" = xno],
479 [AS_ECHO("Debugging not enabled")],
480 [AS_ECHO("Build with debugging enabled")
481 AS_ECHO("DEBUG_CFLAGS : $DEBUG_CFLAGS")])
483 AS_IF([test "x$QUALITY_CFLAGS" = x],
484 [AS_ECHO("Compiler checks disabled")],
485 [AS_ECHO("Build with compiler checks enabled")
486 AS_ECHO("QUALITY_CFLAGS : $QUALITY_CFLAGS")])
488 AS_ECHO("configure complete. Now run 'make'")