1# -*- Autoconf -*- 2# Process this file with autoconf to produce a configure script. 3 4AC_PREREQ([2.65]) 5AC_INIT([tox], [0.2.13]) 6AC_CONFIG_AUX_DIR(configure_aux) 7AC_CONFIG_SRCDIR([toxcore/net_crypto.c]) 8AC_CONFIG_HEADERS([config.h]) 9AM_INIT_AUTOMAKE([foreign 1.10 -Wall subdir-objects tar-ustar]) 10m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 11AC_CONFIG_MACRO_DIR([m4]) 12 13EXTRA_LT_LDFLAGS= 14 15if test "x${prefix}" = "xNONE"; then 16 prefix="${ac_default_prefix}" 17fi 18 19BUILD_DHT_BOOTSTRAP_DAEMON="no" 20BUILD_DHT_BOOTSTRAP="no" 21BUILD_TESTS="yes" 22BUILD_AV="yes" 23BUILD_TESTING="yes" 24 25LIBCONFIG_FOUND="no" 26WANT_NACL="no" 27ADD_NACL_OBJECTS_TO_PKGCONFIG="yes" 28SET_SO_VERSION="yes" 29 30AC_ARG_ENABLE([soname-versions], 31 [AC_HELP_STRING([--enable-soname-versions], [enable soname versions (must be disabled for android) (default: enabled)]) ], 32 [ 33 if test "x$enableval" = "xno"; then 34 SET_SO_VERSION="no" 35 elif test "x$enableval" = "xyes"; then 36 SET_SO_VERSION="yes" 37 fi 38 ] 39) 40AM_CONDITIONAL(SET_SO_VERSION, test "x$SET_SO_VERSION" = "xyes") 41 42AC_ARG_ENABLE([nacl], 43 [AC_HELP_STRING([--enable-nacl], [use nacl instead of libsodium (default: disabled)]) ], 44 [ 45 if test "x$enableval" = "xno"; then 46 WANT_NACL="no" 47 elif test "x$enableval" = "xyes"; then 48 WANT_NACL="yes" 49 fi 50 ] 51) 52 53AC_ARG_ENABLE([randombytes-stir], 54 [AC_HELP_STRING([--enable-randombytes-stir], [use randombytes_stir() instead of sodium_init() for faster startup on android (default: disabled)]) ], 55 [ 56 if test "x$enableval" = "xyes"; then 57 if test "x$WANT_NACL" = "xyes"; then 58 AC_MSG_WARN([randombytes_stir() is not available with NaCl library]) 59 else 60 AC_DEFINE([USE_RANDOMBYTES_STIR], [1], [randombytes_stir() instead of sodium_init()]) 61 fi 62 fi 63 ] 64) 65 66AC_ARG_WITH(log-level, 67 AC_HELP_STRING([--with-log-level=LEVEL], 68 [Logger levels: TRACE; DEBUG; INFO; WARNING; ERROR ]), 69 [ 70 if test "x$withval" = "xTRACE"; then 71 AC_DEFINE([MIN_LOGGER_LEVEL], [LOGGER_LEVEL_TRACE], [Logger_Level value]) 72 73 elif test "x$withval" = "xDEBUG"; then 74 AC_DEFINE([MIN_LOGGER_LEVEL], [LOGGER_LEVEL_DEBUG], [Logger_Level value]) 75 76 elif test "x$withval" = "xINFO"; then 77 AC_DEFINE([MIN_LOGGER_LEVEL], [LOGGER_LEVEL_INFO], [Logger_Level value]) 78 79 elif test "x$withval" = "xWARNING"; then 80 AC_DEFINE([MIN_LOGGER_LEVEL], [LOGGER_LEVEL_WARNING], [Logger_Level value]) 81 82 elif test "x$withval" = "xERROR"; then 83 AC_DEFINE([MIN_LOGGER_LEVEL], [LOGGER_LEVEL_ERROR], [Logger_Level value]) 84 else 85 AC_MSG_WARN([Invalid logger level: $withval. Using default.]) 86 fi 87 ] 88) 89 90PKG_PROG_PKG_CONFIG 91 92AC_ARG_ENABLE([av], 93 [AC_HELP_STRING([--disable-av], [build AV support libraries (default: auto)]) ], 94 [ 95 if test "x$enableval" = "xno"; then 96 BUILD_AV="no" 97 elif test "x$enableval" = "xyes"; then 98 BUILD_AV="yes" 99 fi 100 ] 101) 102 103AC_ARG_ENABLE([tests], 104 [AC_HELP_STRING([--disable-tests], [build unit tests (default: auto)]) ], 105 [ 106 if test "x$enableval" = "xno"; then 107 BUILD_TESTS="no" 108 elif test "x$enableval" = "xyes"; then 109 BUILD_TESTS="yes" 110 fi 111 ] 112) 113 114AC_ARG_ENABLE([daemon], 115 [AC_HELP_STRING([--enable-daemon], [build DHT bootstrap daemon (default: auto)]) ], 116 [ 117 if test "x$enableval" = "xno"; then 118 BUILD_DHT_BOOTSTRAP_DAEMON="no" 119 elif test "x$enableval" = "xyes"; then 120 BUILD_DHT_BOOTSTRAP_DAEMON="yes" 121 fi 122 ] 123) 124 125AC_ARG_ENABLE([dht-bootstrap], 126 [AC_HELP_STRING([--enable-dht-bootstrap], [build DHT bootstrap utility (default: disabled)]) ], 127 [ 128 if test "x$enableval" = "xno"; then 129 BUILD_DHT_BOOTSTRAP="no" 130 elif test "x$enableval" = "xyes"; then 131 BUILD_DHT_BOOTSTRAP="yes" 132 fi 133 ] 134) 135 136 137AC_ARG_ENABLE([rt], 138 [AC_HELP_STRING([--disable-rt], [Disables the librt check (default: auto)]) ], 139 [ 140 if test "x$enableval" = "xno"; then 141 DISABLE_RT="yes" 142 elif test "x$enableval" = "xyes"; then 143 DISABLE_RT="no" 144 fi 145 ] 146) 147 148AC_ARG_ENABLE([testing], 149 [AC_HELP_STRING([--disable-testing], [build various testing tools (default: auto)]) ], 150 [ 151 if test "x$enableval" = "xno"; then 152 BUILD_TESTING="no" 153 elif test "x$enableval" = "xyes"; then 154 BUILD_TESTING="yes" 155 fi 156 ] 157) 158 159AC_ARG_ENABLE([[epoll]], 160 [AS_HELP_STRING([[--enable-epoll[=ARG]]], [enable epoll support (yes, no, auto) [auto]])], 161 [enable_epoll=${enableval}], 162 [enable_epoll='auto'] 163 ) 164 165AC_ARG_ENABLE([[ipv6]], 166 [AS_HELP_STRING([[--disable-ipv6[=ARG]]], [use ipv4 in tests (yes, no, auto) [auto]])], 167 [use_ipv6=${enableval}], 168 [use_ipv6='auto'] 169 ) 170 171if test "$use_ipv6" != "yes"; then 172 AC_DEFINE([USE_IPV6],[0],[define to 0 to force ipv4]) 173fi 174 175AX_HAVE_EPOLL 176if test "$enable_epoll" != "no"; then 177 if test "${ax_cv_have_epoll}" = "yes"; then 178 AC_DEFINE([TCP_SERVER_USE_EPOLL],[1],[define to 1 to enable epoll support]) 179 enable_epoll='yes' 180 else 181 if test "$enable_epoll" = "yes"; then 182 AC_MSG_ERROR([[Support for epoll was explicitly requested but cannot be enabled on this platform.]]) 183 fi 184 enable_epoll='no' 185 fi 186fi 187 188DEPSEARCH= 189LIBSODIUM_SEARCH_HEADERS= 190LIBSODIUM_SEARCH_LIBS= 191NACL_SEARCH_HEADERS= 192NACL_SEARCH_LIBS= 193 194AC_ARG_WITH(dependency-search, 195 AC_HELP_STRING([--with-dependency-search=DIR], 196 [search for dependencies in DIR, i.e., look for libraries in 197 DIR/lib and for headers in DIR/include]), 198 [ 199 DEPSEARCH="$withval" 200 ] 201) 202 203if test -n "$DEPSEARCH"; then 204 CFLAGS="$CFLAGS -I$DEPSEARCH/include" 205 CPPFLAGS="$CPPFLAGS -I$DEPSEARCH/include" 206 LDFLAGS="$LDFLAGS -L$DEPSEARCH/lib" 207 export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$DEPSEARCH/lib/pkgconfig 208fi 209 210AC_ARG_WITH(nacl-headers, 211 AC_HELP_STRING([--with-nacl-headers=DIR], 212 [search for nacl<F2> header files in DIR]), 213 [ 214 NACL_SEARCH_HEADERS="$withval" 215 AC_MSG_NOTICE([will search for nacl header files in $withval]) 216 ] 217) 218 219AC_ARG_WITH(nacl-libs, 220 AC_HELP_STRING([--with-nacl-libs=DIR], 221 [search for nacl libraries in DIR]), 222 [ 223 NACL_SEARCH_LIBS="$withval" 224 AC_MSG_NOTICE([will search for nacl libraries in $withval]) 225 ] 226) 227 228AC_ARG_WITH(libsodium-headers, 229 AC_HELP_STRING([--with-libsodium-headers=DIR], 230 [search for libsodium header files in DIR]), 231 [ 232 LIBSODIUM_SEARCH_HEADERS="$withval" 233 AC_MSG_NOTICE([will search for libsodium header files in $withval]) 234 ] 235) 236 237AC_ARG_WITH(libsodium-libs, 238 AC_HELP_STRING([--with-libsodium-libs=DIR], 239 [search for libsodium libraries in DIR]), 240 [ 241 LIBSODIUM_SEARCH_LIBS="$withval" 242 AC_MSG_NOTICE([will search for libsodium libraries in $withval]) 243 ] 244) 245 246if test "x$WANT_NACL" = "xyes"; then 247 enable_shared=no 248 enable_static=yes 249fi 250 251# Checks for programs. 252AC_PROG_CC_C99 253 254if test "x$ac_cv_prog_cc_c99" = "xno" ; then 255 AC_MSG_ERROR([c-toxcore requires a C99 compatible compiler]) 256fi 257 258AM_PROG_CC_C_O 259m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) 260AC_LIBTOOL_WIN32_DLL 261AC_PROG_LIBTOOL 262 263WIN32=no 264MACH=no 265AC_CANONICAL_HOST 266case $host_os in 267 *mingw*) 268 WIN32="yes" 269 EXTRA_LT_LDFLAGS="$EXTRA_LT_LDFLAGS -no-undefined" 270 ;; 271 *solaris*) 272 LIBS="$LIBS -lssp -lsocket -lnsl" 273 ;; 274 *qnx*) 275 LIBS="$LIBS -lsocket" 276 ;; 277 *freebsd*|*openbsd*) 278 LDFLAGS="$LDFLAGS -L/usr/local/lib" 279 CFLAGS="$CFLAGS -I/usr/local/include" 280 CPPFLAGS="$CPPFLAGS -I/usr/local/include" 281 ADD_NACL_OBJECTS_TO_PKGCONFIG="no" 282 ;; 283 darwin*) 284 MACH=yes 285 ;; 286esac 287AM_CONDITIONAL(WIN32, test "x$WIN32" = "xyes") 288 289AC_SUBST(EXTRA_LT_LDFLAGS) 290 291# Needed math flags for some compilers 292 293MATH_LDFLAGS="-lm" 294AC_SUBST(MATH_LDFLAGS) 295 296# Checks for libraries. 297AC_CHECK_FUNCS([explicit_bzero memset_s]) 298PKG_CHECK_MODULES([LIBSODIUM], [libsodium], 299 [ 300 LIBSODIUM_FOUND="yes" 301 ], 302 [ 303 LIBSODIUM_FOUND="no" 304 ]) 305 306if test "x$WANT_NACL" = "xyes"; then 307 NACL_LIBS= 308 NACL_LDFLAGS= 309 NACL_OBJECTS= 310 NACL_OBJECTS_PKGCONFIG= 311 LDFLAGS_SAVE="$LDFLAGS" 312 if test -n "$NACL_SEARCH_LIBS"; then 313 LDFLAGS="-L$NACL_SEARCH_LIBS $LDFLAGS" 314 AC_CHECK_LIB(nacl, random, 315 [ 316 NACL_LDFLAGS="-L$NACL_SEARCH_LIBS" 317 NACL_LIBS="-lnacl" 318 ], 319 [ 320 AC_MSG_ERROR([library nacl was not found in requested location $NACL_SEARCH_LIBS]) 321 ] 322 ) 323 else 324 AC_CHECK_LIB(nacl, random, 325 [], 326 [ 327 AC_MSG_ERROR([you enabled nacl support, but library nacl was not found on your system]) 328 ] 329 ) 330 fi 331 332 if (test -f "$NACL_SEARCH_LIBS/cpucycles.o") && 333 (test -f "$NACL_SEARCH_LIBS/randombytes.o"); then 334 NACL_OBJECTS="$NACL_SEARCH_LIBS/cpucycles.o $NACL_SEARCH_LIBS/randombytes.o" 335 AC_MSG_NOTICE([found extra NaCl objects: $NACL_OBJECTS]) 336 if test "x$ADD_NACL_OBJECTS_TO_PKGCONFIG" = "xyes"; then 337 AC_MSG_NOTICE([adding extra NaCl objects to pkg-config file]) 338 NACL_OBJECTS_PKGCONFIG="$NACL_OBJECTS" 339 fi 340 else 341 AC_MSG_ERROR([required NaCl object files cpucycles.o randombytes.o not found, please specify their location using the --with-nacl-libs parameter]) 342 fi 343 344 LDFLAGS="$LDFLAGS_SAVE" 345 AC_SUBST(NACL_LIBS) 346 AC_SUBST(NACL_LDFLAGS) 347 AC_SUBST(NACL_OBJECTS) 348 AC_SUBST(NACL_OBJECTS_PKGCONFIG) 349elif test "x$LIBSODIUM_FOUND" = "xno"; then 350 LIBSODIUM_LIBS= 351 LIBSODIUM_LDFLAGS= 352 LDFLAGS_SAVE="$LDFLAGS" 353 if test -n "$LIBSODIUM_SEARCH_LIBS"; then 354 LDFLAGS="-L$LIBSODIUM_SEARCH_LIBS $LDFLAGS" 355 AC_CHECK_LIB(sodium, crypto_pwhash_scryptsalsa208sha256, 356 [ 357 LIBSODIUM_LDFLAGS="-L$LIBSODIUM_SEARCH_LIBS" 358 LIBSODIUM_LIBS="-lsodium" 359 ], 360 [ 361 AC_MSG_ERROR([required library libsodium was not found in requested location $LIBSODIUM_SEARCH_LIBS or library version is too old]) 362 ] 363 ) 364 else 365 AC_CHECK_LIB(sodium, crypto_pwhash_scryptsalsa208sha256, 366 [], 367 [ 368 AC_MSG_ERROR([required library libsodium was not found on your system, please check http://download.libsodium.org/libsodium/releases/ or library version is too old]) 369 ] 370 ) 371 fi 372 373 LDFLAGS="$LDFLAGS_SAVE" 374 AC_SUBST(LIBSODIUM_LIBS) 375 AC_SUBST(LIBSODIUM_LDFLAGS) 376fi 377 378# Checks for header files. 379AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h]) 380 381 382if test "x$WANT_NACL" = "xyes"; then 383 NACL_CFLAGS= 384 CFLAGS_SAVE="$CFLAGS" 385 CPPFLAGS_SAVE="$CPPFLAGS" 386 if test -n "$NACL_SEARCH_HEADERS"; then 387 CFLAGS="-I$NACL_SEARCH_HEADERS $CFLAGS" 388 CPPFLAGS="-I$NACL_SEARCH_HEADERS $CPPFLAGS" 389 AC_CHECK_HEADER(crypto_box.h, 390 [ 391 NACL_CFLAGS="-I$NACL_SEARCH_HEADERS" 392 ], 393 [ 394 AC_MSG_ERROR([header files for library nacl were not found in requested location $NACL_SEARCH_HEADERS]) 395 ] 396 ) 397 else 398 AC_CHECK_HEADER(crypto_box.h, 399 [], 400 [ 401 AC_MSG_ERROR([you enabled nacl support, but nacl header files were not found on your system]) 402 ] 403 ) 404 fi 405 CFLAGS="$CFLAGS_SAVE" 406 CPPFLAGS="$CPPFLAGS_SAVE" 407 AC_SUBST(NACL_CFLAGS) 408 AC_DEFINE([VANILLA_NACL], [1], [use nacl instead of libsodium]) 409elif test "x$LIBSODIUM_FOUND" = "xno"; then 410 LIBSODIUM_CFLAGS= 411 CFLAGS_SAVE="$CFLAGS" 412 CPPFLAGS_SAVE="$CPPFLAGS" 413 if test -n "$LIBSODIUM_SEARCH_HEADERS"; then 414 CFLAGS="-I$LIBSODIUM_SEARCH_HEADERS $CFLAGS" 415 CPPFLAGS="-I$LIBSODIUM_SEARCH_HEADERS $CPPFLAGS" 416 AC_CHECK_HEADER(sodium.h, 417 [ 418 LIBSODIUM_CFLAGS="-I$LIBSODIUM_SEARCH_HEADERS" 419 ], 420 [ 421 AC_MSG_ERROR([header files for required library libsodium were not found in requested location $LIBSODIUM_SEARCH_HEADERS]) 422 ] 423 ) 424 else 425 AC_CHECK_HEADER(sodium.h, 426 [], 427 [ 428 AC_MSG_ERROR([header files for required library libsodium was not found on your system, please check http://download.libsodium.org/libsodium/releases/]) 429 ] 430 ) 431 fi 432 CFLAGS="$CFLAGS_SAVE" 433 CPPFLAGS="$CPPFLAGS_SAVE" 434 AC_SUBST(LIBSODIUM_CFLAGS) 435fi 436 437# Checks for library functions. 438if (test "x$WIN32" != "xyes") && (test "x$MACH" != "xyes") && (test "x${host_os#*openbsd}" = "x$host_os") && (test "x$DISABLE_RT" != "xyes"); then 439 AC_CHECK_LIB(rt, clock_gettime, 440 [ 441 RT_LIBS="-lrt" 442 AC_SUBST(RT_LIBS) 443 ], 444 [ 445 AC_MSG_ERROR([required library rt was not found on your system]) 446 ] 447 ) 448fi 449 450 451AX_PTHREAD( 452 [], 453 [ 454 AC_MSG_ERROR([required library pthread was not found on your system]) 455 ] 456) 457 458AC_CHECK_LIB([pthread], [pthread_self], 459 [ 460 PTHREAD_LDFLAGS="-lpthread" 461 AC_SUBST(PTHREAD_LDFLAGS) 462 ] 463) 464 465if test "x$BUILD_AV" = "xyes"; then 466 PKG_CHECK_MODULES([OPUS], [opus], 467 [], 468 [ 469 AC_MSG_WARN([disabling AV support $OPUS_PKG_ERRORS]) 470 BUILD_AV="no" 471 ] 472 ) 473fi 474 475if test "x$BUILD_AV" = "xyes"; then 476 PKG_CHECK_MODULES([VPX], [vpx], 477 [], 478 [ 479 AC_MSG_WARN([disabling AV support $VPX_PKG_ERRORS]) 480 BUILD_AV="no" 481 ] 482 ) 483fi 484 485if test "x$BUILD_AV" = "xyes"; then 486 # toxcore lib needs an global? 487 # So far this works okay 488 AV_LIBS="$OPUS_LIBS $VPX_LIBS" 489 AC_SUBST(AV_LIBS) 490 491 AV_CFLAGS="$OPUS_CFLAGS $VPX_CFLAGS" 492 AC_SUBST(AV_CFLAGS) 493fi 494 495if test -n "$PKG_CONFIG"; then 496 if test "x$BUILD_DHT_BOOTSTRAP_DAEMON" = "xyes"; then 497 PKG_CHECK_MODULES([LIBCONFIG], [libconfig >= 1.4.6], 498 [ 499 LIBCONFIG_FOUND="yes" 500 ], 501 [ 502 AC_MSG_WARN([$LIBCONFIG_PKG_ERRORS]) 503 AC_MSG_WARN([libconfig not available, will not build DHT bootstrap daemon]) 504 BUILD_DHT_BOOTSTRAP_DAEMON="no" 505 ]) 506 fi 507else 508 AC_MSG_WARN([pkg-config was not found on your system, will search for libraries manually]) 509fi 510 511if (test "x$BUILD_DHT_BOOTSTRAP_DAEMON" = "xyes") && \ 512 (test "x$LIBCONFIG_FOUND" = "xno"); then 513 AC_CHECK_HEADER(libconfig.h, 514 [], 515 [ 516 AC_MSG_WARN([header files for library libconfig was not found on your system, not building DHT bootstrap daemon]) 517 BUILD_DHT_BOOTSTRAP_DAEMON="no" 518 ] 519 ) 520 521 if test "x$BUILD_DHT_BOOTSTRAP_DAEMON" = "xyes"; then 522 AC_CHECK_LIB(config, config_read, 523 [], 524 [ 525 AC_MSG_WARN([library libconfig was not found on the system]) 526 BUILD_DHT_BOOTSTRAP_DAEMON="no" 527 ] 528 ) 529 fi 530fi 531 532if test "x$WIN32" = "xyes"; then 533 AC_CHECK_LIB(ws2_32, main, 534 [ 535 WINSOCK2_LIBS="-liphlpapi -lws2_32" 536 AC_SUBST(WINSOCK2_LIBS) 537 ], 538 [ 539 AC_MSG_ERROR([required library was not found on the system, please check your MinGW installation]) 540 ] 541 ) 542fi 543 544AM_CONDITIONAL(BUILD_DHT_BOOTSTRAP_DAEMON, test "x$BUILD_DHT_BOOTSTRAP_DAEMON" = "xyes") 545AM_CONDITIONAL(BUILD_DHT_BOOTSTRAP, test "x$BUILD_DHT_BOOTSTRAP" = "xyes") 546AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes") 547AM_CONDITIONAL(BUILD_AV, test "x$BUILD_AV" = "xyes") 548AM_CONDITIONAL(BUILD_TESTING, test "x$BUILD_TESTING" = "xyes") 549AM_CONDITIONAL(WITH_NACL, test "x$WANT_NACL" = "xyes") 550AM_CONDITIONAL(WIN32, test "x$WIN32" = "xyes") 551 552AC_CONFIG_FILES([Makefile 553 build/Makefile 554 libtoxcore.pc 555 tox.spec 556 ]) 557 558AM_COND_IF(BUILD_AV, 559 [ 560 AC_CONFIG_FILES([libtoxav.pc]) 561 ],) 562 563AC_OUTPUT 564