1 dnl Copyright (c) 2001-2004, Roger Dingledine
2 dnl Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
3 dnl Copyright (c) 2007-2012, The Tor Project, Inc.
4 dnl See LICENSE for licensing information
6 AC_INIT([tor],[0.2.4.7-alpha-dev])
7 AC_CONFIG_SRCDIR([src/or/main.c])
9 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
10 AC_CONFIG_HEADERS([orconfig.h])
14 if test -f /etc/redhat-release ; then
15 if test -f /usr/kerberos/include ; then
16 CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
20 # Not a no-op; we want to make sure that CPPFLAGS is set before we use
21 # the += operator on it in src/or/Makefile.am
22 CPPFLAGS="$CPPFLAGS -I\${top_srcdir}/src/common"
24 #XXXX020 We should make these enabled or not, before 0.2.0.x-final
25 AC_ARG_ENABLE(buf-freelists,
26 AS_HELP_STRING(--disable-buf-freelists, disable freelists for buffer RAM))
27 AC_ARG_ENABLE(openbsd-malloc,
28 AS_HELP_STRING(--enable-openbsd-malloc, Use malloc code from openbsd. Linux only))
29 AC_ARG_ENABLE(instrument-downloads,
30 AS_HELP_STRING(--enable-instrument-downloads, Instrument downloads of directory resources etc.))
31 AC_ARG_ENABLE(static-openssl,
32 AS_HELP_STRING(--enable-static-openssl, Link against a static openssl library. Requires --with-openssl-dir))
33 AC_ARG_ENABLE(static-libevent,
34 AS_HELP_STRING(--enable-static-libevent, Link against a static libevent library. Requires --with-libevent-dir))
35 AC_ARG_ENABLE(static-zlib,
36 AS_HELP_STRING(--enable-static-zlib, Link against a static zlib library. Requires --with-zlib-dir))
37 AC_ARG_ENABLE(static-tor,
38 AS_HELP_STRING(--enable-static-tor, Create an entirely static Tor binary. Requires --with-openssl-dir and --with-libevent-dir and --with-zlib-dir))
40 if test "$enable_static_tor" = "yes"; then
41 enable_static_libevent="yes";
42 enable_static_openssl="yes";
43 enable_static_zlib="yes";
44 CFLAGS="$CFLAGS -static"
47 if test x$enable_buf_freelists != xno; then
48 AC_DEFINE(ENABLE_BUF_FREELISTS, 1,
49 [Defined if we try to use freelists for buffer RAM chunks])
51 AM_CONDITIONAL(USE_OPENBSD_MALLOC, test x$enable_openbsd_malloc = xyes)
52 if test x$enable_instrument_downloads = xyes; then
53 AC_DEFINE(INSTRUMENT_DOWNLOADS, 1,
54 [Defined if we want to keep track of how much of each kind of resource we download.])
57 AC_ARG_ENABLE(transparent,
58 AS_HELP_STRING(--disable-transparent, disable transparent proxy support),
59 [case "${enableval}" in
60 yes) transparent=true ;;
61 no) transparent=false ;;
62 *) AC_MSG_ERROR(bad value for --enable-transparent) ;;
63 esac], [transparent=true])
65 AC_ARG_ENABLE(asciidoc,
66 AS_HELP_STRING(--disable-asciidoc, don't use asciidoc (disables building of manpages)),
67 [case "${enableval}" in
70 *) AC_MSG_ERROR(bad value for --disable-asciidoc) ;;
71 esac], [asciidoc=true])
73 # By default, we're not ready to ship a NAT-PMP aware Tor
74 AC_ARG_ENABLE(nat-pmp,
75 AS_HELP_STRING(--enable-nat-pmp, enable NAT-PMP support),
76 [case "${enableval}" in
79 * ) AC_MSG_ERROR(bad value for --enable-nat-pmp) ;;
80 esac], [natpmp=false])
82 # By default, we're not ready to ship a UPnP aware Tor
84 AS_HELP_STRING(--enable-upnp, enable UPnP support),
85 [case "${enableval}" in
88 * ) AC_MSG_ERROR(bad value for --enable-upnp) ;;
92 AC_ARG_ENABLE(threads,
93 AS_HELP_STRING(--disable-threads, disable multi-threading support))
95 if test x$enable_threads = x; then
98 # Don't try multithreading on solaris -- cpuworkers seem to lock.
99 AC_MSG_NOTICE([You are running Solaris; Sometimes threading makes
100 cpu workers lock up here, so I will disable threads.])
101 enable_threads="no";;
103 enable_threads="yes";;
107 if test "$enable_threads" = "yes"; then
108 AC_DEFINE(ENABLE_THREADS, 1, [Defined if we will try to use multithreading])
113 AC_DEFINE(_REENTRANT, 1, [Define on some platforms to activate x_r() functions in time.h])
117 AC_ARG_ENABLE(gcc-warnings,
118 AS_HELP_STRING(--enable-gcc-warnings, enable verbose warnings))
119 AC_ARG_ENABLE(gcc-warnings-advisory,
120 AS_HELP_STRING(--enable-gcc-warnings-advisory, [enable verbose warnings, excluding -Werror]))
122 dnl Adam shostack suggests the following for Windows:
123 dnl -D_FORTIFY_SOURCE=2 -fstack-protector-all
124 dnl Others suggest '/gs /safeseh /nxcompat /dynamicbase' for non-gcc on Windows
125 dnl This requires that we use gcc and that we add -O2 to the CFLAGS.
126 AC_ARG_ENABLE(gcc-hardening,
127 AS_HELP_STRING(--disable-gcc-hardening, disable compiler security checks))
129 dnl Linker hardening options
130 dnl Currently these options are ELF specific - you can't use this with MacOSX
131 AC_ARG_ENABLE(linker-hardening,
132 AS_HELP_STRING(--disable-linker-hardening, disable linker security fixups))
134 AC_ARG_ENABLE(local-appdata,
135 AS_HELP_STRING(--enable-local-appdata, default to host local application data paths on Windows))
136 if test "$enable_local_appdata" = "yes"; then
137 AC_DEFINE(ENABLE_LOCAL_APPDATA, 1,
138 [Defined if we default to host local appdata paths on Windows])
142 AC_ARG_ENABLE(tor2web-mode,
143 AS_HELP_STRING(--enable-tor2web-mode, support tor2web non-anonymous mode),
144 [if test x$enableval = xyes; then
145 CFLAGS="$CFLAGS -D ENABLE_TOR2WEB_MODE=1"
148 AC_ARG_ENABLE(bufferevents,
149 AS_HELP_STRING(--enable-bufferevents, use Libevent's buffered IO.))
151 dnl check for the correct "ar" when cross-compiling
152 AN_MAKEVAR([AR], [AC_PROG_AR])
153 AN_PROGRAM([ar], [AC_PROG_AR])
154 AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL([AR], [ar], [ar])])
162 dnl autoconf 2.59 appears not to support AC_PROG_SED
163 AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
165 dnl check for asciidoc and a2x
166 AC_PATH_PROG([ASCIIDOC], [asciidoc], none)
167 AC_PATH_PROG([A2X], [a2x], none)
169 AM_CONDITIONAL(USE_ASCIIDOC, test x$asciidoc = xtrue)
171 AM_CONDITIONAL(USE_FW_HELPER, test x$natpmp = xtrue || test x$upnp = xtrue)
172 AM_CONDITIONAL(NAT_PMP, test x$natpmp = xtrue)
173 AM_CONDITIONAL(MINIUPNPC, test x$upnp = xtrue)
176 ifdef([AC_C_FLEXIBLE_ARRAY_MEMBER], [
177 AC_C_FLEXIBLE_ARRAY_MEMBER
179 dnl Maybe we've got an old autoconf...
180 AC_CACHE_CHECK([for flexible array members],
184 struct abc { int a; char b[]; };
186 struct abc *def = malloc(sizeof(struct abc)+sizeof(char));
189 [tor_cv_c_flexarray=yes],
190 [tor_cv_c_flexarray=no])])
191 if test $tor_cv_flexarray = yes ; then
192 AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], [], [Define to nothing if C supports flexible array members, and to 1 if it does not.])
194 AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], [1], [Define to nothing if C supports flexible array members, and to 1 if it does not.])
198 AC_PATH_PROG([SHA1SUM], [sha1sum], none)
199 AC_PATH_PROG([OPENSSL], [openssl], none)
202 AC_ARG_WITH(tor-user,
203 [ --with-tor-user=NAME Specify username for tor daemon ],
211 AC_ARG_WITH(tor-group,
212 [ --with-tor-group=NAME Specify group name for tor daemon ],
220 dnl If _WIN32 is defined and non-zero, we are building for win32
221 AC_MSG_CHECKING([for win32])
222 AC_RUN_IFELSE([AC_LANG_SOURCE([
223 int main(int c, char **v) {
234 bwin32=true; AC_MSG_RESULT([yes]),
235 bwin32=false; AC_MSG_RESULT([no]),
236 bwin32=cross; AC_MSG_RESULT([cross])
239 if test "$bwin32" = cross; then
240 AC_MSG_CHECKING([for win32 (cross)])
241 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
243 int main(int c, char **v) {return 0;}
246 int main(int c, char **v) {return x(y);}
249 bwin32=true; AC_MSG_RESULT([yes]),
250 bwin32=false; AC_MSG_RESULT([no]))
253 AM_CONDITIONAL(BUILD_NT_SERVICES, test x$bwin32 = xtrue)
255 dnl Enable C99 when compiling with MIPSpro
256 AC_MSG_CHECKING([for MIPSpro compiler])
257 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [
258 #if (defined(__sgi) && defined(_COMPILER_VERSION))
263 bmipspro=false; AC_MSG_RESULT(no),
264 bmipspro=true; AC_MSG_RESULT(yes))
266 if test "$bmipspro" = true; then
267 CFLAGS="$CFLAGS -c99"
272 AC_SEARCH_LIBS(socket, [socket network])
273 AC_SEARCH_LIBS(gethostbyname, [nsl])
274 AC_SEARCH_LIBS(dlopen, [dl])
275 AC_SEARCH_LIBS(inet_aton, [resolv])
277 AC_SEARCH_LIBS([clock_gettime], [rt])
278 if test "$LIBS" != "$saved_LIBS"; then
279 # Looks like we need -lrt for clock_gettime().
283 if test "$enable_threads" = "yes"; then
284 AC_SEARCH_LIBS(pthread_create, [pthread])
285 AC_SEARCH_LIBS(pthread_detach, [pthread])
288 dnl -------------------------------------------------------------------
289 dnl Check for functions before libevent, since libevent-1.2 apparently
290 dnl exports strlcpy without defining it in a header.
324 if test "$enable_threads" = "yes"; then
325 AC_CHECK_HEADERS(pthread.h)
326 AC_CHECK_FUNCS(pthread_create)
329 dnl ------------------------------------------------------
330 dnl Where do you live, libevent? And how do we call you?
332 if test "$bwin32" = true; then
333 TOR_LIB_WS32=-lws2_32
334 TOR_LIB_IPHLPAPI=-liphlpapi
335 # Some of the cargo-cults recommend -lwsock32 as well, but I don't
336 # think it's actually necessary.
342 AC_SUBST(TOR_LIB_WS32)
343 AC_SUBST(TOR_LIB_GDI)
344 AC_SUBST(TOR_LIB_IPHLPAPI)
346 dnl We need to do this before we try our disgusting hack below.
347 AC_CHECK_HEADERS([sys/types.h])
349 dnl This is a disgusting hack so we safely include older libevent headers.
350 AC_CHECK_TYPE(u_int64_t, unsigned long long)
351 AC_CHECK_TYPE(u_int32_t, unsigned long)
352 AC_CHECK_TYPE(u_int16_t, unsigned short)
353 AC_CHECK_TYPE(u_int8_t, unsigned char)
355 tor_libevent_pkg_redhat="libevent"
356 tor_libevent_pkg_debian="libevent-dev"
357 tor_libevent_devpkg_redhat="libevent-devel"
358 tor_libevent_devpkg_debian="libevent-dev"
360 dnl On Gnu/Linux or any place we require it, we'll add librt to the Libevent
361 dnl linking for static builds.
362 STATIC_LIBEVENT_FLAGS=""
363 if test "$enable_static_libevent" = "yes"; then
364 if test "$have_rt" = yes; then
365 STATIC_LIBEVENT_FLAGS=" -lrt "
369 TOR_SEARCH_LIBRARY(libevent, $trylibeventdir, [-levent $STATIC_LIBEVENT_FLAGS $TOR_LIB_WS32], [
371 #include <winsock2.h>
374 #include <sys/time.h>
375 #include <sys/types.h>
376 #include <event.h>], [
378 #include <winsock2.h>
380 void exit(int); void *event_init(void);],
383 {WSADATA d; WSAStartup(0x101,&d); }
385 event_init(); exit(0);
386 ], [--with-libevent-dir], [/opt/libevent])
388 dnl Now check for particular libevent functions.
390 save_LDFLAGS="$LDFLAGS"
391 save_CPPFLAGS="$CPPFLAGS"
392 LIBS="-levent $STATIC_LIBEVENT_FLAGS $TOR_LIB_WS32 $LIBS"
393 LDFLAGS="$TOR_LDFLAGS_libevent $LDFLAGS"
394 CPPFLAGS="$TOR_CPPFLAGS_libevent $CPPFLAGS"
395 AC_CHECK_FUNCS(event_get_version event_get_version_number event_get_method event_set_log_callback evdns_set_outgoing_bind_address event_base_loopexit)
396 AC_CHECK_MEMBERS([struct event.min_heap_idx], , ,
400 AC_CHECK_HEADERS(event2/event.h event2/dns.h event2/bufferevent_ssl.h)
403 LDFLAGS="$save_LDFLAGS"
404 CPPFLAGS="$save_CPPFLAGS"
407 AM_CONDITIONAL(USE_EXTERNAL_EVDNS, test x$ac_cv_header_event2_dns_h = xyes)
409 if test "$enable_static_libevent" = "yes"; then
410 if test "$tor_cv_library_libevent_dir" = "(system)"; then
411 AC_MSG_ERROR("You must specify an explicit --with-libevent-dir=x option when using --enable-static-libevent")
413 TOR_LIBEVENT_LIBS="$TOR_LIBDIR_libevent/libevent.a $STATIC_LIBEVENT_FLAGS"
416 TOR_LIBEVENT_LIBS="-levent"
419 dnl This isn't the best test for Libevent 2.0.3-alpha. Once it's released,
420 dnl we can do much better.
421 if test "$enable_bufferevents" = "yes" ; then
422 if test "$ac_cv_header_event2_bufferevent_ssl_h" != "yes" ; then
423 AC_MSG_ERROR([You've asked for bufferevent support, but you're using a version of Libevent without SSL support. This won't work. We need Libevent 2.0.8-rc or later, and you don't seem to even have Libevent 2.0.3-alpha.])
426 CPPFLAGS="$CPPFLAGS $TOR_CPPFLAGS_libevent"
428 # Check for the right version. First see if version detection works.
429 AC_MSG_CHECKING([whether we can detect the Libevent version])
430 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
431 #include <event2/event.h>
432 #if !defined(LIBEVENT_VERSION_NUMBER) || LIBEVENT_VERSION_NUMBER < 10
438 ])], [event_version_number_works=yes; AC_MSG_RESULT([yes]) ],
439 [event_version_number_works=no; AC_MSG_RESULT([no])])
440 if test "$event_version_number_works" != 'yes'; then
441 AC_MSG_WARN([Version detection on Libevent seems broken. Your Libevent installation is probably screwed up or very old.])
443 AC_MSG_CHECKING([whether Libevent is new enough for bufferevents])
444 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
445 #include <event2/event.h>
446 #if !defined(LIBEVENT_VERSION_NUMBER) || LIBEVENT_VERSION_NUMBER < 0x02000d00
452 ])], [ AC_MSG_RESULT([yes]) ],
453 [ AC_MSG_RESULT([no])
454 AC_MSG_ERROR([Libevent does not seem new enough to support bufferevents. We require 2.0.13-stable or later]) ] )
460 LDFLAGS="$save_LDFLAGS"
461 CPPFLAGS="$save_CPPFLAGS"
463 AM_CONDITIONAL(USE_BUFFEREVENTS, test "$enable_bufferevents" = "yes")
464 if test "$enable_bufferevents" = "yes"; then
465 AC_DEFINE(USE_BUFFEREVENTS, 1, [Defined if we're going to use Libevent's buffered IO API])
466 if test "$enable_static_libevent" = "yes"; then
467 TOR_LIBEVENT_LIBS="$TOR_LIBDIR_libevent/libevent_openssl.a $TOR_LIBEVENT_LIBS"
469 TOR_LIBEVENT_LIBS="-levent_openssl $TOR_LIBEVENT_LIBS"
472 AC_SUBST(TOR_LIBEVENT_LIBS)
474 dnl ------------------------------------------------------
475 dnl Where do you live, libm?
477 dnl On some platforms (Haiku/BeOS) the math library is
478 dnl part of libroot. In which case don't link against lm
481 AC_SEARCH_LIBS(pow, [m], , AC_MSG_ERROR([Could not find pow in libm or libc.]))
482 if test "$ac_cv_search_pow" != "none required"; then
483 TOR_LIB_MATH="$ac_cv_search_pow"
486 AC_SUBST(TOR_LIB_MATH)
488 dnl ------------------------------------------------------
489 dnl Where do you live, openssl? And how do we call you?
491 tor_openssl_pkg_redhat="openssl"
492 tor_openssl_pkg_debian="libssl"
493 tor_openssl_devpkg_redhat="openssl-devel"
494 tor_openssl_devpkg_debian="libssl-dev"
496 ALT_openssl_WITHVAL=""
498 [ --with-ssl-dir=PATH Obsolete alias for --with-openssl-dir ],
500 if test "x$withval" != xno && test "x$withval" != "x" ; then
501 ALT_openssl_WITHVAL="$withval"
505 TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto $TOR_LIB_GDI],
506 [#include <openssl/rand.h>],
507 [void RAND_add(const void *buf, int num, double entropy);],
508 [RAND_add((void*)0,0,0); exit(0);], [],
509 [/usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/athena /opt/openssl])
511 dnl XXXX check for OPENSSL_VERSION_NUMBER == SSLeay()
513 if test "$enable_static_openssl" = "yes"; then
514 if test "$tor_cv_library_openssl_dir" = "(system)"; then
515 AC_MSG_ERROR("You must specify an explicit --with-openssl-dir=x option when using --enable-static-openssl")
517 TOR_OPENSSL_LIBS="$TOR_LIBDIR_openssl/libssl.a $TOR_LIBDIR_openssl/libcrypto.a"
520 TOR_OPENSSL_LIBS="-lssl -lcrypto"
522 AC_SUBST(TOR_OPENSSL_LIBS)
524 dnl ------------------------------------------------------
525 dnl Where do you live, zlib? And how do we call you?
527 tor_zlib_pkg_redhat="zlib"
528 tor_zlib_pkg_debian="zlib1g"
529 tor_zlib_devpkg_redhat="zlib-devel"
530 tor_zlib_devpkg_debian="zlib1g-dev"
532 TOR_SEARCH_LIBRARY(zlib, $tryzlibdir, [-lz],
534 [const char * zlibVersion(void);],
535 [zlibVersion(); exit(0);], [--with-zlib-dir],
538 if test "$enable_static_zlib" = "yes"; then
539 if test "$tor_cv_library_zlib_dir" = "(system)"; then
540 AC_MSG_ERROR("You must specify an explicit --with-zlib-dir=x option when
541 using --enable-static-zlib")
543 TOR_ZLIB_LIBS="$TOR_LIBDIR_zlib/libz.a"
548 AC_SUBST(TOR_ZLIB_LIBS)
550 dnl ---------------------------------------------------------------------
551 dnl Now that we know about our major libraries, we can check for compiler
552 dnl and linker hardening options. We need to do this with the libraries known,
553 dnl since sometimes the linker will like an option but not be willing to
554 dnl use it with a build of a library.
556 all_ldflags_for_check="$TOR_LDFLAGS_zlib $TOR_LDFLAGS_openssl $TOR_LDFLAGS_libevent"
557 all_libs_for_check="$TOR_ZLIB_LIBS $TOR_LIB_MATH $TOR_LIBEVENT_LIBS $TOR_OPENSSL_LIBS $TOR_LIB_WS32 $TOR_LIB_GDI"
559 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
560 #if !defined(__clang__)
562 #endif])], have_clang=yes, have_clang=no)
564 if test x$enable_gcc_hardening != xno; then
565 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
566 if test x$have_clang = xyes; then
567 TOR_CHECK_CFLAGS(-Qunused-arguments)
569 TOR_CHECK_CFLAGS(-fstack-protector-all)
570 TOR_CHECK_CFLAGS(-Wstack-protector)
571 TOR_CHECK_CFLAGS(-fwrapv)
572 TOR_CHECK_CFLAGS(--param ssp-buffer-size=1)
573 if test "$bwin32" = "false"; then
574 TOR_CHECK_CFLAGS(-fPIE)
575 TOR_CHECK_LDFLAGS(-pie, "$all_ldflags_for_check", "$all_libs_for_check")
579 if test x$enable_linker_hardening != xno; then
580 TOR_CHECK_LDFLAGS(-z relro -z now, "$all_ldflags_for_check", "$all_libs_for_check")
583 dnl ------------------------------------------------------
584 dnl Where do you live, libnatpmp? And how do we call you?
585 dnl There are no packages for Debian or Redhat as of this patch
587 if test "$natpmp" = "true"; then
588 AC_DEFINE(NAT_PMP, 1, [Define to 1 if we are building with nat-pmp.])
589 TOR_SEARCH_LIBRARY(libnatpmp, $trylibnatpmpdir, [-lnatpmp $TOR_LIB_WS32 $TOR_LIB_IPHLPAPI],
590 [#include <natpmp.h>],
594 #include <natpmp.h>],
597 natpmpresp_t response;
598 r = initnatpmp(&natpmp, 0, 0);],
599 [printf("initnatpmp() returned %d (%s)\n", r, r?"FAILED":"SUCCESS");
601 [--with-libnatpmp-dir],
606 dnl ------------------------------------------------------
607 dnl Where do you live, libminiupnpc? And how do we call you?
608 dnl There are no packages for Debian or Redhat as of this patch
610 if test "$upnp" = "true"; then
611 AC_DEFINE(MINIUPNPC, 1, [Define to 1 if we are building with UPnP.])
613 dnl Before we call TOR_SEARCH_LIBRARY we'll do a quick compile test
614 dnl to see if we have miniupnpc-1.5 or -1.6
615 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <miniupnpc/miniupnpc.h>],
616 [upnpDiscover(1, 0, 0, 0);exit(0);])],[miniupnpc15="true"],[miniupnpc15="false"])
618 if test "$miniupnpc15" = "true" ; then
619 AC_DEFINE([MINIUPNPC15],[1],[libminiupnpc version 1.5 found])
620 TOR_SEARCH_LIBRARY(libminiupnpc, $trylibminiupnpcdir, [-lminiupnpc $TOR_LIB_WS32 $TOR_LIB_IPHLPAPI],
621 [#include <miniupnpc/miniwget.h>
622 #include <miniupnpc/miniupnpc.h>
623 #include <miniupnpc/upnpcommands.h>],
624 [void upnpDiscover(int delay, const char * multicastif,
625 const char * minissdpdsock, int sameport);],
626 [upnpDiscover(1, 0, 0, 0); exit(0);],
627 [--with-libminiupnpc-dir],
630 TOR_SEARCH_LIBRARY(libminiupnpc, $trylibminiupnpcdir, [-lminiupnpc $TOR_LIB_WS32 $TOR_LIB_IPHLPAPI],
631 [#include <miniupnpc/miniwget.h>
632 #include <miniupnpc/miniupnpc.h>
633 #include <miniupnpc/upnpcommands.h>],
634 [void upnpDiscover(int delay, const char * multicastif,
635 const char * minissdpdsock, int sameport, int ipv6, int * error);],
636 [upnpDiscover(1, 0, 0, 0, 0, 0); exit(0);],
637 [--with-libminiupnpc-dir],
642 dnl Make sure to enable support for large off_t if available.
657 , , AC_MSG_WARN(Some headers were not found, compilation may fail. If compilation succeeds, please send your orconfig.h to the developers so we can fix this warning.))
659 dnl These headers are not essential
696 AC_CHECK_HEADERS(sys/param.h)
698 AC_CHECK_HEADERS(net/if.h, net_if_found=1, net_if_found=0,
699 [#ifdef HAVE_SYS_TYPES_H
700 #include <sys/types.h>
702 #ifdef HAVE_SYS_SOCKET_H
703 #include <sys/socket.h>
705 AC_CHECK_HEADERS(net/pfvar.h, net_pfvar_found=1, net_pfvar_found=0,
706 [#ifdef HAVE_SYS_TYPES_H
707 #include <sys/types.h>
709 #ifdef HAVE_SYS_SOCKET_H
710 #include <sys/socket.h>
715 AC_CHECK_HEADERS(linux/netfilter_ipv4.h,
716 linux_netfilter_ipv4=1, linux_netfilter_ipv4=0,
717 [#ifdef HAVE_SYS_TYPES_H
718 #include <sys/types.h>
720 #ifdef HAVE_SYS_SOCKET_H
721 #include <sys/socket.h>
726 #ifdef HAVE_LINUX_TYPES_H
727 #include <linux/types.h>
729 #ifdef HAVE_NETINET_IN6_H
730 #include <netinet/in6.h>
732 #ifdef HAVE_NETINET_IN_H
733 #include <netinet/in.h>
736 if test x$transparent = xtrue ; then
738 if test x$net_if_found = x1 && test x$net_pfvar_found = x1 ; then
741 if test x$linux_netfilter_ipv4 = x1 ; then
744 if test x$transparent_ok = x1 ; then
745 AC_DEFINE(USE_TRANSPARENT, 1, "Define to enable transparent proxy support")
747 *-*-openbsd* | *-*-bitrig*)
748 AC_DEFINE(OPENBSD, 1, "Define to handle pf on OpenBSD properly") ;;
751 AC_MSG_NOTICE([Transparent proxy support enabled, but missing headers.])
755 AC_CHECK_MEMBERS([struct timeval.tv_sec], , ,
756 [#ifdef HAVE_SYS_TYPES_H
757 #include <sys/types.h>
759 #ifdef HAVE_SYS_TIME_H
760 #include <sys/time.h>
763 dnl In case we aren't given a working stdint.h, we'll need to grow our own.
766 AC_CHECK_SIZEOF(int8_t)
767 AC_CHECK_SIZEOF(int16_t)
768 AC_CHECK_SIZEOF(int32_t)
769 AC_CHECK_SIZEOF(int64_t)
770 AC_CHECK_SIZEOF(uint8_t)
771 AC_CHECK_SIZEOF(uint16_t)
772 AC_CHECK_SIZEOF(uint32_t)
773 AC_CHECK_SIZEOF(uint64_t)
774 AC_CHECK_SIZEOF(intptr_t)
775 AC_CHECK_SIZEOF(uintptr_t)
777 dnl AC_CHECK_TYPES([int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t, intptr_t, uintptr_t])
779 AC_CHECK_SIZEOF(char)
780 AC_CHECK_SIZEOF(short)
782 AC_CHECK_SIZEOF(long)
783 AC_CHECK_SIZEOF(long long)
784 AC_CHECK_SIZEOF(__int64)
785 AC_CHECK_SIZEOF(void *)
786 AC_CHECK_SIZEOF(time_t)
787 AC_CHECK_SIZEOF(size_t)
788 AC_CHECK_SIZEOF(pid_t)
790 AC_CHECK_TYPES([uint, u_char, ssize_t])
792 dnl used to include sockaddr_storage, but everybody has that.
793 AC_CHECK_TYPES([struct in6_addr, struct sockaddr_in6, sa_family_t], , ,
794 [#ifdef HAVE_SYS_TYPES_H
795 #include <sys/types.h>
797 #ifdef HAVE_NETINET_IN_H
798 #include <netinet/in.h>
800 #ifdef HAVE_NETINET_IN6_H
801 #include <netinet/in6.h>
803 #ifdef HAVE_SYS_SOCKET_H
804 #include <sys/socket.h>
807 #define _WIN32_WINNT 0x0501
808 #define WIN32_LEAN_AND_MEAN
809 #if defined(_MSC_VER) && (_MSC_VER < 1300)
812 #include <winsock2.h>
813 #include <ws2tcpip.h>
817 AC_CHECK_MEMBERS([struct in6_addr.s6_addr32, struct in6_addr.s6_addr16, struct sockaddr_in.sin_len, struct sockaddr_in6.sin6_len], , ,
818 [#ifdef HAVE_SYS_TYPES_H
819 #include <sys/types.h>
821 #ifdef HAVE_NETINET_IN_H
822 #include <netinet/in.h>
824 #ifdef HAVE_NETINET_IN6_H
825 #include <netinet/in6.h>
827 #ifdef HAVE_SYS_SOCKET_H
828 #include <sys/socket.h>
831 #define _WIN32_WINNT 0x0501
832 #define WIN32_LEAN_AND_MEAN
833 #if defined(_MSC_VER) && (_MSC_VER < 1300)
836 #include <winsock2.h>
837 #include <ws2tcpip.h>
842 AC_CHECK_TYPES([rlim_t], , ,
843 [#ifdef HAVE_SYS_TYPES_H
844 #include <sys/types.h>
846 #ifdef HAVE_SYS_TIME_H
847 #include <sys/time.h>
849 #ifdef HAVE_SYS_RESOURCE_H
850 #include <sys/resource.h>
854 AC_CACHE_CHECK([whether time_t is signed], tor_cv_time_t_signed, [
855 AC_RUN_IFELSE([AC_LANG_SOURCE([
856 #ifdef HAVE_SYS_TYPES_H
857 #include <sys/types.h>
859 #ifdef HAVE_SYS_TIME_H
860 #include <sys/time.h>
865 int main(int c, char**v) { if (((time_t)-1)<0) return 1; else return 0; }])],
866 tor_cv_time_t_signed=no, tor_cv_time_t_signed=yes, tor_cv_time_t_signed=cross)
869 if test "$tor_cv_time_t_signed" = cross; then
870 AC_MSG_NOTICE([Cross compiling: assuming that time_t is signed.])
873 if test "$tor_cv_time_t_signed" != no; then
874 AC_DEFINE([TIME_T_IS_SIGNED], 1,
875 [Define to 1 iff time_t is signed])
878 AC_CACHE_CHECK([whether size_t is signed], tor_cv_size_t_signed, [
879 AC_RUN_IFELSE([AC_LANG_SOURCE([
880 #ifdef HAVE_SYS_TYPES_H
881 #include <sys/types.h>
883 int main(int c, char**v) { if (((size_t)-1)<0) return 1; else return 0; }])],
884 tor_cv_size_t_signed=no, tor_cv_size_t_signed=yes, tor_cv_size_t_signed=cross)
887 if test "$tor_cv_size_t_signed" = cross; then
888 AC_MSG_NOTICE([Cross compiling: assuming that size_t is not signed.])
891 if test "$tor_cv_size_t_signed" = yes; then
892 AC_MSG_ERROR([You have a signed size_t; that's grossly nonconformant.])
895 AC_CHECK_SIZEOF(socklen_t, , [AC_INCLUDES_DEFAULT()
896 #ifdef HAVE_SYS_SOCKET_H
897 #include <sys/socket.h>
901 # We want to make sure that we _don't_ have a cell_t defined, like IRIX does.
903 AC_CHECK_SIZEOF(cell_t)
905 # Now make sure that NULL can be represented as zero bytes.
906 AC_CACHE_CHECK([whether memset(0) sets pointers to NULL], tor_cv_null_is_zero,
907 [AC_RUN_IFELSE([AC_LANG_SOURCE(
908 [[#include <stdlib.h>
914 int main () { char *p1,*p2; p1=NULL; memset(&p2,0,sizeof(p2));
915 return memcmp(&p1,&p2,sizeof(char*))?1:0; }]])],
916 [tor_cv_null_is_zero=yes],
917 [tor_cv_null_is_zero=no],
918 [tor_cv_null_is_zero=cross])])
920 if test "$tor_cv_null_is_zero" = cross ; then
921 # Cross-compiling; let's hope that the target isn't raving mad.
922 AC_MSG_NOTICE([Cross-compiling: we'll assume that NULL is represented as a sequence of 0-valued bytes.])
925 if test "$tor_cv_null_is_zero" != no; then
926 AC_DEFINE([NULL_REP_IS_ZERO_BYTES], 1,
927 [Define to 1 iff memset(0) sets pointers to NULL])
930 # And what happens when we malloc zero?
931 AC_CACHE_CHECK([whether we can malloc(0) safely.], tor_cv_malloc_zero_works,
932 [AC_RUN_IFELSE([AC_LANG_SOURCE(
933 [[#include <stdlib.h>
939 int main () { return malloc(0)?0:1; }]])],
940 [tor_cv_malloc_zero_works=yes],
941 [tor_cv_malloc_zero_works=no],
942 [tor_cv_malloc_zero_works=cross])])
944 if test "$tor_cv_malloc_zero_works" = cross; then
945 # Cross-compiling; let's hope that the target isn't raving mad.
946 AC_MSG_NOTICE([Cross-compiling: we'll assume that we need to check malloc() arguments for 0.])
949 if test "$tor_cv_malloc_zero_works" = yes; then
950 AC_DEFINE([MALLOC_ZERO_WORKS], 1,
951 [Define to 1 iff malloc(0) returns a pointer])
954 # whether we seem to be in a 2s-complement world.
955 AC_CACHE_CHECK([whether we are using 2s-complement arithmetic], tor_cv_twos_complement,
956 [AC_RUN_IFELSE([AC_LANG_SOURCE(
957 [[int main () { int problem = ((-99) != (~99)+1);
958 return problem ? 1 : 0; }]])],
959 [tor_cv_twos_complement=yes],
960 [tor_cv_twos_complement=no],
961 [tor_cv_twos_complement=cross])])
963 if test "$tor_cv_twos_complement" = cross ; then
964 # Cross-compiling; let's hope that the target isn't raving mad.
965 AC_MSG_NOTICE([Cross-compiling: we'll assume that negative integers are represented with two's complement.])
968 if test "$tor_cv_twos_complement" != no ; then
969 AC_DEFINE([USING_TWOS_COMPLEMENT], 1,
970 [Define to 1 iff we represent negative integers with two's complement])
973 # What does shifting a negative value do?
974 AC_CACHE_CHECK([whether right-shift on negative values does sign-extension], tor_cv_sign_extend,
975 [AC_RUN_IFELSE([AC_LANG_SOURCE(
976 [[int main () { int okay = (-60 >> 8) == -1; return okay ? 0 : 1; }]])],
977 [tor_cv_sign_extend=yes],
978 [tor_cv_sign_extend=no],
979 [tor_cv_sign_extend=cross])])
981 if test "$tor_cv_sign_extend" = cross ; then
982 # Cross-compiling; let's hope that the target isn't raving mad.
983 AC_MSG_NOTICE([Cross-compiling: we'll assume that right-shifting negative integers causes sign-extension])
986 if test "$tor_cv_sign_extend" != no ; then
987 AC_DEFINE([RSHIFT_DOES_SIGN_EXTEND], 1,
988 [Define to 1 iff right-shifting a negative value performs sign-extension])
991 # Whether we should use the dmalloc memory allocation debugging library.
992 AC_MSG_CHECKING(whether to use dmalloc (debug memory allocation library))
994 [ --with-dmalloc Use debug memory allocation library. ],
995 [if [[ "$withval" = "yes" ]]; then
1001 fi], [ dmalloc=0; AC_MSG_RESULT(no) ]
1004 if [[ $dmalloc -eq 1 ]]; then
1005 AC_CHECK_HEADERS(dmalloc.h, , AC_MSG_ERROR(dmalloc header file not found. Do you have the development files for dmalloc installed?))
1006 AC_SEARCH_LIBS(dmalloc_malloc, [dmallocth dmalloc], , AC_MSG_ERROR(Libdmalloc library not found. If you enable it you better have it installed.))
1007 AC_DEFINE(USE_DMALLOC, 1, [Debug memory allocation library])
1008 AC_DEFINE(DMALLOC_FUNC_CHECK, 1, [Enable dmalloc's malloc function check])
1009 AC_CHECK_FUNCS(dmalloc_strdup dmalloc_strndup)
1012 AC_ARG_WITH(tcmalloc,
1013 [ --with-tcmalloc Use tcmalloc memory allocation library. ],
1014 [ tcmalloc=yes ], [ tcmalloc=no ])
1016 if test x$tcmalloc = xyes ; then
1017 LDFLAGS="-ltcmalloc $LDFLAGS"
1020 using_custom_malloc=no
1021 if test x$enable_openbsd_malloc = xyes ; then
1022 using_custom_malloc=yes
1024 if test x$tcmalloc = xyes ; then
1025 using_custom_malloc=yes
1027 if test $using_custom_malloc = no ; then
1028 AC_CHECK_FUNCS(mallinfo)
1031 # By default, we're going to assume we don't have mlockall()
1032 # bionic and other platforms have various broken mlockall subsystems.
1033 # Some systems don't have a working mlockall, some aren't linkable,
1034 # and some have it but don't declare it.
1035 AC_CHECK_FUNCS(mlockall)
1036 AC_CHECK_DECLS([mlockall], , , [
1037 #ifdef HAVE_SYS_MMAN_H
1038 #include <sys/mman.h>
1041 # Allow user to specify an alternate syslog facility
1042 AC_ARG_WITH(syslog-facility,
1043 [ --with-syslog-facility=LOG syslog facility to use (default=LOG_DAEMON)],
1044 syslog_facility="$withval", syslog_facility="LOG_DAEMON")
1045 AC_DEFINE_UNQUOTED(LOGFACILITY,$syslog_facility,[name of the syslog facility])
1046 AC_SUBST(LOGFACILITY)
1048 # Check if we have getresuid and getresgid
1049 AC_CHECK_FUNCS(getresuid getresgid)
1051 # Check for gethostbyname_r in all its glorious incompatible versions.
1052 # (This logic is based on that in Python's configure.in)
1053 AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
1054 [Define this if you have any gethostbyname_r()])
1056 AC_CHECK_FUNC(gethostbyname_r, [
1057 AC_MSG_CHECKING([how many arguments gethostbyname_r() wants])
1059 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
1060 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1064 struct hostent *h1, *h2;
1066 (void)gethostbyname_r(cp1,h1,cp2,i1,&h2,&i2);
1068 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1069 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
1070 [Define this if gethostbyname_r takes 6 arguments])
1079 (void)gethostbyname_r(cp1,h1,cp2,i1,&i2);
1081 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1082 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
1083 [Define this if gethostbyname_r takes 5 arguments])
1091 struct hostent_data hd;
1092 (void) gethostbyname_r(cp1,h1,&hd);
1094 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1095 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
1096 [Define this if gethostbyname_r takes 3 arguments])
1106 AC_CACHE_CHECK([whether the C compiler supports __func__],
1107 tor_cv_have_func_macro,
1108 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1110 int main(int c, char **v) { puts(__func__); }])],
1111 tor_cv_have_func_macro=yes,
1112 tor_cv_have_func_macro=no))
1114 AC_CACHE_CHECK([whether the C compiler supports __FUNC__],
1115 tor_cv_have_FUNC_macro,
1116 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1118 int main(int c, char **v) { puts(__FUNC__); }])],
1119 tor_cv_have_FUNC_macro=yes,
1120 tor_cv_have_FUNC_macro=no))
1122 AC_CACHE_CHECK([whether the C compiler supports __FUNCTION__],
1123 tor_cv_have_FUNCTION_macro,
1124 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1126 int main(int c, char **v) { puts(__FUNCTION__); }])],
1127 tor_cv_have_FUNCTION_macro=yes,
1128 tor_cv_have_FUNCTION_macro=no))
1130 AC_CACHE_CHECK([whether we have extern char **environ already declared],
1131 tor_cv_have_environ_declared,
1132 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1133 /* We define _GNU_SOURCE here because it is also defined in compat.c.
1134 * Without it environ doesn't get declared. */
1136 #ifdef HAVE_UNISTD_H
1140 int main(int c, char **v) { char **t = environ; }])],
1141 tor_cv_have_environ_declared=yes,
1142 tor_cv_have_environ_declared=no))
1144 if test "$tor_cv_have_func_macro" = 'yes'; then
1145 AC_DEFINE(HAVE_MACRO__func__, 1, [Defined if the compiler supports __func__])
1148 if test "$tor_cv_have_FUNC_macro" = 'yes'; then
1149 AC_DEFINE(HAVE_MACRO__FUNC__, 1, [Defined if the compiler supports __FUNC__])
1152 if test "$tor_cv_have_FUNCTION_macro" = 'yes'; then
1153 AC_DEFINE(HAVE_MACRO__FUNCTION__, 1,
1154 [Defined if the compiler supports __FUNCTION__])
1157 if test "$tor_cv_have_environ_declared" = 'yes'; then
1158 AC_DEFINE(HAVE_EXTERN_ENVIRON_DECLARED, 1,
1159 [Defined if we have extern char **environ already declared])
1162 # $prefix stores the value of the --prefix command line option, or
1163 # NONE if the option wasn't set. In the case that it wasn't set, make
1164 # it be the default, so that we can use it to expand directories now.
1165 if test "x$prefix" = "xNONE"; then
1166 prefix=$ac_default_prefix
1169 # and similarly for $exec_prefix
1170 if test "x$exec_prefix" = "xNONE"; then
1174 if test "x$BUILDDIR" = "x"; then
1178 AH_TEMPLATE([BUILDDIR],[tor's build directory])
1179 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
1181 if test "x$CONFDIR" = "x"; then
1182 CONFDIR=`eval echo $sysconfdir/tor`
1185 AH_TEMPLATE([CONFDIR],[tor's configuration directory])
1186 AC_DEFINE_UNQUOTED(CONFDIR,"$CONFDIR")
1188 BINDIR=`eval echo $bindir`
1190 LOCALSTATEDIR=`eval echo $localstatedir`
1191 AC_SUBST(LOCALSTATEDIR)
1193 if test "$bwin32" = true; then
1194 # Test if the linker supports the --nxcompat and --dynamicbase options
1196 save_LDFLAGS="$LDFLAGS"
1197 LDFLAGS="-Wl,--nxcompat -Wl,--dynamicbase"
1198 AC_MSG_CHECKING([whether the linker supports DllCharacteristics])
1199 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1200 [AC_MSG_RESULT([yes])]
1201 [save_LDFLAGS="$save_LDFLAGS $LDFLAGS"],
1202 [AC_MSG_RESULT([no])]
1204 LDFLAGS="$save_LDFLAGS"
1207 # Set CFLAGS _after_ all the above checks, since our warnings are stricter
1208 # than autoconf's macros like.
1209 if test "$GCC" = yes; then
1210 # Disable GCC's strict aliasing checks. They are an hours-to-debug
1211 # accident waiting to happen.
1212 CFLAGS="$CFLAGS -Wall -fno-strict-aliasing"
1214 # Autoconf sets -g -O2 by default. Override optimization level
1215 # for non-gcc compilers
1217 enable_gcc_warnings=no
1218 enable_gcc_warnings_advisory=no
1221 # OS X Lion started deprecating the system openssl. Let's just disable
1222 # all deprecation warnings on OS X. Also, to potentially make the binary
1223 # a little smaller, let's enable dead_strip.
1227 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
1228 LDFLAGS="$LDFLAGS -dead_strip" ;;
1231 # Add some more warnings which we use in development but not in the
1232 # released versions. (Some relevant gcc versions can't handle these.)
1233 if test x$enable_gcc_warnings = xyes || test x$enable_gcc_warnings_advisory = xyes; then
1235 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
1236 #if !defined(__GNUC__) || (__GNUC__ < 4)
1238 #endif])], have_gcc4=yes, have_gcc4=no)
1240 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
1241 #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
1243 #endif])], have_gcc42=yes, have_gcc42=no)
1245 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
1246 #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
1248 #endif])], have_gcc43=yes, have_gcc43=no)
1250 save_CFLAGS="$CFLAGS"
1251 CFLAGS="$CFLAGS -Wshorten-64-to-32"
1252 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], have_shorten64_flag=yes,
1253 have_shorten64_flag=no)
1254 CFLAGS="$save_CFLAGS"
1257 *-*-openbsd* | *-*-bitrig*)
1258 # Some OpenBSD versions (like 4.8) have -Wsystem-headers by default.
1259 # That's fine, except that the headers don't pass -Wredundant-decls.
1260 # Therefore, let's disable -Wsystem-headers when we're building
1261 # with maximal warnings on OpenBSD.
1262 CFLAGS="$CFLAGS -Wno-system-headers" ;;
1265 CFLAGS="$CFLAGS -W -Wfloat-equal -Wundef -Wpointer-arith"
1266 CFLAGS="$CFLAGS -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings"
1267 CFLAGS="$CFLAGS -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat=2"
1268 CFLAGS="$CFLAGS -Wwrite-strings -Wmissing-declarations -Wredundant-decls"
1269 CFLAGS="$CFLAGS -Wnested-externs -Wbad-function-cast -Wswitch-enum"
1271 if test x$enable_gcc_warnings = xyes; then
1272 CFLAGS="$CFLAGS -Werror"
1275 # Disabled, so we can use mallinfo(): -Waggregate-return
1277 if test x$have_gcc4 = xyes ; then
1278 # These warnings break gcc 3.3.5 and work on gcc 4.0.2
1279 CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement -Wold-style-definition"
1282 if test x$have_gcc42 = xyes ; then
1283 # These warnings break gcc 4.0.2 and work on gcc 4.2
1284 # XXXX020 See if any of these work with earlier versions.
1285 CFLAGS="$CFLAGS -Waddress -Wmissing-noreturn -Wstrict-overflow=1"
1287 # We used to use -Wstrict-overflow=5, but that breaks us heavily under 4.3.
1290 if test x$have_gcc42 = xyes && test x$have_clang = xno; then
1291 # These warnings break gcc 4.0.2 and clang, but work on gcc 4.2
1292 CFLAGS="$CFLAGS -Wnormalized=id -Woverride-init"
1295 if test x$have_gcc43 = xyes ; then
1296 # These warnings break gcc 4.2 and work on gcc 4.3
1297 # XXXX020 See if any of these work with earlier versions.
1298 CFLAGS="$CFLAGS -Wextra -Warray-bounds"
1301 if test x$have_shorten64_flag = xyes ; then
1302 CFLAGS="$CFLAGS -Wshorten-64-to-32"
1305 ##This will break the world on some 64-bit architectures
1306 # CFLAGS="$CFLAGS -Winline"
1311 CPPFLAGS="$CPPFLAGS $TOR_CPPFLAGS_libevent $TOR_CPPFLAGS_openssl $TOR_CPPFLAGS_zlib"
1317 contrib/tor.logrotate
1321 src/config/torrc.sample
1326 if test -x /usr/bin/perl && test -x ./contrib/updateVersions.pl ; then
1327 ./contrib/updateVersions.pl