1# $Id: configure.ac 2882 2010-03-20 13:56:20Z kuhlmann $ 2 3# Process this file with autoconf to produce a configure script. 4 5AC_PREREQ(2.59) 6AC_INIT([climm], [0.7.1]) 7AC_CONFIG_SRCDIR([include/climm.h]) 8AC_CONFIG_LIBOBJ_DIR(replace) 9AC_CONFIG_HEADER(include/config.h) 10AC_CONFIG_AUX_DIR(build-aux) 11AC_CANONICAL_HOST 12 13AC_CHECK_PROG(AUTOMAKE, automake-1.9, automake-1.9) 14AC_CHECK_PROG(ACLOCAL, aclocal-1.9, aclocal-1.9) 15AC_CHECK_PROG(AUTOHEADER, autoheader, autoheader) 16AC_CHECK_PROG(AUTOCONF, autoconf, autoconf) 17PKG_PROG_PKG_CONFIG 18 19AM_INIT_AUTOMAKE(1.9) 20AM_MAINTAINER_MODE 21 22AC_DEFINE(CLIMM_VERSION,VERSION,[climm's current version]) 23 24if test -f $srcdir/.is_release; then 25 AC_DEFINE(CLIMM_IS_SVN, "") 26else 27 AC_DEFINE(CLIMM_IS_SVN, " SVN " BUILDDATE, whether we are SVN or not) 28fi 29 30# Checks for programs. 31AM_PROG_CC_C_O 32AC_PROG_RANLIB 33AC_PROG_INSTALL 34AC_PROG_LN_S 35AC_SYS_LARGEFILE 36 37# Check for arguments. 38 39AC_ARG_ENABLE([peer2peer], AC_HELP_STRING([--disable-peer2peer], [disable Oscar peer to peer connections]), 40 ac_arg_use_dc=$enableval, ac_arg_use_dc=yes) 41AC_ARG_ENABLE([iconv], AC_HELP_STRING([--disable-iconv], [do not use iconv() at all]), 42 ac_arg_use_iconv=$enableval, ac_arg_use_iconv=yes) 43AC_ARG_ENABLE([iconvrepl], AC_HELP_STRING([--enable-iconvrepl], [compile in iconv() replacement fallbacks]), 44 ac_arg_use_iconvrepl=$enableval, ac_arg_use_iconvrepl=no) 45AC_ARG_ENABLE([remote], AC_HELP_STRING([--disable-remote], [disable scripting FIFO]), 46 ac_arg_use_remote=$enableval, ac_arg_use_remote=auto) 47AC_ARG_ENABLE([xmpp], AC_HELP_STRING([--disable-xmpp], [disable XMPP (Jabber) chat network using libiksemel]), 48 ac_arg_use_xmpp=$enableval, ac_arg_use_xmpp=yes) 49dnl AC_ARG_ENABLE([msn], AC_HELP_STRING([--enable-msn], [enable MSN chat network (NOT YET IMPLEMENTED)]), 50dnl ac_arg_use_msn=$enableval, ac_arg_use_msn=auto) 51AC_ARG_ENABLE([tcl], AC_HELP_STRING([--disable-tcl], [disable Tcl scripting]), 52 ac_arg_use_tcl=$enableval, ac_arg_use_tcl=auto) 53AC_ARG_ENABLE([ssl], AC_HELP_STRING([--disable-ssl], [disable SSL encryption]), 54 ac_arg_use_ssl=$enableval, ac_arg_use_ssl=auto) 55AC_ARG_ENABLE([ssl], AC_HELP_STRING([[[[--enable-ssl=gnutls,openssl,gnutls+openssl]]]], [choose SSL library])) 56AC_ARG_ENABLE([otr], AC_HELP_STRING([--disable-otr], [disable OTR encryption support]), 57 ac_arg_use_otr=$enableval, ac_arg_use_otr=auto) 58 59AC_ARG_ENABLE([autopackage], AC_HELP_STRING([--enable-autopackage], [enable autopackage generation]), 60 ac_arg_use_autopackage=$enableval, ac_arg_use_autopackage=no) 61 62# Checks for libraries. 63AC_CHECK_FUNCS([inet_ntoa getpeername]) 64if test "x$ac_cv_func_inet_ntoa" = "xno"; then 65 AC_CHECK_LIB(nsl, inet_ntoa) 66fi 67if test "x$ac_cv_func_getpeername" = "xno"; then 68 AC_CHECK_LIB(socket, getpeername) 69fi 70 71# Checks for header files. 72AC_HEADER_STDC 73AC_CHECK_HEADERS([locale.h langinfo.h sys/select.h arpa/inet.h ctype.h errno.h fcntl.h limits.h netdb.h netinet/in.h sys/ioctl.h sys/socket.h sys/time.h sys/wait.h termios.h unistd.h strings.h sys/utsname.h sys/un.h wchar.h wctype.h pwd.h utmp.h utmpx.h values.h resolv.h arpa/nameser.h]) 74 75if test "x$ac_arg_use_autopackage" = xyes; then 76 enable_binreloc=auto 77 rk_BINRELOC 78 if test "x$br_cv_binreloc" = xyes; then 79 AC_CHECK_PROGS(RELAYTOOL, relaytool, :) 80 if test "x$RELAYTOOL" != x:; then 81 old_LIBS=$LIBS 82 LIBS= 83 AC_SEARCH_LIBS([dlopen], [dl]) 84 AC_SUBST(BINRELOC_LIBS, [$LIBS]) 85 LIBS="$old_LIBS" 86 ac_use_autopackage=yes 87 AC_DEFINE(ENABLE_AUTOPACKAGE,1,[Use autopackage to check libraries at run time]) 88 fi 89 fi 90else 91 AC_SUBST(BINRELOC_LIBS,[ ]) 92fi 93 94if test "x$ac_arg_use_dc" != "xno" || test "x$ac_arg_use_xmpp" != "xno"; then 95 if test "x$ac_arg_use_ssl" != "xno"; then 96 ac_use_ssl=no 97 if test "x$ac_arg_use_ssl" != "xopenssl"; then 98 PKG_CHECK_MODULES(LIBGNUTLS, gnutls > 2, ac_use_ssl=gnutls, ac_use_ssl=no) 99 if test "x$ac_use_ssl" = xno; then 100 AM_PATH_LIBGNUTLS(0.8.8, ac_use_ssl=gnutls) 101 fi 102 AM_PATH_LIBGCRYPT(, , ac_use_ssl=no) 103 AC_CHECK_HEADERS([gcrypt.h], , ac_use_ssl=no) 104 if test "x$ac_use_ssl" = "xgnutls"; then 105 CFLAGS="$LIBGNUTLS_CFLAGS $LIBGCRYPT_CFLAGS $CFLAGS" 106 temp_LIBS="$LIBS" 107 LIBS="$LIBGNUTLS_LIBS $LIBGCRYPT_LIBS $LIBS" 108 AC_CHECK_FUNC(gnutls_dh_params_generate2, [AC_DEFINE(HAVE_DH_GENPARAM2, 1, [Whether new DH prime generator is available])],) 109 LIBS="$temp_LIBS" 110 AC_DEFINE(HAVE_GNUTLS, 1, [whether to use GnuTSL support.]) 111 fi 112 fi 113 if test "x$ac_use_ssl" = "xno" || test "x$ac_arg_use_ssl" = "xgnutls+openssl"; then 114 if test "x$ac_arg_use_ssl" != "xgnutls"; then 115 ac_use_openssl=no 116 AC_CHECK_HEADERS([openssl/ssl.h], [ac_use_openssl=openssl]) 117 temp_LIBS="$LIBS" 118 AC_CHECK_LIB([crypto], [DH_free], , [ac_use_openssl=no]) 119 AC_CHECK_LIB([ssl], [SSL_new], , [ac_use_openssl=no 120 LIBS="$temp_LIBS"]) 121 if test "x$ac_use_openssel" != "xno"; then 122 if test "x$ac_use_ssl" = "xno"; then 123 ac_use_ssl=$ac_use_openssl 124 else 125 ac_use_ssl=$ac_use_ssl+$ac_use_openssl 126 fi 127 fi 128 fi 129 fi 130 if test "x$ac_use_ssl" = "xno"; then 131 case "$ac_arg_use_ssl" in 132 gnutls) AC_MSG_FAILURE([cannot find GnuTLS library]) ;; 133 openssl) AC_MSG_FAILURE([cannot find OpenSSL library]) ;; 134 yes) AC_MSG_FAILURE([cannot find any SSL library]) ;; 135 *) AC_MSG_WARN([cannot find a suitable SSL library -- encrypted connection support disabled]) ;; 136 esac 137 fi 138 if test "x$ac_arg_use_ssl" = "xgnutls+openssl" && test "x$ac_arg_use_ssl" != "x$ac_use_ssl"; then 139 case "$ac_use_ssl" in 140 gnutls) AC_MSG_FAILURE([cannot find OpenSSL library]) ;; 141 openssl) AC_MSG_FAILURE([cannot find GnuTLS library]) ;; 142 *) AC_MSG_FAILURE([cannot find neither GnuTLS nor OpenSSL library]) ;; 143 esac 144 fi 145 ac_arg_use_ssl=$ac_use_ssl 146 fi 147else 148 ac_arg_use_ssl=no 149fi 150 151if test "x$ac_arg_use_otr" != "xno"; then 152 ac_use_otr=no 153 temp_LIBS="$LIBS" 154 temp_CFLAGS="$CFLAGS" 155 if test "x$ac_arg_use_ssl" != "xgnutls" && test "x$ac_arg_use_ssl" != "xgnutls+openssl"; then 156 AM_PATH_LIBGCRYPT(, ac_use_otr=maybe, ac_use_otr=no) 157 CFLAGS="$LIBGCRYPT_CFLAGS $CFLAGS" 158 else 159 ac_use_otr=maybe 160 fi 161 LIBS="$LIBGCRYPT_LIBS $LIBS" 162 if test "x$ac_use_otr" != "xno"; then 163 AM_PATH_LIBOTR(, ac_use_otr=yes, ac_use_otr=no) 164 fi 165 if test "x$ac_use_otr" = "xyes"; then 166 CFLAGS="$LIBOTR_CFLAGS $CFLAGS" 167 ac_arg_use_otr=yes 168 else 169 if test "x$ac_arg_use_otr" = "xyes"; then 170 AC_MSG_FAILURE([OTR support requested, but no usable libotr found!]) 171 fi 172 CFLAGS="$temp_CFLAGS" 173 ac_arg_use_otr=no 174 fi 175 LIBS="$temp_LIBS" 176fi 177 178if test "x$ac_arg_use_tcl" != "xno"; then 179 ac_use_tcl=no 180 temp_LIBS="$LIBS" 181 LIBS="" 182 LIBTCL_LIBS="" 183 if test "x$ac_arg_use_autopackage" = xyes; then 184 AC_CHECK_HEADERS([tcl8.4/tcl.h tcl.h], [ac_use_tcl=yes 185 break]) 186 if test "x$ac_use_tcl" = "xyes"; then 187 AC_SEARCH_LIBS([Tcl_CreateInterp], [tcl8.4], [ac_use_tcl=yes 188 LIBTCL_LIBS=$LIBS], [ac_use_tcl=no], [$temp_LIBS]) 189 fi 190 else 191 AC_CHECK_HEADERS([tcl8.5/tcl.h tcl8.4/tcl.h tcl8.3/tcl.h tcl.h], [ac_use_tcl=yes 192 break]) 193 if test "x$ac_use_tcl" = "xyes"; then 194 AC_SEARCH_LIBS([Tcl_CreateInterp], [tcl8.5 tcl8.4 tcl8.3], [ac_use_tcl=yes 195 LIBTCL_LIBS=$LIBS], [ac_use_tcl=no], [$temp_LIBS]) 196 fi 197 fi 198 LIBS="$temp_LIBS" 199 AC_SUBST(LIBTCL_LIBS, [$LIBTCL_LIBS]) 200 if test "x$ac_usl_tcl$ac_arg_use_tcl" = "xnoyes"; then 201 AC_MSG_FAILURE([cannot find a suitable Tcl interpreter library]) 202 fi 203 ac_arg_use_tcl=$ac_use_tcl; 204fi 205 206if test "x$ac_arg_use_iconv" != "xno"; then 207 AM_ICONV 208fi 209 210AC_CACHE_CHECK(for iconv() fallbacks to compile in, ac_cv_iconv_fb, 211 [ac_cv_iconv_fb="ASCII UCS2BE WIN1251 KOI8 LATIN9 LATIN1 UTF8 WCHART TRANSLIT" 212 if test "x$ac_arg_use_iconvrepl" != "xyes"; then 213 if test "x$ac_arg_use_iconvrepl" != "xno"; then 214 ac_cv_iconv_fb=$ac_arg_use_iconvrepl; 215 fi 216 fi 217 if test "x$am_cv_func_iconv$ac_arg_use_iconvrepl" = "xyesno"; then 218 old_LDFLAGS=$LDFLAGS 219 LDFLAGS="$LDFLAGS $LIBICONV" 220 AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h> 221 #include <iconv.h> 222 #include <stdio.h>]], 223 [[iconv_t resa, resb; 224 FILE *hf = fopen ("conftest.encodings", "w"); 225 resa = iconv_open ("UTF-8", "US-ASCII"); 226 resb = iconv_open ("US-ASCII", "UTF-8"); 227 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 228 fprintf (hf, "ASCII "); 229 resa = iconv_open ("UTF-8", "UCS-2BE"); 230 resb = iconv_open ("UCS-2BE", "UTF-8"); 231 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 232 { 233 resa = iconv_open ("UTF-8", "UNICODEBIG"); 234 resb = iconv_open ("UNICODEBIG", "UTF-8"); 235 } 236 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 237 fprintf (hf, "UCS2BE "); 238 resa = iconv_open ("UTF-8", "CP1251"); 239 resb = iconv_open ("CP1251", "UTF-8"); 240 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 241 { 242 resa = iconv_open ("UTF-8", "WINDOWS-1251"); 243 resb = iconv_open ("WINDOWS-1251", "UTF-8"); 244 } 245 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 246 fprintf (hf, "WIN1251 "); 247 resa = iconv_open ("UTF-8", "KOI8-U"); 248 resb = iconv_open ("KOI8-U", "UTF-8"); 249 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 250 fprintf (hf, "KOI8 "); 251 resa = iconv_open ("UTF-8", "ISO-8859-15"); 252 resb = iconv_open ("ISO-8859-15", "UTF-8"); 253 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 254 { 255 resa = iconv_open ("UTF-8", "ISO8859-15"); 256 resb = iconv_open ("ISO8859-15", "UTF-8"); 257 } 258 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 259 fprintf (hf, "LATIN9 "); 260 resa = iconv_open ("UTF-8", "ISO-8859-1"); 261 resb = iconv_open ("ISO-8859-1", "UTF-8"); 262 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 263 { 264 resa = iconv_open ("UTF-8", "ISO8859-1"); 265 resb = iconv_open ("ISO8859-1", "UTF-8"); 266 } 267 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 268 fprintf (hf, "LATIN1 "); 269 resa = iconv_open ("UTF-8", "UTF-8"); 270 if (resa == (iconv_t)-1) 271 resa = 0; 272 else 273 { 274 size_t inl = 2, outl = 10; 275 char inb[10], outb[10], *inp = inb, *outp = outb; 276 strcpy (inp, "\xfc.\xc0\xaf"); 277 if (iconv (resa, &inp, &inl, &outp, &outl) != (size_t)-1) 278 resa = 0; 279 else 280 { 281 inp = inb + 2; 282 iconv (resa, NULL, NULL, NULL, NULL); 283 if ((iconv (resa, &inp, &inl, &outp, &outl) != (size_t)-1) && *outp != '/') 284 resa = 0; 285 } 286 } 287 if (!resa) 288 fprintf (hf, "UTF8 "); 289 resa = iconv_open ("UTF-8", "WCHAR_T"); 290 resb = iconv_open ("WCHAR_T", "UTF-8"); 291 if (resa == (iconv_t)-1 || !resa || resb == (iconv_t)-1 || !resb) 292 fprintf (hf, "WCHART "); 293 resa = iconv_open ("US-ASCII//TRANSLIT", "UTF-8"); 294 if (resa == (iconv_t)-1 || !resa) 295 fprintf (hf, "TRANSLIT "); 296 fclose (hf); 297 exit (0);]])], 298 [ac_cv_iconv_fb="`cat conftest.encodings`"], 299 [], [:]) 300 LDFLAGS=$old_LDFLAGS 301 rm -f conftest.encodings 302 fi 303]) 304 305if false; then 306 AC_DEFINE(ENABLE_FALLBACK_ASCII, 0, enable fallback function for ASCII) 307 AC_DEFINE(ENABLE_FALLBACK_UCS2BE, 0, enable fallback function for UCS2BE) 308 AC_DEFINE(ENABLE_FALLBACK_WIN1251, 0, enable fallback function for WIN1251) 309 AC_DEFINE(ENABLE_FALLBACK_KOI8, 0, enable fallback function for KOI8) 310 AC_DEFINE(ENABLE_FALLBACK_LATIN9, 0, enable fallback function for LATIN9) 311 AC_DEFINE(ENABLE_FALLBACK_LATIN1, 0, enable fallback function for LATIN1) 312 AC_DEFINE(ENABLE_FALLBACK_UTF8, 0, enable fallback function for UTF8) 313 AC_DEFINE(ENABLE_FALLBACK_WCHART, 0, enable fallback function for WCHART) 314 AC_DEFINE(ENABLE_FALLBACK_TRANSLIT, 0, transliteration is _not_ supported) 315fi 316 317for enc in DUMMY $ac_cv_iconv_fb; do 318 AC_DEFINE_UNQUOTED(ENABLE_FALLBACK_$enc, 1, enable fallback function for $enc) 319done 320 321if test "x$ac_arg_use_remote" != "xno"; then 322 AC_CACHE_CHECK(for FIFO functionality, ac_cv_fifo_stuff, 323 [AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h> 324 #include <sys/types.h> 325 #include <stdio.h> 326 327 #include <sys/stat.h> 328 #include <fcntl.h> 329 #include <signal.h> 330 void timeout (int i) { exit (11); } ]], 331 [[int res, sok, so2; 332 char buf[10]; 333 unlink ("./conftest.fifo"); 334 signal (SIGALRM, &timeout); 335 alarm (5); 336 res = mkfifo ("./conftest.fifo", 0600); 337 if (res < 0) exit (1); 338 sok = open ("./conftest.fifo", O_RDWR | O_NONBLOCK); 339 if (sok < 0) exit (2); 340 so2 = open ("./conftest.fifo", O_RDONLY | O_NONBLOCK); 341 if (so2 < 0) exit (3); 342 res = write (sok, "bla", 3); 343 if (res < 3) exit (4); 344 buf[0] = buf[3] = buf[5] = 0; 345 res = read (so2, buf, 3); 346 if (res < 3) exit (5); 347 if (strcmp (buf, "bla")) exit (6); 348 close (sok); 349 close (so2); 350 unlink ("./conftest.fifo"); 351 exit (0);]])], 352 [ac_cv_fifo_stuff=yes], 353 [ac_cv_fifo_stuff=no], 354 [ac_cv_fifo_stuff=cross]) 355 ]) 356 if test "x$ac_cv_fifo_stuff" != xyes && test "x$ac_cv_fifo_stuff$ac_arg_use_remote" != xcrossyes; then 357 ac_arg_use_remote=none 358 else 359 ac_arg_use_remote=yes 360 fi 361else 362 ac_arg_use_remote=none 363fi 364 365dnl AC_LANG([C++]) 366dnl AC_PROG_CXX 367dnl if test "x$ac_arg_use_msn" = "xyes"; then 368dnl AC_SUBST(LIBMSN, "libclimmmsn.a", [Static lib to link if MSN is enabled]) 369dnl AC_SUBST(L_LIBMSN, "-L. -lclimmmsn -lmsn -lstdc++", [Static lib link option to link if MSN is enabled]) 370dnl AC_DEFINE(ENABLE_MSN, 1, [Enable MSN chat network using libmsn]) 371dnl AC_CHECK_HEADERS(sstream,, 372dnl [AC_CHECK_HEADERS(strstream,, 373dnl AC_MSG_ERROR([Your libstdc++ doesn't have the sstream or strstream classes]))]) 374dnl else 375dnl ac_arg_use_msn=no 376dnl fi 377dnl AC_LANG([C]) 378 379if test "x$ac_arg_use_xmpp" != "xno"; then 380 ac_use_xmpp=yes 381 382 if test "x$ac_arg_use_ssl" != "xgnutls" && test "x$ac_arg_use_ssl" != "xgnutls+openssl"; then 383 if test "x$ac_arg_use_xmpp" = xyes; then 384 AC_MSG_CHECKING([XMPP]) 385 AC_MSG_FAILURE([no, GnuTLS missing]) 386 else 387 AC_MSG_CHECKING([XMPP]) 388 AC_MSG_RESULT([no, GnuTLS missing]) 389 ac_use_xmpp=no 390 fi 391 fi 392 393 if test "x$ac_use_xmpp" = xyes; then 394 PKG_CHECK_MODULES(IKS, iksemel >= 1.2, ac_iksemel_version=`pkg-config --modversion iksemel | tr . " "` 395 ac_iksemel_version=`printf 0x%02x%02x $ac_iksemel_version`, ac_use_xmpp=no) 396 397 if test "x$ac_use_xmpp" = xno; then 398 AC_MSG_RESULT([no, using replacement]) 399 fi 400 401 if test "x$ac_use_xmpp" = xno || test "x$ac_arg_use_autopackage" = xyes; then 402 # use our version of iksemel 403 AC_SUBST(IKS_INC, ['-I$(top_srcdir)/iksemel-1.4/include']) 404 AC_SUBST(IKS_LIBS, libiksemel.a) 405 ac_iksemel_version=0x0104 406 ac_use_xmpp=yes 407 fi 408 fi 409 410 ac_arg_use_xmpp=$ac_use_xmpp; 411 if test "x$ac_arg_use_xmpp" != xno; then 412 AC_DEFINE(ENABLE_XMPP, 1, [Enable XMPP chat network]) 413 AC_DEFINE_UNQUOTED(LIBIKS_VERSION, $ac_iksemel_version, [libiksemel version]) 414 ac_use_xmpp=yes 415 fi 416fi 417 418if test "x$ac_arg_use_dc" = "xyes"; then 419 AC_DEFINE(ENABLE_PEER2PEER, 1, [Whether to enable Oscar peer to peer connections]) 420fi 421 422if test "x$ac_arg_use_remote" = "xyes"; then 423 AC_DEFINE(ENABLE_REMOTECONTROL, 1, [Whether to enable scripting FIFO]) 424fi 425 426if test "x$ac_arg_use_ssl" = "xgnutls+openssl"; then 427 AC_DEFINE(ENABLE_SSL, 1, [Whether to use the SSL extension]) 428 AC_DEFINE(ENABLE_GNUTLS, 1, [Whether to use GnuTLS for SSL/TLS support]) 429 AC_DEFINE(ENABLE_OPENSSL, 1, [Whether to use OpenSSL for SSL/TLS support]) 430elif test "x$ac_arg_use_ssl" = "xgnutls"; then 431 AC_DEFINE(ENABLE_SSL, 1, [Whether to use the SSL extension]) 432 AC_DEFINE(ENABLE_GNUTLS, 1, [Whether to use GnuTLS for SSL/TLS support]) 433elif test "x$ac_arg_use_ssl" = "xopenssl"; then 434 AC_DEFINE(ENABLE_SSL, 1, [Whether to enable SSL/TLS support]) 435 AC_DEFINE(ENABLE_OPENSSL, 1, [Whether to use OpenSSL for SSL/TLS support]) 436fi 437 438if test "x$ac_arg_use_otr" = "xyes"; then 439 AC_DEFINE(ENABLE_OTR, 1, [Whether to support OTR encryption]) 440fi 441 442if test "x$ac_arg_use_tcl" = "xyes"; then 443 AC_DEFINE(ENABLE_TCL, 1, [Whether to use the Tcl scripting extension]) 444fi 445 446# Checks for typedefs, structures, and compiler characteristics. 447AC_C_CONST 448AC_C_INLINE 449AC_TYPE_SIZE_T 450AC_HEADER_TIME 451AC_STRUCT_TM 452 453# Checks for library functions. 454AC_PROG_GCC_TRADITIONAL 455 456AC_TYPE_SIGNAL 457 458AC_STRUCT_TIMEZONE 459AC_CACHE_CHECK(for timezone external, ac_cv_var_timezone, 460 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[int x = - timezone;]])], 461 [ac_cv_var_timezone=yes], [ac_cv_var_timezone=no])]) 462if test "x$ac_cv_var_timezone" = xyes; then 463 AC_DEFINE([HAVE_TIMEZONE], 1, [Define if you have the external 'timezone' variable.]) 464else 465 AC_CACHE_CHECK(for tm_gmtoff member, ac_cv_tm_gmtoff, 466 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[ struct tm stamp; stamp.tm_gmtoff = 0; ]])], 467 [ac_cv_tm_gmtoff=yes], [ac_cv_tm_gmtoff=no])]) 468 if test "x$ac_cv_tm_gmtoff" = xyes; then 469 AC_DEFINE([HAVE_TM_GMTOFF], 1, [Define if struct tm has a tm_gmt member.]) 470 fi 471fi 472 473AC_FUNC_VPRINTF 474AC_FUNC_SNPRINTF 475AC_FUNC_MEMMOVE 476AC_CHECK_FUNCS([mkdir atexit strcasecmp strchr memchr strdup strncasecmp strpbrk strrchr strstr strtol],, 477 [AC_MSG_ERROR([Required function $ac_func missing. Sorry.])]) 478AC_CHECK_FUNCS([localtime_r timegm timelocal memcmp uname fcntl strchr strtok_r \ 479 symlink chmod tcgetattr gettimeofday setlocale select sigprocmask]) 480AC_CHECK_FUNCS([memset wcwidth iswalnum iswspace nl_langinfo atoll getpwuid getuid fsync getutent getutxent]) 481 482AC_CHECK_LIB(resolv, res_query) 483AC_CHECK_LIB(resolv, __res_query) 484 485if test "x$ac_cv_func_timegm" != xyes; then 486 AC_LIBOBJ(timegm) 487 AC_CHECK_FUNCS([setenv putenv unsetenv]) 488fi 489 490if test "x$ac_cv_func_select" != "xyes"; then 491 AC_CHECK_HEADERS([winsock2.h conio.h windef.h]) 492 my_old_LIBS=$LIBS 493 LIBS="-lws2_32 $LIBS" 494 AC_CACHE_CHECK(for library containing select, ac_cv_search_select, 495 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[/* argl */ 496 #if HAVE_SYS_TYPES_H 497 #include <sys/types.h> 498 #endif 499 #if TIME_WITH_SYS_TIME 500 #include <sys/time.h> 501 #include <time.h> 502 #elif HAVE_SYS_TIME_H 503 #include <sys/time.h> 504 #else 505 #include <time.h> 506 #endif 507 #if HAVE_UNISTD_H 508 #include <unistd.h> 509 #endif 510 #if HAVE_SYS_SOCKET_H 511 #include <sys/socket.h> 512 #endif 513 #if HAVE_NETDB_H 514 #include <netdb.h> 515 #endif 516 #if HAVE_WINSOCK2_H 517 #include <winsock2.h> 518 #endif]], 519 [[struct timeval *tm; 520 fd_set *fds; 521 int *i; 522 select (1, fds, fds, fds, tm); 523 socket (1, 1, 1); 524 gethostbyname ("www.climm.org"); 525 ioctlsocket(1, 1, i);]])], 526 [ac_cv_search_select=ws2_32], 527 [ac_cv_search_select=no])]) 528 LIBS=$my_old_LIBS 529 if test x$ac_cv_search_select != xno; then 530 AC_DEFINE([ICONV_CONST], const, [Define as const if the declaration of iconv() needs const.]) 531 LIBS="-lws2_32 $LIBS" 532 ac_cv_func_select=yes 533 ac_cv_func_socket=yes 534 ac_cv_func_gethostbyname=yes 535 ac_cv_func_ioctlsocket=yes 536 AC_DEFINE(HAVE_SELECT, 1) 537 AC_DEFINE(HAVE_SOCKET, 1) 538 AC_DEFINE(HAVE_GETHOSTBYNAME, 1) 539 AC_DEFINE(HAVE_IOCTLSOCKET, 1) 540 else 541 AC_MSG_ERROR([Required functions select and/or socket is missing. Sorry.]) 542 fi 543fi 544 545AC_CHECK_FUNCS([select socket gethostbyname hstrerror ioctlsocket]) 546 547if test "x$ac_cv_func_gethostbyname" != "xyes"; then 548 AC_MSG_WARN([Function gethostbyname() not found; you will need to specify all host names as IP addresses.]) 549fi 550 551AC_CHECK_DECLS(h_errno,,,[$ac_includes_default 552#ifdef HAVE_NETDB_H 553#include <netdb.h> 554#endif 555#ifdef HAVE_WINDEF_H 556#include <windef.h> 557#endif 558#ifdef HAVE_WINSOCK2_H 559#include <winsock2.h> 560#endif]) 561 562AC_CHECK_TYPES([wchar_t, wint_t, socklen_t, BOOL, UBYTE, UWORD, UDWORD],,,[$ac_includes_default 563#ifdef HAVE_SYS_SOCKET_H 564#include <sys/socket.h> 565#endif 566#ifdef HAVE_NETDB_H 567#include <netdb.h> 568#endif 569#ifdef HAVE_WINSOCK2_H 570#include <winsock2.h> 571#endif]) 572 573AC_C_BIGENDIAN 574AC_CHECK_SIZEOF(char) 575AC_CHECK_SIZEOF(short) 576AC_CHECK_SIZEOF(int) 577AC_CHECK_SIZEOF(long) 578 579if test "x$ac_cv_sizeof_long" = "x4"; then 580 AC_DEFINE(SIZE_4_TYPE, long, [Type of length 4 bytes]) 581elif test "x$ac_cv_sizeof_int" = "x4"; then 582 AC_DEFINE(SIZE_4_TYPE, int) 583else 584 AC_MSG_ERROR([No type of length 4 bytes found.]) 585fi 586 587if test "x$ac_cv_sizeof_int" = "x2"; then 588 AC_DEFINE(SIZE_2_TYPE, int, [Type of length 2 bytes]) 589elif test "x$ac_cv_sizeof_short" = "x2"; then 590 AC_DEFINE(SIZE_2_TYPE, short) 591else 592 AC_MSG_ERROR([No type of length 2 bytes found.]) 593fi 594 595if test "x$ac_cv_sizeof_short" = "x1"; then 596 AC_DEFINE(SIZE_1_TYPE, short, [Type of length 1 bytes]) 597elif test "x$ac_cv_sizeof_char" = "x1"; then 598 AC_DEFINE(SIZE_1_TYPE, char) 599else 600 AC_MSG_ERROR([No type of length 1 bytes found.]) 601fi 602 603# Optimize. 604AC_CACHE_CHECK(checking for variadic macro support, ac_cv_macro_variadic, 605 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define variadic(a,...) printf (a "bla" , ## __VA_ARGS__) ]], 606 [[variadic ("bla\n"); /* note space before comma ^ to avoid gcc-2.95 bug */ 607 variadic ("bla%sbla\n", "bla");]])], 608 [ac_cv_macro_variadic=yes], 609 [ac_cv_macro_variadic=no])]) 610if test "x$ac_cv_macro_variadic" = xyes; then 611 AC_DEFINE(HAVE_VARIADIC_MACRO,1,[have support for advances variadic macros]) 612fi 613 614 615if test "x$GCC" = xyes; then 616 CFLAGS="$CFLAGS -Wall" 617fi 618 619if test "x$WIP" != "x"; then 620 AC_DEFINE(WIP,1,[Include probably buggy work-in-progress code]) 621fi 622 623if test "x${DEB_HOST_GNU_SYSTEM}" != "x"; then 624 AC_DEFINE(__Dbn__,1,"") 625else 626 AC_DEFINE(__Dbn__,-1) 627fi 628 629if test "x$CLIMM_EXTRAVERSION" != "x"; then 630 AC_DEFINE_UNQUOTED(EXTRAVERSION,"$CLIMM_EXTRAVERSION",[Extra version information like the distribution used]) 631fi 632 633if test "x$ac_use_autopackage" = xyes; then 634 relay_libs="tcl8.4 tcl8.3 gnutls gcrypt gpg-error otr iksemel" 635 LIBS='`'"$RELAYTOOL --relay '$relay_libs' $LIBS"'`' 636 LIBGCRYPT_LIBS='`'"$RELAYTOOL --relay '$relay_libs' $LIBGCRYPT_LIBS"'`' 637 LIBGNUTLS_LIBS='`'"$RELAYTOOL --relay '$relay_libs' $LIBGNUTLS_LIBS"'`' 638 LIBOTR_LIBS='`'"$RELAYTOOL --relay '$relay_libs' $LIBOTR_LIBS"'`' 639 LIBTCL_LIBS='`'"$RELAYTOOL --relay '$relay_libs' $LIBTCL_LIBS"'`' 640 XMPP_LIBS='`'"$RELAYTOOL --relay '$relay_libs' $XMPP_LIBS"'`' 641fi 642 643AC_MSG_CHECKING([whether to enable XMPP chat network]) 644AC_MSG_RESULT([$ac_arg_use_xmpp]) 645dnl AC_MSG_CHECKING([whether to enable MSN chat network (EXPERIMENTAL BROKEN INCOMPLETE)]) 646dnl AC_MSG_RESULT([$ac_arg_use_msn]) 647AC_MSG_CHECKING([whether to enable Oscar peer to peer connections]) 648AC_MSG_RESULT([$ac_arg_use_dc]) 649AC_MSG_CHECKING([whether to enable scripting FIFO]) 650AC_MSG_RESULT([$ac_arg_use_remote]) 651AC_MSG_CHECKING([whether to enable Tcl scripting]) 652AC_MSG_RESULT([$ac_arg_use_tcl]) 653AC_MSG_CHECKING([whether to enable SSL/TLS support]) 654AC_MSG_RESULT([$ac_arg_use_ssl]) 655AC_MSG_CHECKING([whether to enable OTR support]) 656AC_MSG_RESULT([$ac_arg_use_otr]) 657 658 659AC_CONFIG_FILES([src/Makefile Makefile lang/Makefile doc/Makefile]) 660AC_OUTPUT 661