media: do not set "controlling-mode" parameter
[siplcs.git] / configure.ac
blob6f9f412bd781d726363b744c232ad9d2083367a8
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 PREFIX=$ac_default_prefix
64 AS_IF([test "x$prefix" != xNONE],
65         [PREFIX=$prefix])
67 PKG_CONFIG_PATH="$PKG_CONFIG_PATH":"$PREFIX/lib/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         [QUALITY_CFLAGS="$QUALITY_CFLAGS -Werror -Wall"
91          ac_save_CFLAGS=$CFLAGS
93          dnl GCC >= 3.4
94          AC_MSG_CHECKING([if $CC supports -Wextra])
95          CFLAGS="$QUALITY_CFLAGS -Wextra"
96          AC_COMPILE_IFELSE(
97                 AC_LANG_PROGRAM(),
98                 [AC_MSG_RESULT(yes)
99                  QUALITY_CFLAGS="$QUALITY_CFLAGS -Wextra"],
100                 [AC_MSG_RESULT(no)]
101          )
103          dnl declaration-after-statement (ISO C90 behaviour, as on Windows & GCC < 3)
104          AC_MSG_CHECKING([if $CC supports -Werror=declaration-after-statement])
105          CFLAGS="$QUALITY_CFLAGS -Werror=declaration-after-statement"
106          AC_COMPILE_IFELSE(
107                 AC_LANG_PROGRAM(),
108                 [AC_MSG_RESULT(yes)
109                  QUALITY_CFLAGS="$QUALITY_CFLAGS -Werror=declaration-after-statement"],
110                 [AC_MSG_RESULT(no)]
111          )
112          CFLAGS=$ac_save_CFLAGS])
113 AC_SUBST(QUALITY_CFLAGS)
115 dnl Check for pkg-config before using it
116 PKG_PROG_PKG_CONFIG
118 dnl build option: with voice & video support (for all backends)
119 AC_ARG_WITH(vv,
120         [AC_HELP_STRING([--with-vv],
121                 [compile with voice and video support @<:@default=check@:>@])],
122         [AS_IF([test "x$withval" = xyes], [with_vv=check])],
123         [with_vv=check])
125 dnl check for Kerberos 5 support
126 AC_ARG_WITH([krb5],
127         [AC_HELP_STRING([--with-krb5],
128                 [compile with Kerberos 5 support @<:@default=check@:>@])],
129         [AS_IF([test "x$withval" = xyes], [with_krb5=check])],
130         [with_krb5=check])
132 AS_IF([test "x$with_krb5" = xno], [], dnl disabled by user
133       [test "x$with_krb5" = xcheck],  dnl autodetect with krb5-config
134         [AC_MSG_CHECKING(if Kerberos 5 is available)
135          AS_IF([AC_RUN_LOG([krb5-config --version])],
136                 [KRB5_CFLAGS=`krb5-config --cflags 2>/dev/null`
137                  KRB5_LDFLAGS=""
139                  dnl same as AC_CHECK_LIB()
140                  LIBS="$LIBS `krb5-config --libs gssapi 2>/dev/null`"
141                  AC_DEFINE(HAVE_LIBKRB5, 1, [Define to 1 if you have the `krb5' library (-lkrb5)])],
142                 [AC_MSG_RESULT(no)
143                  with_krb5=no])],
144       [                               dnl path specified by user
145         KRB5_CFLAGS="-I${with_krb5}/include"
146         KRB5_LDFLAGS="-L${with_krb5}/lib"
147         ac_save_LDFLAGS="$LDLAGS"
148         LDFLAGS="$LDFLAGS $KRB5_LDFLAGS"
149         AC_CHECK_LIB(krb5, krb5_rd_req,          [],
150                 [AC_CHECK_LIB(krb5, krb5_rd_req, [],
151                         [AC_ERROR(Kerberos 5 libraries not found)])])
152         AC_CHECK_LIB(gssapi_krb5, gss_krb5_export_lucid_sec_context, [],
153                         [AC_ERROR(GSSAPI Kerberos 5 libraries not found)])
154         LDFLAGS="$ac_save_LDFLAGS"])
155 AM_CONDITIONAL(SIP_SEC_KRB5, [test "x$with_krb5" != xno])
156 AC_SUBST(KRB5_CFLAGS)
157 AC_SUBST(KRB5_LDFLAGS)
159 dnl check for glib
160 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0])
161 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0 >= 2.12.0])
163 dnl check for gmime
164 dnl See also: https://bugzilla.gnome.org/show_bug.cgi?id=613653#c8
165 PKG_CHECK_MODULES(GMIME, [gmime-2.6 >= 2.5.2],
166         [ac_have_gmime=yes],
167         [PKG_CHECK_MODULES(GMIME, [gmime-2.4 >= 2.4.16],
168                 [ac_have_gmime=yes],
169                 [ac_have_gmime=no])
171 AM_CONDITIONAL(SIPE_MIME_GMIME, [test "x$ac_have_gmime" = xyes])
172 AS_IF([test "x$ac_have_gmime" = xyes],
173         [AC_DEFINE(HAVE_GMIME, 1, [Define if gmime should be used in sipe.])])
175 dnl check for NSS
176 PKG_CHECK_MODULES(NSS, [nss],
177         [ac_have_nss=yes],
178         [PKG_CHECK_MODULES(NSS, [mozilla-nss],
179                 [ac_have_nss=yes],
180                 [PKG_CHECK_MODULES(NSS, [microb-engine-nss],
181                         [ac_have_nss=yes],
182                         [ac_have_nss=no])
183         ])
185 AM_CONDITIONAL(SIPE_CRYPTO_NSS, [test "x$ac_have_nss" = xyes])
186 AS_IF([test "x$ac_have_nss" = xyes],
187         [AC_DEFINE(HAVE_NSS, 1, [Define if nss should be used in sipe.])])
189 dnl check for libxml2
190 PKG_CHECK_MODULES(LIBXML2, [libxml-2.0])
192 dnl assumption check: sizof(uuid_t) must be 16 (see uuid.c)
193 AC_MSG_CHECKING([that sizeof(uuid_t) is 16])
194 ac_save_CFLAGS=$CFLAGS
195 CFLAGS="$GLIB_CFLAGS $QUALITY_CFLAGS"
196 dnl note the [[[ quoting: our code contains []!
197 AC_RUN_IFELSE(
198         AC_LANG_PROGRAM(
199                 [[[
200 #include <glib.h>
201 #include <stdio.h>
203 /* Copied from uuid.c */
204 typedef struct {
205    guint32 time_low;
206    guint16 time_mid;
207    guint16 time_hi_and_version;
208    guint8  clock_seq_hi_and_reserved;
209    guint8  clock_seq_low;
210    guint8  node[6];
211 } uuid_t;
212                 ]]],
213                 [return(sizeof(uuid_t) == 16 ? 0 : 1);]),
214         [AC_MSG_RESULT(yes)],
215         [AC_MSG_FAILURE([sizeof(uuid_t) is not 16
217 Please notify the SIPE developers and provide the following information:
219  host:     $host
220  build:    $build
221  compiler: $CC
222 ])],
223         [AC_MSG_WARN([cross compiling: not checking])])
224 CFLAGS=$ac_save_CFLAGS
226 dnl build option: purple backend
227 AC_ARG_ENABLE([purple],
228         [AC_HELP_STRING([--enable-purple], [build purple plugin @<:@default=yes@:>@])],
229         [],
230         [enable_purple=yes])
231 with_purple_vv=no
232 AS_IF([test "x$enable_purple" != xno],
233         [PKG_CHECK_MODULES(PURPLE, [purple >= 2.4.0],
234                 [dnl unfortunately PURPLE_MAJOR_VERSION is not exported by purple.m4
235                  PURPLE_MAJOR_VERSION=`$PKG_CONFIG --modversion purple | cut -d. -f 1`
236                  AC_SUBST(PURPLE_MAJOR_VERSION)
238                  dnl let user now if he has a 32- and 64-bit header conflict...
239                  AC_MSG_CHECKING([for 32- and 64-bit header conflicts])
240                  ac_save_CFLAGS=$CFLAGS
241                  CFLAGS="$PURPLE_CFLAGS $QUALITY_CFLAGS"
242                  AC_COMPILE_IFELSE(
243                         AC_LANG_PROGRAM([
244 #include <glib.h>
245 #include <cipher.h>
247 /* Compile some code that has caused trouble in the past */
248 void testfunc(unsigned long len)
250   PurpleCipherContext *rc4 = NULL;
251   purple_cipher_context_set_option(rc4, "key_len", GUINT_TO_POINTER(len));
253                                         ],
254                                         [testfunc(16);]),
255                         [AC_MSG_RESULT(none)],
256                         [AC_MSG_FAILURE([conflicts found.
258 Check that you have the correct glib/libpurple headers installed for
259 your architecture or set PURPLE_CFLAGS to override the system defaults.
261                         ])
263                  dnl on windows
264                  dnl test program needs to be in the same location as libpurple
265                  dnl installation for latter to load ssl plugin referenced by
266                  dnl RELATIVE path.
267                  AS_IF([test "x${os_win32}" != xyes],
268                         [dnl purple SSL support is mandatory
269                          AC_MSG_CHECKING([for purple SSL support])
270                          ac_save_LIBS=$LIBS
271                          LIBS="$PURPLE_LIBS"
272                          AC_RUN_IFELSE(
273                                 AC_LANG_PROGRAM([
274 #include <glib.h>
275 #include <plugin.h>
276 #include <sslconn.h>
278                                                 [
279         purple_plugins_init();
280         purple_plugins_probe(G_MODULE_SUFFIX);
281         purple_ssl_init();
282         return(purple_ssl_is_supported()?0:1);
283                                                 ]),
284                                 [AC_MSG_RESULT(ok)],
285                                 [AC_MSG_FAILURE([your purple hasn't been compiled with SSL support.
287                                 ],
288                                 [AC_MSG_WARN([cross compiling: not checking])])
289                  ])
291                  dnl check whether enable voice and video support
292                  AS_IF([test "x$with_vv" = xno], [], dnl disabled by user
293                        [test "x$with_vv" = xcheck],  dnl autodetect
294                          [AC_MSG_CHECKING(for purple voice and video support)
295                           AC_RUN_IFELSE(
296                                 AC_LANG_PROGRAM(
297                                         [[[
298 #include <libpurple/media.h>
299                                         ]]],
300                                         [return (purple_media_get_type() == G_TYPE_NONE ? 1 : 0);
301                                          purple_media_get_active_local_candidates(NULL, NULL, NULL);
302                                          purple_media_get_active_remote_candidates(NULL, NULL, NULL);]
303                                 ),
304                                 [AC_MSG_RESULT(ok)
305                                  PKG_CHECK_MODULES(NICE, [nice >= 0.0.14],
306                                         [PKG_CHECK_MODULES(PURPLE_MEDIA, [purple >= 2.7.0],
307                                                 [with_purple_vv=yes],
308                                                 [AC_MSG_NOTICE(libpurple >= 2.7.0 required: disabling purple voice and video support)])],
309                                         [AC_MSG_NOTICE(libnice required: disabling purple voice and video support)])],
310                                 [AC_MSG_RESULT(no - your purple hasn't been compiled with voice and video support.)],
311                                 [AC_MSG_WARN([cross compiling: not checking])])
312                          ])
313                  CFLAGS=$ac_save_CFLAGS
314                  LIBS=$ac_save_LIBS],
315                 [enable_purple=no])])
316 AM_CONDITIONAL(SIPE_INCLUDE_PURPLE, [test "x$enable_purple" != xno])
318 dnl build option: telepathy backend
319 AC_ARG_ENABLE([telepathy],
320         [AC_HELP_STRING([--enable-telepathy], [build telepathy plugin @<:@default=yes@:>@])],
321         [],
322         [enable_telepathy=yes])
323 AS_IF([test "x$enable_telepathy" != xno],
324         [PKG_CHECK_MODULES(TELEPATHY, [telepathy-glib],
325                 [dnl GMIME is a build requirement
326                  AS_IF([test "x$ac_have_gmime" = xyes],
327                         [],
328                         [AC_ERROR(GMIME package is required for telepathy plugin)])
330                  dnl NSS is a build requirement
331                  AS_IF([test "x$ac_have_nss" = xyes],
332                         [],
333                         [AC_ERROR(NSS package is required for telepathy plugin)])
335                  dnl NOTHING IMPLEMENTED YET!!!
336                 ],
337                 [enable_telepathy=no])])
338 AM_CONDITIONAL(SIPE_INCLUDE_TELEPATHY, [test "x$enable_telepathy" != xno])
340 dnl build option: kopete backend
341 AC_ARG_ENABLE([kopete],
342         [AC_HELP_STRING([--enable-kopete], [build kopete plugin @<:@default=no@:>@])],
343         [],
344         [enable_kopete=no])
345 AS_IF([test "x$enable_kopete" != xno],
346         [dnl GMIME is a build requirement
347          AS_IF([test "x$ac_have_gmime" = xyes],
348                 [],
349                 [AC_ERROR(GMIME package is required for kopete plugin)])
351          dnl NSS is a build requirement
352          AS_IF([test "x$ac_have_nss" = xyes],
353                 [],
354                 [AC_ERROR(NSS package is required for kopete plugin)])
356          dnl NOTHING IMPLEMENTED YET!!!
357         ],
358         [enable_kopete=no])
359 AM_CONDITIONAL(SIPE_INCLUDE_KOPETE, [test "x$enable_kopete" != xno])
361 dnl sanity check
362 AS_IF([test "x$enable_purple" = xno -a "x$enable_telepathy" = xno -a "x$enable_kopete" = xno],
363         [AC_ERROR(at least one plugin must be selected
365 If you didn't use a --enable option then please check that you have
366 the headers for the packages "purple" or "telepathy-glib" installed.
368         [])
370 dnl enable voice & video support if any backend supports it
371 AS_IF([test "x$with_purple_vv" != xno],
372         [AC_DEFINE(HAVE_VV, 1, [Define if voice & video is enabled.])])
373 AM_CONDITIONAL(SIPE_WITH_VV, [test "x$with_purple_vv" != xno])
375 dnl i18n
376 AC_MSG_CHECKING([locale_CPPFLAGS])
377 LOCALE_CPPFLAGS='-DLOCALEDIR=\"$(prefix)/$(DATADIRNAME)/locale\"'
378 AC_SUBST([LOCALE_CPPFLAGS])
379 AC_MSG_RESULT([$LOCALE_CPPFLAGS])
380 AM_GLIB_GNU_GETTEXT
381 AC_SUBST(GETTEXT_PACKAGE, "${PACKAGE_NAME}")
383 dnl codeset
384 AM_LANGINFO_CODESET
386 dnl substitutions and generated files
387 AC_CONFIG_HEADERS([config.h])
388 AC_CONFIG_FILES([
389         Makefile
390         pixmaps/Makefile
391         m4macros/Makefile
392         po/Makefile.in
393         pixmaps/16/Makefile
394         pixmaps/22/Makefile
395         pixmaps/48/Makefile
396         pixmaps/scalable/Makefile
397         src/Makefile
398         src/core/Makefile
399         src/api/Makefile
400         src/purple/Makefile
401         src/telepathy/Makefile
402         src/kopete/Makefile
403         ])
405 dnl generate files
406 AC_OUTPUT()
408 dnl additional info for the user
409 AS_ECHO()
410 AS_IF([test "x$enable_purple" = xno], 
411         [AS_ECHO("Not building purple plugin")],
412         [AS_ECHO("Build purple plugin")
413          AS_ECHO("PURPLE_CFLAGS  : $PURPLE_CFLAGS")
414          AS_ECHO("PURPLE_LIBS    : $PURPLE_LIBS")
415          AS_IF([test "x$with_purple_vv" = xno],
416           [AS_ECHO("Voice and video: disabled")],
417           [AS_ECHO("Voice and video: enabled")])
418         ])
419 AS_ECHO()
420 AS_IF([test "x$enable_telepathy" = xno],
421         [AS_ECHO("Not building telepathy plugin")],
422         [AS_ECHO("Build telepathy plugin")
423          AS_ECHO()
424          AS_ECHO("NOTHING IMPLEMENTED YET!!!")
425          AS_ECHO()
426          AS_ECHO("TELEPATHY_CFLAGS: $TELEPATHY_CFLAGS")
427          AS_ECHO("TELEPATHY_LIBS  : $TELEPATHY_LIBS")])
428 AS_ECHO()
429 AS_IF([test "x$enable_kopete" = xno],
430         [AS_ECHO("Not building kopete plugin")],
431         [AS_ECHO("Build kopete plugin")
432          AS_ECHO()
433          AS_ECHO("NOTHING IMPLEMENTED YET!!!")
434          AS_ECHO()])
435 AS_ECHO()
436 AS_IF([test "x$with_krb5" = xno],
437         [AS_ECHO("Not building with Kerberos 5 support")],
438         [AS_ECHO("Build with Kerberos 5 support")
439          AS_ECHO("KRB5_CFLAGS    : $KRB5_CFLAGS")
440          AS_ECHO("KRB5_LDFLAGS   : $KRB5_LDFLAGS")])
441 AS_ECHO()
442 AS_IF([test "x$enable_debug" = xno],
443         [AS_ECHO("Debugging not enabled")],
444         [AS_ECHO("Build with debugging enabled")
445          AS_ECHO("DEBUG_CFLAGS   : $DEBUG_CFLAGS")])
446 AS_ECHO()
447 AS_IF([test "x$QUALITY_CFLAGS" = x],
448         [AS_ECHO("Compiler checks disabled")],
449         [AS_ECHO("Build with compiler checks enabled")
450          AS_ECHO("QUALITY_CFLAGS : $QUALITY_CFLAGS")])
451 AS_ECHO()
452 AS_ECHO("configure complete. Now run 'make'")
453 AS_ECHO()
455 dnl The End.