utils: add backward compatible replacement for raw g_strcmp0()
[siplcs.git] / configure.ac
blobcdade452a14566f3aa0c31480bfdfea75e48d686
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 dnl setup automake and require recent enough version
21 AM_INIT_AUTOMAKE([1.9 dist-bzip2 no-define tar-ustar])
23 AC_CANONICAL_HOST
25 dnl set PACKAGE_URL for autoconf < 2.64
26 AS_IF([test "x${PACKAGE_URL}" = x],
27         [AC_MSG_NOTICE([set PACKAGE_URL for autoconf < 2.64])
28          AC_DEFINE(PACKAGE_URL, "SIPE_HOMEPAGE", [Define to the home page for this package.])
31 dnl set programming language
32 AC_LANG(C)
33 AM_PROG_CC_C_O
34 AC_HEADER_STDC
36 dnl setup shared library generation
37 LT_INIT([disable-static])
39 dnl checks for tools
40 IT_PROG_INTLTOOL([0.35.0])
41 AC_PROG_INSTALL
42 AC_PROG_RANLIB
44 dnl ******************************
45 dnl Win32
46 dnl ******************************
47 AC_MSG_CHECKING([for Win32])
48 AS_CASE(["$host"],
49                 [*-mingw*], [os_win32=yes],
50                 [os_win32=no])
51 AC_MSG_RESULT([$os_win32])
52 AM_CONDITIONAL(SIPE_OS_WIN32, [test "x${os_win32}" = xyes])
54 dnl checks for header files
55 AC_CHECK_HEADERS([sys/sockio.h])
57 dnl checks for library functions
58 AC_CHECK_FUNCS([])
60 dnl tell pkgconfig to look in the same prefix where we're installing this to,
61 dnl as that is likely where libpurple will be found if it is not in the default
62 dnl pkgconfig path
63 PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${libdir}/pkgconfig"
64 export PKG_CONFIG_PATH
66 dnl debug mode
67 AC_ARG_ENABLE(debug,
68         [AS_HELP_STRING([--enable-debug],
69                         [compile with debugging support [default=no]])],
70         [],
71         [enable_debug=no])
73 AS_IF([test "x$enable_debug" = xyes],
74         [AC_DEFINE(DEBUG, 1, [Define if debugging is enabled.])])
75 AC_SUBST(DEBUG_CFLAGS)
77 dnl quality check mode
78 dnl For people who are interested in finding bugs and not hiding them
79 AC_ARG_ENABLE(quality-check,
80         [AS_HELP_STRING([--enable-quality-check],
81                         [compile with compiler checks enabled [default=yes]])],
82         [],
83         [enable_quality_check=yes])
85 AS_IF([test "x$enable_quality_check" = xyes],
86         [QUALITY_CFLAGS="$QUALITY_CFLAGS -Werror -Wall"
87          ac_save_CFLAGS=$CFLAGS
89          dnl GCC >= 3.4
90          AC_MSG_CHECKING([if $CC supports -Wextra])
91          CFLAGS="$QUALITY_CFLAGS -Wextra"
92          AC_COMPILE_IFELSE(
93                 AC_LANG_PROGRAM(),
94                 [AC_MSG_RESULT(yes)
95                  QUALITY_CFLAGS="$QUALITY_CFLAGS -Wextra"],
96                 [AC_MSG_RESULT(no)]
97          )
99          dnl declaration-after-statement (ISO C90 behaviour, as on Windows & GCC < 3)
100          AC_MSG_CHECKING([if $CC supports -Werror=declaration-after-statement])
101          CFLAGS="$QUALITY_CFLAGS -Werror=declaration-after-statement"
102          AC_COMPILE_IFELSE(
103                 AC_LANG_PROGRAM(),
104                 [AC_MSG_RESULT(yes)
105                  QUALITY_CFLAGS="$QUALITY_CFLAGS -Werror=declaration-after-statement"],
106                 [AC_MSG_RESULT(no)]
107          )
108          CFLAGS=$ac_save_CFLAGS])
109 AC_SUBST(QUALITY_CFLAGS)
111 dnl Check for pkg-config before using it
112 PKG_PROG_PKG_CONFIG
114 dnl build option: with voice & video support (for all backends)
115 AC_ARG_WITH(vv,
116         [AC_HELP_STRING([--with-vv],
117                 [compile with voice and video support @<:@default=check@:>@])],
118         [AS_IF([test "x$withval" = xyes], [with_vv=check])],
119         [with_vv=check])
121 dnl check for Kerberos 5 support
122 AC_ARG_WITH([krb5],
123         [AC_HELP_STRING([--with-krb5],
124                 [compile with Kerberos 5 support @<:@default=check@:>@])],
125         [AS_IF([test "x$withval" = xyes], [with_krb5=check])],
126         [with_krb5=check])
128 AS_IF([test "x$with_krb5" = xno], [], dnl disabled by user
129       [test "x$with_krb5" = xcheck],  dnl autodetect with krb5-config
130         [AC_MSG_CHECKING(if Kerberos 5 is available)
131          AS_IF([AC_RUN_LOG([krb5-config --version])],
132                 [KRB5_CFLAGS=`krb5-config --cflags 2>/dev/null`
133                  KRB5_LDFLAGS=""
135                  dnl same as AC_CHECK_LIB()
136                  LIBS="$LIBS `krb5-config --libs gssapi 2>/dev/null`"
137                  AC_DEFINE(HAVE_LIBKRB5, 1, [Define to 1 if you have the `krb5' library (-lkrb5)])],
138                 [AC_MSG_RESULT(no)
139                  with_krb5=no])],
140       [                               dnl path specified by user
141         KRB5_CFLAGS="-I${with_krb5}/include"
142         KRB5_LDFLAGS="-L${with_krb5}/lib"
143         ac_save_LDFLAGS="$LDLAGS"
144         LDFLAGS="$LDFLAGS $KRB5_LDFLAGS"
145         AC_CHECK_LIB(krb5, krb5_rd_req,          [],
146                 [AC_CHECK_LIB(krb5, krb5_rd_req, [],
147                         [AC_ERROR(Kerberos 5 libraries not found)])])
148         AC_CHECK_LIB(gssapi_krb5, gss_krb5_export_lucid_sec_context, [],
149                         [AC_ERROR(GSSAPI Kerberos 5 libraries not found)])
150         LDFLAGS="$ac_save_LDFLAGS"])
151 AM_CONDITIONAL(SIP_SEC_KRB5, [test "x$with_krb5" != xno])
152 AC_SUBST(KRB5_CFLAGS)
153 AC_SUBST(KRB5_LDFLAGS)
155 dnl check for glib
156 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0])
157 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0 >= 2.12.0])
159 dnl check for gmime
160 dnl See also: https://bugzilla.gnome.org/show_bug.cgi?id=613653#c8
161 PKG_CHECK_MODULES(GMIME, [gmime-2.6 >= 2.5.2],
162         [ac_have_gmime=yes],
163         [PKG_CHECK_MODULES(GMIME, [gmime-2.4 >= 2.4.16],
164                 [ac_have_gmime=yes],
165                 [ac_have_gmime=no])
167 AM_CONDITIONAL(SIPE_MIME_GMIME, [test "x$ac_have_gmime" = xyes])
168 AS_IF([test "x$ac_have_gmime" = xyes],
169         [AC_DEFINE(HAVE_GMIME, 1, [Define if gmime should be used in sipe.])])
171 dnl check for NSS
172 PKG_CHECK_MODULES(NSS, [nss],
173         [ac_have_nss=yes],
174         [PKG_CHECK_MODULES(NSS, [mozilla-nss],
175                 [ac_have_nss=yes],
176                 [PKG_CHECK_MODULES(NSS, [microb-engine-nss],
177                         [ac_have_nss=yes],
178                         [ac_have_nss=no])
179         ])
181 AM_CONDITIONAL(SIPE_CRYPTO_NSS, [test "x$ac_have_nss" = xyes])
182 AS_IF([test "x$ac_have_nss" = xyes],
183         [AC_DEFINE(HAVE_NSS, 1, [Define if nss should be used in sipe.])])
185 dnl check for libxml2
186 PKG_CHECK_MODULES(LIBXML2, [libxml-2.0])
188 dnl assumption check: sizof(uuid_t) must be 16 (see uuid.c)
189 AC_MSG_CHECKING([that sizeof(uuid_t) is 16])
190 ac_save_CFLAGS=$CFLAGS
191 CFLAGS="$GLIB_CFLAGS $QUALITY_CFLAGS"
192 dnl note the [[[ quoting: our code contains []!
193 AC_RUN_IFELSE(
194         AC_LANG_PROGRAM(
195                 [[[
196 #include <glib.h>
197 #include <stdio.h>
199 /* Copied from uuid.c */
200 typedef struct {
201    guint32 time_low;
202    guint16 time_mid;
203    guint16 time_hi_and_version;
204    guint8  clock_seq_hi_and_reserved;
205    guint8  clock_seq_low;
206    guint8  node[6];
207 } uuid_t;
208                 ]]],
209                 [if (sizeof(uuid_t) == 16) {
210                         return(0);
211                  } else {
212                         printf("\n\nOoops, sizeof(uuid_t) is %" G_GSIZE_FORMAT ".\n\n", sizeof(uuid_t));
213                         return(1);
214                  }]),
215         [AC_MSG_RESULT(yes)],
216         [AC_MSG_FAILURE([sizeof(uuid_t) is not 16
218 Please notify the SIPE developers.
220 Copy & paste all lines starting with the line
222   checking that sizeof(uuid_t) is 16...
224 to the report and attach the file "config.log".
226 Compiler information:
228  host:     $host
229  build:    $build
230  compiler: $CC
231 ])],
232         [AC_MSG_WARN([cross compiling: not checking])])
233 CFLAGS=$ac_save_CFLAGS
235 dnl build option: purple backend
236 AC_ARG_ENABLE([purple],
237         [AC_HELP_STRING([--enable-purple], [build purple plugin @<:@default=yes@:>@])],
238         [],
239         [enable_purple=yes])
240 with_purple_vv=no
241 AS_IF([test "x$enable_purple" != xno],
242         [PKG_CHECK_MODULES(PURPLE, [purple >= 2.4.0],
243                 [dnl unfortunately PURPLE_MAJOR_VERSION is not exported by purple.m4
244                  PURPLE_MAJOR_VERSION=`$PKG_CONFIG --modversion purple | cut -d. -f 1`
245                  AC_SUBST(PURPLE_MAJOR_VERSION)
247                  dnl let user now if he has a 32- and 64-bit header conflict...
248                  AC_MSG_CHECKING([for 32- and 64-bit header conflicts])
249                  ac_save_CFLAGS=$CFLAGS
250                  CFLAGS="$PURPLE_CFLAGS $QUALITY_CFLAGS"
251                  AC_COMPILE_IFELSE(
252                         AC_LANG_PROGRAM([
253 #include <glib.h>
254 #include <cipher.h>
256 /* Compile some code that has caused trouble in the past */
257 void testfunc(unsigned long len)
259   PurpleCipherContext *rc4 = NULL;
260   guchar *plaintext = NULL;
261   gsize plaintext_length = 0;
262   guchar *encrypted_text = NULL;
263   gsize dummy;
264   purple_cipher_context_set_option(rc4, "key_len", GUINT_TO_POINTER(len));
265   purple_cipher_context_encrypt(rc4, plaintext, plaintext_length,
266                                 encrypted_text, &dummy);
268                                         ],
269                                         [testfunc(16);]),
270                         [AC_MSG_RESULT(none)],
271                         [AC_MSG_FAILURE([conflicts found.
273 Check that you have the correct glib/libpurple headers installed for
274 your architecture or set GLIB_CFLAGS/PURPLE_CFLAGS to override the
275 system defaults.
277                         ])
279                  dnl on windows
280                  dnl test program needs to be in the same location as libpurple
281                  dnl installation for latter to load ssl plugin referenced by
282                  dnl RELATIVE path.
283                  AS_IF([test "x${os_win32}" != xyes],
284                         [dnl purple SSL support is mandatory
285                          AC_MSG_CHECKING([for purple SSL support])
286                          ac_save_LIBS=$LIBS
287                          LIBS="$PURPLE_LIBS"
288                          AC_RUN_IFELSE(
289                                 AC_LANG_PROGRAM([
290 #include <glib.h>
291 #include <plugin.h>
292 #include <sslconn.h>
294                                                 [
295         purple_plugins_init();
296         purple_plugins_probe(G_MODULE_SUFFIX);
297         purple_ssl_init();
298         return(purple_ssl_is_supported()?0:1);
299                                                 ]),
300                                 [AC_MSG_RESULT(ok)],
301                                 [AC_MSG_FAILURE([your purple hasn't been compiled with SSL support.
303                                 ],
304                                 [AC_MSG_WARN([cross compiling: not checking])])
305                  ])
307                  dnl check whether enable voice and video support
308                  AS_IF([test "x$with_vv" = xno], [], dnl disabled by user
309                        [test "x$with_vv" = xcheck],  dnl autodetect
310                          [AC_MSG_CHECKING(for purple voice and video support)
311                           AC_RUN_IFELSE(
312                                 AC_LANG_PROGRAM(
313                                         [[[
314 #include <libpurple/media.h>
315                                         ]]],
316                                         [return (purple_media_get_type() == G_TYPE_NONE ? 1 : 0);
317                                          purple_media_get_active_local_candidates(NULL, NULL, NULL);
318                                          purple_media_get_active_remote_candidates(NULL, NULL, NULL);]
319                                 ),
320                                 [AC_MSG_RESULT(ok)
321                                  PKG_CHECK_MODULES(NICE, [nice >= 0.0.14],
322                                         [PKG_CHECK_MODULES(PURPLE_MEDIA, [purple >= 2.7.0],
323                                                 [with_purple_vv=yes],
324                                                 [AC_MSG_NOTICE(libpurple >= 2.7.0 required: disabling purple voice and video support)])],
325                                         [AC_MSG_NOTICE(libnice required: disabling purple voice and video support)])],
326                                 [AC_MSG_RESULT(no - your purple hasn't been compiled with voice and video support.)],
327                                 [AC_MSG_WARN([cross compiling: not checking])])
328                          ])
329                  CFLAGS=$ac_save_CFLAGS
330                  LIBS=$ac_save_LIBS],
331                 [enable_purple=no])])
332 AM_CONDITIONAL(SIPE_INCLUDE_PURPLE, [test "x$enable_purple" != xno])
334 dnl build option: telepathy backend
335 AC_ARG_ENABLE([telepathy],
336         [AC_HELP_STRING([--enable-telepathy], [build telepathy plugin @<:@default=yes@:>@])],
337         [],
338         [enable_telepathy=yes])
339 AS_IF([test "x$enable_telepathy" != xno],
340         [PKG_CHECK_MODULES(TELEPATHY, [telepathy-glib],
341                 [dnl GMIME is a build requirement
342                  AS_IF([test "x$ac_have_gmime" = xyes],
343                         [],
344                         [AC_ERROR(GMIME package is required for telepathy plugin)])
346                  dnl NSS is a build requirement
347                  AS_IF([test "x$ac_have_nss" = xyes],
348                         [],
349                         [AC_ERROR(NSS package is required for telepathy plugin)])
351                  dnl NOTHING IMPLEMENTED YET!!!
352                 ],
353                 [enable_telepathy=no])])
354 AM_CONDITIONAL(SIPE_INCLUDE_TELEPATHY, [test "x$enable_telepathy" != xno])
356 dnl build option: kopete backend
357 AC_ARG_ENABLE([kopete],
358         [AC_HELP_STRING([--enable-kopete], [build kopete plugin @<:@default=no@:>@])],
359         [],
360         [enable_kopete=no])
361 AS_IF([test "x$enable_kopete" != xno],
362         [dnl GMIME is a build requirement
363          AS_IF([test "x$ac_have_gmime" = xyes],
364                 [],
365                 [AC_ERROR(GMIME package is required for kopete plugin)])
367          dnl NSS is a build requirement
368          AS_IF([test "x$ac_have_nss" = xyes],
369                 [],
370                 [AC_ERROR(NSS package is required for kopete plugin)])
372          dnl NOTHING IMPLEMENTED YET!!!
373         ],
374         [enable_kopete=no])
375 AM_CONDITIONAL(SIPE_INCLUDE_KOPETE, [test "x$enable_kopete" != xno])
377 dnl sanity check
378 AS_IF([test "x$enable_purple" = xno -a "x$enable_telepathy" = xno -a "x$enable_kopete" = xno],
379         [AC_ERROR(at least one plugin must be selected
381 If you didn't use a --enable option then please check that you have
382 the headers for the packages "purple" or "telepathy-glib" installed.
384         [])
386 dnl enable voice & video support if any backend supports it
387 AS_IF([test "x$with_purple_vv" != xno],
388         [AC_DEFINE(HAVE_VV, 1, [Define if voice & video is enabled.])])
389 AM_CONDITIONAL(SIPE_WITH_VV, [test "x$with_purple_vv" != xno])
391 dnl i18n
392 AC_MSG_CHECKING([locale_CPPFLAGS])
393 LOCALE_CPPFLAGS='-DLOCALEDIR=\"$(datadir)/locale\"'
394 AC_SUBST([LOCALE_CPPFLAGS])
395 AC_MSG_RESULT([$LOCALE_CPPFLAGS])
396 AM_GLIB_GNU_GETTEXT
397 AC_SUBST(GETTEXT_PACKAGE, "${PACKAGE_NAME}")
399 dnl codeset
400 AM_LANGINFO_CODESET
402 dnl substitutions and generated files
403 AC_CONFIG_HEADERS([config.h])
404 AC_CONFIG_FILES([
405         Makefile
406         pixmaps/Makefile
407         m4macros/Makefile
408         po/Makefile.in
409         pixmaps/16/Makefile
410         pixmaps/22/Makefile
411         pixmaps/48/Makefile
412         pixmaps/scalable/Makefile
413         src/Makefile
414         src/core/Makefile
415         src/api/Makefile
416         src/purple/Makefile
417         src/telepathy/Makefile
418         src/kopete/Makefile
419         ])
421 dnl generate files
422 AC_OUTPUT()
424 dnl additional info for the user
425 AS_ECHO()
426 AS_IF([test "x$enable_purple" = xno], 
427         [AS_ECHO("Not building purple plugin")],
428         [AS_ECHO("Build purple plugin")
429          AS_ECHO("PURPLE_CFLAGS  : $PURPLE_CFLAGS")
430          AS_ECHO("PURPLE_LIBS    : $PURPLE_LIBS")
431          AS_IF([test "x$with_purple_vv" = xno],
432           [AS_ECHO("Voice and video: disabled")],
433           [AS_ECHO("Voice and video: enabled")])
434         ])
435 AS_ECHO()
436 AS_IF([test "x$enable_telepathy" = xno],
437         [AS_ECHO("Not building telepathy plugin")],
438         [AS_ECHO("Build telepathy plugin")
439          AS_ECHO()
440          AS_ECHO("NOTHING IMPLEMENTED YET!!!")
441          AS_ECHO()
442          AS_ECHO("TELEPATHY_CFLAGS: $TELEPATHY_CFLAGS")
443          AS_ECHO("TELEPATHY_LIBS  : $TELEPATHY_LIBS")])
444 AS_ECHO()
445 AS_IF([test "x$enable_kopete" = xno],
446         [AS_ECHO("Not building kopete plugin")],
447         [AS_ECHO("Build kopete plugin")
448          AS_ECHO()
449          AS_ECHO("NOTHING IMPLEMENTED YET!!!")
450          AS_ECHO()])
451 AS_ECHO()
452 AS_IF([test "x$with_krb5" = xno],
453         [AS_ECHO("Not building with Kerberos 5 support")],
454         [AS_ECHO("Build with Kerberos 5 support")
455          AS_ECHO("KRB5_CFLAGS    : $KRB5_CFLAGS")
456          AS_ECHO("KRB5_LDFLAGS   : $KRB5_LDFLAGS")])
457 AS_ECHO()
458 AS_IF([test "x$enable_debug" = xno],
459         [AS_ECHO("Debugging not enabled")],
460         [AS_ECHO("Build with debugging enabled")
461          AS_ECHO("DEBUG_CFLAGS   : $DEBUG_CFLAGS")])
462 AS_ECHO()
463 AS_IF([test "x$QUALITY_CFLAGS" = x],
464         [AS_ECHO("Compiler checks disabled")],
465         [AS_ECHO("Build with compiler checks enabled")
466          AS_ECHO("QUALITY_CFLAGS : $QUALITY_CFLAGS")])
467 AS_ECHO()
468 AS_ECHO("configure complete. Now run 'make'")
469 AS_ECHO()
471 dnl The End.