security: fix init context for HTTP in SSPI
[siplcs.git] / configure.ac
blob7de089f673eaf46ca622002b50ddbdf9638b786e
1 dnl ensure recent enough version of Autoconf
2 AC_PREREQ([2.50])
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))))
12 dnl homepage
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], [],
18         SIPE_HOMEPAGE)
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])
27 AC_CANONICAL_HOST
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
36 AC_LANG(C)
37 AM_PROG_CC_C_O
38 AC_HEADER_STDC
40 dnl setup shared library generation
41 LT_INIT([disable-static])
43 dnl checks for tools
44 IT_PROG_INTLTOOL([0.35.0])
45 AC_PROG_INSTALL
46 AC_PROG_RANLIB
48 dnl ******************************
49 dnl Win32
50 dnl ******************************
51 AC_MSG_CHECKING([for Win32])
52 AS_CASE(["$host"],
53                 [*-mingw*], [os_win32=yes],
54                 [os_win32=no])
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
62 AC_CHECK_FUNCS([])
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
66 dnl pkgconfig path
67 PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${libdir}/pkgconfig"
68 export PKG_CONFIG_PATH
70 dnl debug mode
71 AC_ARG_ENABLE(debug,
72         [AS_HELP_STRING([--enable-debug],
73                         [compile with debugging support [default=no]])],
74         [],
75         [enable_debug=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]])],
86         [],
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
94          for newflag in \
95                         "-Wextra" \
96                         "-Waggregate-return" \
97                         "-Wcast-align" \
98                         "-Wdeclaration-after-statement" \
99                         "-Wdeprecated-declarations" \
100                         "-Winit-self" \
101                         "-Wmaybe-uninitialized" \
102                         "-Wmissing-declarations" \
103                         "-Wmissing-prototypes" \
104                         "-Wnested-externs" \
105                         "-Wpointer-arith" \
106                         "-Wundef" \
107                         "-Wunused-but-set-variable" \
108          ; do
109                  ac_save_CFLAGS=$CFLAGS
110                  AC_MSG_CHECKING([if $CC supports $newflag])
111                  CFLAGS="$QUALITY_CFLAGS $newflag"
112                  AC_COMPILE_IFELSE(
113                         [AC_LANG_SOURCE([[]])],
114                         [AC_MSG_RESULT(yes)
115                          QUALITY_CFLAGS="$QUALITY_CFLAGS $newflag"],
116                         [AC_MSG_RESULT(no)]
117                  )
118                  CFLAGS=$ac_save_CFLAGS
119          done
120         ])
121 AC_SUBST(QUALITY_CFLAGS)
123 dnl Check for pkg-config before using it
124 PKG_PROG_PKG_CONFIG
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])],
129         [AC_MSG_RESULT(no)])
131 dnl build option: with voice & video support (for all backends)
132 AC_ARG_WITH(vv,
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])],
136         [with_vv=check])
138 dnl check for Kerberos 5 support
139 AC_ARG_WITH([krb5],
140         [AC_HELP_STRING([--with-krb5],
141                 [compile with Kerberos 5 support @<:@default=check@:>@])],
142         [AS_IF([test "x$withval" = xyes], [with_krb5=check])],
143         [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`
150                  KRB5_LDFLAGS=""
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)])],
155                 [AC_MSG_RESULT(no)
156                  with_krb5=no])],
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)
172 dnl check for glib
173 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0])
174 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0 >= 2.12.0])
176 dnl check for gmime
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],
179         [ac_have_gmime=yes],
180         [PKG_CHECK_MODULES(GMIME, [gmime-2.4 >= 2.4.16],
181                 [ac_have_gmime=yes],
182                 [ac_have_gmime=no])
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.])])
188 dnl check for NSS
189 PKG_CHECK_MODULES(NSS, [nss],
190         [],
191         [PKG_CHECK_MODULES(NSS, [mozilla-nss],
192                 [],
193                 [PKG_CHECK_MODULES(NSS, [microb-engine-nss],
194                         [],
195                         [AC_ERROR([nss, mozilla-nss or microb-engine-nss package is required])])
196         ])
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 []!
207 AC_RUN_IFELSE(
208         [AC_LANG_PROGRAM(
209                 [[
210 #include <glib.h>
211 #include <stdio.h>
213 /* Copied from uuid.c */
214 typedef struct {
215    guint32 time_low;
216    guint16 time_mid;
217    guint16 time_hi_and_version;
218    guint8  clock_seq_hi_and_reserved;
219    guint8  clock_seq_low;
220    guint8  node[6];
221 } uuid_t;
222                 ]],
223                 [[if (sizeof(uuid_t) == 16) {
224                         return(0);
225                  } else {
226                         printf("\n\nOoops, sizeof(uuid_t) is %" G_GSIZE_FORMAT ".\n\n", sizeof(uuid_t));
227                         return(1);
228                  }]])],
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:
242  host:     $host
243  build:    $build
244  compiler: $CC
245 ])],
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@:>@])],
262         [],
263         [enable_purple=yes])
264 with_purple_vv=no
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"
275                  AC_COMPILE_IFELSE(
276                         [AC_LANG_PROGRAM([[
277 #include <glib.h>
278 #include <cipher.h>
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;
287   gsize dummy;
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);
292                                         ]],
293                                         [[testfunc(16);]])],
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
299 system defaults.
301                         ])
303                  dnl on windows
304                  dnl test program needs to be in the same location as libpurple
305                  dnl installation for latter to load ssl plugin referenced by
306                  dnl RELATIVE path.
307                  AS_IF([test "x${os_win32}" != xyes],
308                         [dnl purple SSL support is mandatory
309                          AC_MSG_CHECKING([for purple SSL support])
310                          ac_save_LIBS=$LIBS
311                          LIBS="$PURPLE_LIBS"
312                          AC_RUN_IFELSE(
313                                 [AC_LANG_PROGRAM([[
314 #include <glib.h>
315 #include <plugin.h>
316 #include <sslconn.h>
317                                                 ]],
318                                                 [[
319         purple_plugins_init();
320         purple_plugins_probe(G_MODULE_SUFFIX);
321         purple_ssl_init();
322         return(purple_ssl_is_supported()?0:1);
323                                                 ]])],
324                                 [AC_MSG_RESULT(ok)],
325                                 [AC_MSG_FAILURE([your purple hasn't been compiled with SSL support.
327                                 ],
328                                 [AC_MSG_WARN([cross compiling: not checking])])
329                  ])
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)
335                           AC_RUN_IFELSE(
336                                 [AC_LANG_PROGRAM([[
337 #include <media.h>
338                                         ]],
339                                         [[return (purple_media_get_type() == G_TYPE_NONE ? 1 : 0);]]
340                                 )],
341                                 [AC_MSG_RESULT(ok)
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])])
352                          ])
354                  dnl check if we have TCP media transport patches in libpurple
355                  AS_IF([test "x$with_purple_vv" != xno],
356                         [
357                          AC_MSG_CHECKING(for TCP media transport)
358                          AC_COMPILE_IFELSE(
359                                 [AC_LANG_PROGRAM([[#include <media.h>]],[[return PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_ACTIVE]])],
360                                 [
361                                  with_purple_tcp=yes
362                                  AC_DEFINE(HAVE_ICE_TCP, 1, [Define if we have support for TCP media transport.])
363                                  AC_MSG_RESULT(yes)
364                                 ],
365                                 [AC_MSG_RESULT(no)]
366                          )
367                         ])
369                  CFLAGS=$ac_save_CFLAGS
370                  LIBS=$ac_save_LIBS],
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@:>@])],
377         [],
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],
383                         [],
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])
396                 ],
397                 [enable_telepathy=no])])
398 AM_CONDITIONAL(SIPE_INCLUDE_TELEPATHY, [test "x$enable_telepathy" != xno])
400 dnl sanity check
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.
407         [])
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])
414 dnl these code parts rely on interfaces that require GValueArray. This
415 dnl type has been declared "deprectated" in glib-2.0 >= 2.32.0, but there
416 dnl is no backward compatible replacement implementation possible
417 AS_IF([test "x$with_purple_vv" != xno -o "x$enable_telepathy" != xno],
418         [AC_DEFINE(GLIB_VERSION_MIN_REQUIRED, GLIB_VERSION_2_28,
419                    [We need GValueArray for which no replacement is available])])
421 dnl i18n
422 AC_MSG_CHECKING([locale_CPPFLAGS])
423 LOCALE_CPPFLAGS='-DLOCALEDIR=\"$(datadir)/locale\"'
424 AC_SUBST([LOCALE_CPPFLAGS])
425 AC_MSG_RESULT([$LOCALE_CPPFLAGS])
426 AM_GLIB_GNU_GETTEXT
427 AC_SUBST(GETTEXT_PACKAGE, "${PACKAGE_NAME}")
429 dnl codeset
430 AM_LANGINFO_CODESET
432 dnl substitutions and generated files
433 AC_CONFIG_HEADERS([config.h])
434 AC_CONFIG_FILES([
435         Makefile
436         pixmaps/Makefile
437         m4macros/Makefile
438         po/Makefile.in
439         pixmaps/16/Makefile
440         pixmaps/22/Makefile
441         pixmaps/24/Makefile
442         pixmaps/32/Makefile
443         pixmaps/48/Makefile
444         pixmaps/scalable/Makefile
445         src/Makefile
446         src/core/Makefile
447         src/api/Makefile
448         src/purple/Makefile
449         src/telepathy/Makefile
450         src/telepathy/data/Makefile
451         ])
453 dnl generate files
454 AC_OUTPUT()
456 dnl additional info for the user
457 AS_ECHO()
458 AS_IF([test "x$enable_purple" = xno],
459         [AS_ECHO("Not building purple plugin")],
460         [AS_ECHO("Build purple plugin")
461          AS_ECHO("PURPLE_CFLAGS  : $PURPLE_CFLAGS")
462          AS_ECHO("PURPLE_LIBS    : $PURPLE_LIBS")
463          AS_ECHO_N("Voice and video: ")
464          AS_IF([test "x$with_purple_vv" = xno],
465           [AS_ECHO("disabled")],
466           [
467            AS_ECHO_N("enabled")
468            AS_IF([test "x$with_purple_tcp" = xyes], [AS_ECHO_N(" with TCP transport")])
469            AS_ECHO()
470           ])
471         ])
472 AS_ECHO()
473 AS_IF([test "x$enable_telepathy" = xno],
474         [AS_ECHO("Not building telepathy plugin")],
475         [AS_ECHO("Build telepathy plugin")
476          AS_ECHO("TELEPATHY_GLIB_CFLAGS: $TELEPATHY_GLIB_CFLAGS")
477          AS_ECHO("TELEPATHY_GLIB_LIBS  : $TELEPATHY_GLIB_LIBS")])
478 AS_ECHO()
479 AS_IF([test "x$with_krb5" = xno],
480         [AS_ECHO("Not building with Kerberos 5 support")],
481         [AS_ECHO("Build with Kerberos 5 support")
482          AS_ECHO("KRB5_CFLAGS    : $KRB5_CFLAGS")
483          AS_ECHO("KRB5_LDFLAGS   : $KRB5_LDFLAGS")])
484 AS_ECHO()
485 AS_IF([test "x$enable_debug" = xno],
486         [AS_ECHO("Debugging not enabled")],
487         [AS_ECHO("Build with debugging enabled")
488          AS_ECHO("DEBUG_CFLAGS   : $DEBUG_CFLAGS")])
489 AS_ECHO()
490 AS_IF([test "x$QUALITY_CFLAGS" = x],
491         [AS_ECHO("Compiler checks disabled")],
492         [AS_ECHO("Build with compiler checks enabled")
493          AS_ECHO("QUALITY_CFLAGS : $QUALITY_CFLAGS")])
494 AS_ECHO()
495 AS_ECHO("configure complete. Now run 'make'")
496 AS_ECHO()
498 dnl The End.