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
7 AM_INIT_AUTOMAKE(tor, 0.2.3.20-rc)
8 AM_CONFIG_HEADER(orconfig.h)
12 if test -f /etc/redhat-release ; then
13 if test -f /usr/kerberos/include ; then
14 CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
18 # Not a no-op; we want to make sure that CPPFLAGS is set before we use
19 # the += operator on it in src/or/Makefile.am
20 CPPFLAGS="$CPPFLAGS -I\${top_srcdir}/src/common"
22 #XXXX020 We should make these enabled or not, before 0.2.0.x-final
23 AC_ARG_ENABLE(buf-freelists,
24 AS_HELP_STRING(--disable-buf-freelists, disable freelists for buffer RAM))
25 AC_ARG_ENABLE(openbsd-malloc,
26 AS_HELP_STRING(--enable-openbsd-malloc, Use malloc code from openbsd. Linux only))
27 AC_ARG_ENABLE(instrument-downloads,
28 AS_HELP_STRING(--enable-instrument-downloads, Instrument downloads of directory resources etc.))
29 AC_ARG_ENABLE(static-openssl,
30 AS_HELP_STRING(--enable-static-openssl, Link against a static openssl library. Requires --with-openssl-dir))
31 AC_ARG_ENABLE(static-libevent,
32 AS_HELP_STRING(--enable-static-libevent, Link against a static libevent library. Requires --with-libevent-dir))
33 AC_ARG_ENABLE(static-zlib,
34 AS_HELP_STRING(--enable-static-zlib, Link against a static zlib library. Requires --with-zlib-dir))
35 AC_ARG_ENABLE(static-tor,
36 AS_HELP_STRING(--enable-static-tor, Create an entirely static Tor binary. Requires --with-openssl-dir and --with-libevent-dir and --with-zlib-dir))
38 if test "$enable_static_tor" = "yes"; then
39 enable_static_libevent="yes";
40 enable_static_openssl="yes";
41 enable_static_zlib="yes";
42 CFLAGS="$CFLAGS -static"
45 if test x$enable_buf_freelists != xno; then
46 AC_DEFINE(ENABLE_BUF_FREELISTS, 1,
47 [Defined if we try to use freelists for buffer RAM chunks])
49 AM_CONDITIONAL(USE_OPENBSD_MALLOC, test x$enable_openbsd_malloc = xyes)
50 if test x$enable_instrument_downloads = xyes; then
51 AC_DEFINE(INSTRUMENT_DOWNLOADS, 1,
52 [Defined if we want to keep track of how much of each kind of resource we download.])
55 AC_ARG_ENABLE(transparent,
56 AS_HELP_STRING(--disable-transparent, disable transparent proxy support),
57 [case "${enableval}" in
58 yes) transparent=true ;;
59 no) transparent=false ;;
60 *) AC_MSG_ERROR(bad value for --enable-transparent) ;;
61 esac], [transparent=true])
63 AC_ARG_ENABLE(asciidoc,
64 AS_HELP_STRING(--disable-asciidoc, don't use asciidoc (disables building of manpages)),
65 [case "${enableval}" in
68 *) AC_MSG_ERROR(bad value for --disable-asciidoc) ;;
69 esac], [asciidoc=true])
71 # By default, we're not ready to ship a NAT-PMP aware Tor
72 AC_ARG_ENABLE(nat-pmp,
73 AS_HELP_STRING(--enable-nat-pmp, enable NAT-PMP support),
74 [case "${enableval}" in
77 * ) AC_MSG_ERROR(bad value for --enable-nat-pmp) ;;
78 esac], [natpmp=false])
80 # By default, we're not ready to ship a UPnP aware Tor
82 AS_HELP_STRING(--enable-upnp, enable UPnP support),
83 [case "${enableval}" in
86 * ) AC_MSG_ERROR(bad value for --enable-upnp) ;;
90 AC_ARG_ENABLE(threads,
91 AS_HELP_STRING(--disable-threads, disable multi-threading support))
93 if test x$enable_threads = x; then
96 # Don't try multithreading on solaris -- cpuworkers seem to lock.
97 AC_MSG_NOTICE([You are running Solaris; Sometimes threading makes
98 cpu workers lock up here, so I will disable threads.])
101 enable_threads="yes";;
105 if test "$enable_threads" = "yes"; then
106 AC_DEFINE(ENABLE_THREADS, 1, [Defined if we will try to use multithreading])
111 AC_DEFINE(_REENTRANT, 1, [Define on some platforms to activate x_r() functions in time.h])
115 AC_ARG_ENABLE(gcc-warnings,
116 AS_HELP_STRING(--enable-gcc-warnings, enable verbose warnings))
117 AC_ARG_ENABLE(gcc-warnings-advisory,
118 AS_HELP_STRING(--enable-gcc-warnings-advisory, [enable verbose warnings, excluding -Werror]))
120 dnl Adam shostack suggests the following for Windows:
121 dnl -D_FORTIFY_SOURCE=2 -fstack-protector-all
122 dnl Others suggest '/gs /safeseh /nxcompat /dynamicbase' for non-gcc on Windows
123 dnl This requires that we use gcc and that we add -O2 to the CFLAGS.
124 AC_ARG_ENABLE(gcc-hardening,
125 AS_HELP_STRING(--disable-gcc-hardening, disable compiler security checks))
127 dnl Linker hardening options
128 dnl Currently these options are ELF specific - you can't use this with MacOSX
129 AC_ARG_ENABLE(linker-hardening,
130 AS_HELP_STRING(--disable-linker-hardening, disable linker security fixups))
132 AC_ARG_ENABLE(local-appdata,
133 AS_HELP_STRING(--enable-local-appdata, default to host local application data paths on Windows))
134 if test "$enable_local_appdata" = "yes"; then
135 AC_DEFINE(ENABLE_LOCAL_APPDATA, 1,
136 [Defined if we default to host local appdata paths on Windows])
140 AC_ARG_ENABLE(tor2web-mode,
141 AS_HELP_STRING(--enable-tor2web-mode, support tor2web non-anonymous mode),
142 [if test x$enableval = xyes; then
143 CFLAGS="$CFLAGS -D ENABLE_TOR2WEB_MODE=1"
146 AC_ARG_ENABLE(bufferevents,
147 AS_HELP_STRING(--enable-bufferevents, use Libevent's buffered IO.))
149 dnl check for the correct "ar" when cross-compiling
150 AN_MAKEVAR([AR], [AC_PROG_AR])
151 AN_PROGRAM([ar], [AC_PROG_AR])
152 AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL([AR], [ar], [ar])])
160 dnl autoconf 2.59 appears not to support AC_PROG_SED
161 AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
163 dnl check for asciidoc and a2x
164 AC_PATH_PROG([ASCIIDOC], [asciidoc], none)
165 AC_PATH_PROG([A2X], [a2x], none)
167 AM_CONDITIONAL(USE_ASCIIDOC, test x$asciidoc = xtrue)
169 AM_CONDITIONAL(USE_FW_HELPER, test x$natpmp = xtrue || test x$upnp = xtrue)
170 AM_CONDITIONAL(NAT_PMP, test x$natpmp = xtrue)
171 AM_CONDITIONAL(MINIUPNPC, test x$upnp = xtrue)
174 ifdef([AC_C_FLEXIBLE_ARRAY_MEMBER], [
175 AC_C_FLEXIBLE_ARRAY_MEMBER
177 dnl Maybe we've got an old autoconf...
178 AC_CACHE_CHECK([for flexible array members],
182 struct abc { int a; char b[]; };
184 struct abc *def = malloc(sizeof(struct abc)+sizeof(char));
187 [tor_cv_c_flexarray=yes],
188 [tor_cv_c_flexarray=no])])
189 if test $tor_cv_flexarray = yes ; then
190 AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], [], [Define to nothing if C supports flexible array members, and to 1 if it does not.])
192 AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], [1], [Define to nothing if C supports flexible array members, and to 1 if it does not.])
196 AC_PATH_PROG([SHA1SUM], [sha1sum], none)
197 AC_PATH_PROG([OPENSSL], [openssl], none)
200 AC_ARG_WITH(tor-user,
201 [ --with-tor-user=NAME Specify username for tor daemon ],
209 AC_ARG_WITH(tor-group,
210 [ --with-tor-group=NAME Specify group name for tor daemon ],
218 dnl If _WIN32 is defined and non-zero, we are building for win32
219 AC_MSG_CHECKING([for win32])
220 AC_RUN_IFELSE([AC_LANG_SOURCE([
221 int main(int c, char **v) {
232 bwin32=true; AC_MSG_RESULT([yes]),
233 bwin32=false; AC_MSG_RESULT([no]),
234 bwin32=cross; AC_MSG_RESULT([cross])
237 if test "$bwin32" = cross; then
238 AC_MSG_CHECKING([for win32 (cross)])
239 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
241 int main(int c, char **v) {return 0;}
244 int main(int c, char **v) {return x(y);}
247 bwin32=true; AC_MSG_RESULT([yes]),
248 bwin32=false; AC_MSG_RESULT([no]))
251 AM_CONDITIONAL(BUILD_NT_SERVICES, test x$bwin32 = xtrue)
253 dnl Enable C99 when compiling with MIPSpro
254 AC_MSG_CHECKING([for MIPSpro compiler])
255 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [
256 #if (defined(__sgi) && defined(_COMPILER_VERSION))
261 bmipspro=false; AC_MSG_RESULT(no),
262 bmipspro=true; AC_MSG_RESULT(yes))
264 if test "$bmipspro" = true; then
265 CFLAGS="$CFLAGS -c99"
270 AC_SEARCH_LIBS(socket, [socket network])
271 AC_SEARCH_LIBS(gethostbyname, [nsl])
272 AC_SEARCH_LIBS(dlopen, [dl])
273 AC_SEARCH_LIBS(inet_aton, [resolv])
275 AC_SEARCH_LIBS([clock_gettime], [rt])
276 if test "$LIBS" != "$saved_LIBS"; then
277 # Looks like we need -lrt for clock_gettime().
281 if test "$enable_threads" = "yes"; then
282 AC_SEARCH_LIBS(pthread_create, [pthread])
283 AC_SEARCH_LIBS(pthread_detach, [pthread])
286 dnl -------------------------------------------------------------------
287 dnl Check for functions before libevent, since libevent-1.2 apparently
288 dnl exports strlcpy without defining it in a header.
320 using_custom_malloc=no
321 if test x$enable_openbsd_malloc = xyes ; then
322 AC_DEFINE(HAVE_MALLOC_GOOD_SIZE, 1, [Defined if we have the malloc_good_size function])
323 using_custom_malloc=yes
325 if test x$tcmalloc = xyes ; then
326 using_custom_malloc=yes
328 if test $using_custom_malloc = no ; then
329 AC_CHECK_FUNCS(mallinfo malloc_good_size malloc_usable_size)
332 if test "$enable_threads" = "yes"; then
333 AC_CHECK_HEADERS(pthread.h)
334 AC_CHECK_FUNCS(pthread_create)
337 dnl ------------------------------------------------------
338 dnl Where do you live, libevent? And how do we call you?
340 if test "$bwin32" = true; then
341 TOR_LIB_WS32=-lws2_32
342 TOR_LIB_IPHLPAPI=-liphlpapi
343 # Some of the cargo-cults recommend -lwsock32 as well, but I don't
344 # think it's actually necessary.
350 AC_SUBST(TOR_LIB_WS32)
351 AC_SUBST(TOR_LIB_GDI)
352 AC_SUBST(TOR_LIB_IPHLPAPI)
354 dnl We need to do this before we try our disgusting hack below.
355 AC_CHECK_HEADERS([sys/types.h])
357 dnl This is a disgusting hack so we safely include older libevent headers.
358 AC_CHECK_TYPE(u_int64_t, unsigned long long)
359 AC_CHECK_TYPE(u_int32_t, unsigned long)
360 AC_CHECK_TYPE(u_int16_t, unsigned short)
361 AC_CHECK_TYPE(u_int8_t, unsigned char)
363 tor_libevent_pkg_redhat="libevent"
364 tor_libevent_pkg_debian="libevent-dev"
365 tor_libevent_devpkg_redhat="libevent-devel"
366 tor_libevent_devpkg_debian="libevent-dev"
368 dnl On Gnu/Linux or any place we require it, we'll add librt to the Libevent
369 dnl linking for static builds.
370 STATIC_LIBEVENT_FLAGS=""
371 if test "$enable_static_libevent" = "yes"; then
372 if test "$have_rt" = yes; then
373 STATIC_LIBEVENT_FLAGS=" -lrt "
377 TOR_SEARCH_LIBRARY(libevent, $trylibeventdir, [-levent $STATIC_LIBEVENT_FLAGS $TOR_LIB_WS32], [
379 #include <winsock2.h>
382 #include <sys/time.h>
383 #include <sys/types.h>
384 #include <event.h>], [
386 #include <winsock2.h>
388 void exit(int); void *event_init(void);],
391 {WSADATA d; WSAStartup(0x101,&d); }
393 event_init(); exit(0);
394 ], [--with-libevent-dir], [/opt/libevent])
396 dnl Now check for particular libevent functions.
398 save_LDFLAGS="$LDFLAGS"
399 save_CPPFLAGS="$CPPFLAGS"
400 LIBS="-levent $STATIC_LIBEVENT_FLAGS $TOR_LIB_WS32 $LIBS"
401 LDFLAGS="$TOR_LDFLAGS_libevent $LDFLAGS"
402 CPPFLAGS="$TOR_CPPFLAGS_libevent $CPPFLAGS"
403 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)
404 AC_CHECK_MEMBERS([struct event.min_heap_idx], , ,
408 AC_CHECK_HEADERS(event2/event.h event2/dns.h event2/bufferevent_ssl.h)
411 LDFLAGS="$save_LDFLAGS"
412 CPPFLAGS="$save_CPPFLAGS"
415 AM_CONDITIONAL(USE_EXTERNAL_EVDNS, test x$ac_cv_header_event2_dns_h = xyes)
417 if test "$enable_static_libevent" = "yes"; then
418 if test "$tor_cv_library_libevent_dir" = "(system)"; then
419 AC_MSG_ERROR("You must specify an explicit --with-libevent-dir=x option when using --enable-static-libevent")
421 TOR_LIBEVENT_LIBS="$TOR_LIBDIR_libevent/libevent.a $STATIC_LIBEVENT_FLAGS"
424 TOR_LIBEVENT_LIBS="-levent"
427 dnl This isn't the best test for Libevent 2.0.3-alpha. Once it's released,
428 dnl we can do much better.
429 if test "$enable_bufferevents" = "yes" ; then
430 if test "$ac_cv_header_event2_bufferevent_ssl_h" != "yes" ; then
431 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.])
434 CPPFLAGS="$CPPFLAGS $TOR_CPPFLAGS_libevent"
436 # Check for the right version. First see if version detection works.
437 AC_MSG_CHECKING([whether we can detect the Libevent version])
438 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
439 #include <event2/event.h>
440 #if !defined(LIBEVENT_VERSION_NUMBER) || LIBEVENT_VERSION_NUMBER < 10
446 ])], [event_version_number_works=yes; AC_MSG_RESULT([yes]) ],
447 [event_version_number_works=no; AC_MSG_RESULT([no])])
448 if test "$event_version_number_works" != 'yes'; then
449 AC_MSG_WARN([Version detection on Libevent seems broken. Your Libevent installation is probably screwed up or very old.])
451 AC_MSG_CHECKING([whether Libevent is new enough for bufferevents])
452 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
453 #include <event2/event.h>
454 #if !defined(LIBEVENT_VERSION_NUMBER) || LIBEVENT_VERSION_NUMBER < 0x02000d00
460 ])], [ AC_MSG_RESULT([yes]) ],
461 [ AC_MSG_RESULT([no])
462 AC_MSG_ERROR([Libevent does not seem new enough to support bufferevents. We require 2.0.13-stable or later]) ] )
468 LDFLAGS="$save_LDFLAGS"
469 CPPFLAGS="$save_CPPFLAGS"
471 AM_CONDITIONAL(USE_BUFFEREVENTS, test "$enable_bufferevents" = "yes")
472 if test "$enable_bufferevents" = "yes"; then
473 AC_DEFINE(USE_BUFFEREVENTS, 1, [Defined if we're going to use Libevent's buffered IO API])
474 if test "$enable_static_libevent" = "yes"; then
475 TOR_LIBEVENT_LIBS="$TOR_LIBDIR_libevent/libevent_openssl.a $TOR_LIBEVENT_LIBS"
477 TOR_LIBEVENT_LIBS="-levent_openssl $TOR_LIBEVENT_LIBS"
480 AC_SUBST(TOR_LIBEVENT_LIBS)
482 dnl ------------------------------------------------------
483 dnl Where do you live, libm?
485 dnl On some platforms (Haiku/BeOS) the math library is
486 dnl part of libroot. In which case don't link against lm
489 AC_SEARCH_LIBS(pow, [m], , AC_MSG_ERROR([Could not find pow in libm or libc.]))
490 if test "$ac_cv_search_pow" != "none required"; then
491 TOR_LIB_MATH="$ac_cv_search_pow"
494 AC_SUBST(TOR_LIB_MATH)
496 dnl ------------------------------------------------------
497 dnl Where do you live, openssl? And how do we call you?
499 tor_openssl_pkg_redhat="openssl"
500 tor_openssl_pkg_debian="libssl"
501 tor_openssl_devpkg_redhat="openssl-devel"
502 tor_openssl_devpkg_debian="libssl-dev"
504 ALT_openssl_WITHVAL=""
506 [ --with-ssl-dir=PATH Obsolete alias for --with-openssl-dir ],
508 if test "x$withval" != xno && test "x$withval" != "x" ; then
509 ALT_openssl_WITHVAL="$withval"
513 TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto $TOR_LIB_GDI],
514 [#include <openssl/rand.h>],
515 [void RAND_add(const void *buf, int num, double entropy);],
516 [RAND_add((void*)0,0,0); exit(0);], [],
517 [/usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/athena /opt/openssl])
519 dnl XXXX check for OPENSSL_VERSION_NUMBER == SSLeay()
521 if test "$enable_static_openssl" = "yes"; then
522 if test "$tor_cv_library_openssl_dir" = "(system)"; then
523 AC_MSG_ERROR("You must specify an explicit --with-openssl-dir=x option when using --enable-static-openssl")
525 TOR_OPENSSL_LIBS="$TOR_LIBDIR_openssl/libssl.a $TOR_LIBDIR_openssl/libcrypto.a"
528 TOR_OPENSSL_LIBS="-lssl -lcrypto"
530 AC_SUBST(TOR_OPENSSL_LIBS)
532 dnl ------------------------------------------------------
533 dnl Where do you live, zlib? And how do we call you?
535 tor_zlib_pkg_redhat="zlib"
536 tor_zlib_pkg_debian="zlib1g"
537 tor_zlib_devpkg_redhat="zlib-devel"
538 tor_zlib_devpkg_debian="zlib1g-dev"
540 TOR_SEARCH_LIBRARY(zlib, $tryzlibdir, [-lz],
542 [const char * zlibVersion(void);],
543 [zlibVersion(); exit(0);], [--with-zlib-dir],
546 if test "$enable_static_zlib" = "yes"; then
547 if test "$tor_cv_library_zlib_dir" = "(system)"; then
548 AC_MSG_ERROR("You must specify an explicit --with-zlib-dir=x option when
549 using --enable-static-zlib")
551 TOR_ZLIB_LIBS="$TOR_LIBDIR_zlib/libz.a"
556 AC_SUBST(TOR_ZLIB_LIBS)
558 dnl ---------------------------------------------------------------------
559 dnl Now that we know about our major libraries, we can check for compiler
560 dnl and linker hardening options. We need to do this with the libraries known,
561 dnl since sometimes the linker will like an option but not be willing to
562 dnl use it with a build of a library.
564 all_ldflags_for_check="$TOR_LDFLAGS_zlib $TOR_LDFLAGS_openssl $TOR_LDFLAGS_libevent"
565 all_libs_for_check="$TOR_ZLIB_LIBS $TOR_LIB_MATH $TOR_LIBEVENT_LIBS $TOR_OPENSSL_LIBS $TOR_LIB_WS32 $TOR_LIB_GDI"
567 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
568 #if !defined(__clang__)
570 #endif])], have_clang=yes, have_clang=no)
572 if test x$enable_gcc_hardening != xno; then
573 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
574 if test x$have_clang = xyes; then
575 TOR_CHECK_CFLAGS(-Qunused-arguments)
577 TOR_CHECK_CFLAGS(-fstack-protector-all)
578 TOR_CHECK_CFLAGS(-Wstack-protector)
579 TOR_CHECK_CFLAGS(-fwrapv)
580 TOR_CHECK_CFLAGS(--param ssp-buffer-size=1)
581 if test "$bwin32" = "false"; then
582 TOR_CHECK_CFLAGS(-fPIE)
583 TOR_CHECK_LDFLAGS(-pie, "$all_ldflags_for_check", "$all_libs_for_check")
587 if test x$enable_linker_hardening != xno; then
588 TOR_CHECK_LDFLAGS(-z relro -z now, "$all_ldflags_for_check", "$all_libs_for_check")
591 dnl ------------------------------------------------------
592 dnl Where do you live, libnatpmp? And how do we call you?
593 dnl There are no packages for Debian or Redhat as of this patch
595 if test "$natpmp" = "true"; then
596 AC_DEFINE(NAT_PMP, 1, [Define to 1 if we are building with nat-pmp.])
597 TOR_SEARCH_LIBRARY(libnatpmp, $trylibnatpmpdir, [-lnatpmp $TOR_LIB_WS32 $TOR_LIB_IPHLPAPI],
598 [#include <natpmp.h>],
602 #include <natpmp.h>],
605 natpmpresp_t response;
606 r = initnatpmp(&natpmp, 0, 0);],
607 [printf("initnatpmp() returned %d (%s)\n", r, r?"FAILED":"SUCCESS");
609 [--with-libnatpmp-dir],
614 dnl ------------------------------------------------------
615 dnl Where do you live, libminiupnpc? And how do we call you?
616 dnl There are no packages for Debian or Redhat as of this patch
618 if test "$upnp" = "true"; then
619 AC_DEFINE(MINIUPNPC, 1, [Define to 1 if we are building with UPnP.])
621 dnl Before we call TOR_SEARCH_LIBRARY we'll do a quick compile test
622 dnl to see if we have miniupnpc-1.5 or -1.6
623 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <miniupnpc/miniupnpc.h>],
624 [upnpDiscover(1, 0, 0, 0);exit(0);])],[miniupnpc15="true"],[miniupnpc15="false"])
626 if test "$miniupnpc15" = "true" ; then
627 AC_DEFINE([MINIUPNPC15],[1],[libminiupnpc version 1.5 found])
628 TOR_SEARCH_LIBRARY(libminiupnpc, $trylibminiupnpcdir, [-lminiupnpc $TOR_LIB_WS32 $TOR_LIB_IPHLPAPI],
629 [#include <miniupnpc/miniwget.h>
630 #include <miniupnpc/miniupnpc.h>
631 #include <miniupnpc/upnpcommands.h>],
632 [void upnpDiscover(int delay, const char * multicastif,
633 const char * minissdpdsock, int sameport);],
634 [upnpDiscover(1, 0, 0, 0); exit(0);],
635 [--with-libminiupnpc-dir],
638 TOR_SEARCH_LIBRARY(libminiupnpc, $trylibminiupnpcdir, [-lminiupnpc $TOR_LIB_WS32 $TOR_LIB_IPHLPAPI],
639 [#include <miniupnpc/miniwget.h>
640 #include <miniupnpc/miniupnpc.h>
641 #include <miniupnpc/upnpcommands.h>],
642 [void upnpDiscover(int delay, const char * multicastif,
643 const char * minissdpdsock, int sameport, int ipv6, int * error);],
644 [upnpDiscover(1, 0, 0, 0, 0, 0); exit(0);],
645 [--with-libminiupnpc-dir],
650 dnl Make sure to enable support for large off_t if available.
665 , , 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.))
667 dnl These headers are not essential
704 AC_CHECK_HEADERS(sys/param.h)
706 TOR_CHECK_PROTOTYPE(malloc_good_size, HAVE_MALLOC_GOOD_SIZE_PROTOTYPE,
707 [#ifdef HAVE_MALLOC_H
710 #ifdef HAVE_MALLOC_MALLOC_H
711 #include <malloc/malloc.h>
714 AC_CHECK_HEADERS(net/if.h, net_if_found=1, net_if_found=0,
715 [#ifdef HAVE_SYS_TYPES_H
716 #include <sys/types.h>
718 #ifdef HAVE_SYS_SOCKET_H
719 #include <sys/socket.h>
721 AC_CHECK_HEADERS(net/pfvar.h, net_pfvar_found=1, net_pfvar_found=0,
722 [#ifdef HAVE_SYS_TYPES_H
723 #include <sys/types.h>
725 #ifdef HAVE_SYS_SOCKET_H
726 #include <sys/socket.h>
731 AC_CHECK_HEADERS(linux/netfilter_ipv4.h,
732 linux_netfilter_ipv4=1, linux_netfilter_ipv4=0,
733 [#ifdef HAVE_SYS_TYPES_H
734 #include <sys/types.h>
736 #ifdef HAVE_SYS_SOCKET_H
737 #include <sys/socket.h>
742 #ifdef HAVE_LINUX_TYPES_H
743 #include <linux/types.h>
745 #ifdef HAVE_NETINET_IN6_H
746 #include <netinet/in6.h>
748 #ifdef HAVE_NETINET_IN_H
749 #include <netinet/in.h>
752 if test x$transparent = xtrue ; then
754 if test x$net_if_found = x1 && test x$net_pfvar_found = x1 ; then
757 if test x$linux_netfilter_ipv4 = x1 ; then
760 if test x$transparent_ok = x1 ; then
761 AC_DEFINE(USE_TRANSPARENT, 1, "Define to enable transparent proxy support")
764 AC_DEFINE(OPENBSD, 1, "Define to handle pf on OpenBSD properly") ;;
767 AC_MSG_NOTICE([Transparent proxy support enabled, but missing headers.])
771 AC_CHECK_MEMBERS([struct timeval.tv_sec], , ,
772 [#ifdef HAVE_SYS_TYPES_H
773 #include <sys/types.h>
775 #ifdef HAVE_SYS_TIME_H
776 #include <sys/time.h>
779 dnl In case we aren't given a working stdint.h, we'll need to grow our own.
782 AC_CHECK_SIZEOF(int8_t)
783 AC_CHECK_SIZEOF(int16_t)
784 AC_CHECK_SIZEOF(int32_t)
785 AC_CHECK_SIZEOF(int64_t)
786 AC_CHECK_SIZEOF(uint8_t)
787 AC_CHECK_SIZEOF(uint16_t)
788 AC_CHECK_SIZEOF(uint32_t)
789 AC_CHECK_SIZEOF(uint64_t)
790 AC_CHECK_SIZEOF(intptr_t)
791 AC_CHECK_SIZEOF(uintptr_t)
793 dnl AC_CHECK_TYPES([int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t, intptr_t, uintptr_t])
795 AC_CHECK_SIZEOF(char)
796 AC_CHECK_SIZEOF(short)
798 AC_CHECK_SIZEOF(long)
799 AC_CHECK_SIZEOF(long long)
800 AC_CHECK_SIZEOF(__int64)
801 AC_CHECK_SIZEOF(void *)
802 AC_CHECK_SIZEOF(time_t)
803 AC_CHECK_SIZEOF(size_t)
805 AC_CHECK_TYPES([uint, u_char, ssize_t])
807 dnl used to include sockaddr_storage, but everybody has that.
808 AC_CHECK_TYPES([struct in6_addr, struct sockaddr_in6, sa_family_t], , ,
809 [#ifdef HAVE_SYS_TYPES_H
810 #include <sys/types.h>
812 #ifdef HAVE_NETINET_IN_H
813 #include <netinet/in.h>
815 #ifdef HAVE_NETINET_IN6_H
816 #include <netinet/in6.h>
818 #ifdef HAVE_SYS_SOCKET_H
819 #include <sys/socket.h>
822 #define _WIN32_WINNT 0x0501
823 #define WIN32_LEAN_AND_MEAN
824 #if defined(_MSC_VER) && (_MSC_VER < 1300)
827 #include <winsock2.h>
828 #include <ws2tcpip.h>
832 AC_CHECK_MEMBERS([struct in6_addr.s6_addr32, struct in6_addr.s6_addr16, struct sockaddr_in.sin_len, struct sockaddr_in6.sin6_len], , ,
833 [#ifdef HAVE_SYS_TYPES_H
834 #include <sys/types.h>
836 #ifdef HAVE_NETINET_IN_H
837 #include <netinet/in.h>
839 #ifdef HAVE_NETINET_IN6_H
840 #include <netinet/in6.h>
842 #ifdef HAVE_SYS_SOCKET_H
843 #include <sys/socket.h>
846 #define _WIN32_WINNT 0x0501
847 #define WIN32_LEAN_AND_MEAN
848 #if defined(_MSC_VER) && (_MSC_VER < 1300)
851 #include <winsock2.h>
852 #include <ws2tcpip.h>
857 AC_CHECK_TYPES([rlim_t], , ,
858 [#ifdef HAVE_SYS_TYPES_H
859 #include <sys/types.h>
861 #ifdef HAVE_SYS_TIME_H
862 #include <sys/time.h>
864 #ifdef HAVE_SYS_RESOURCE_H
865 #include <sys/resource.h>
869 AC_CACHE_CHECK([whether time_t is signed], tor_cv_time_t_signed, [
870 AC_RUN_IFELSE([AC_LANG_SOURCE([
871 #ifdef HAVE_SYS_TYPES_H
872 #include <sys/types.h>
874 #ifdef HAVE_SYS_TIME_H
875 #include <sys/time.h>
880 int main(int c, char**v) { if (((time_t)-1)<0) return 1; else return 0; }])],
881 tor_cv_time_t_signed=no, tor_cv_time_t_signed=yes, tor_cv_time_t_signed=cross)
884 if test "$tor_cv_time_t_signed" = cross; then
885 AC_MSG_NOTICE([Cross compiling: assuming that time_t is signed.])
888 if test "$tor_cv_time_t_signed" != no; then
889 AC_DEFINE([TIME_T_IS_SIGNED], 1,
890 [Define to 1 iff time_t is signed])
893 AC_CACHE_CHECK([whether size_t is signed], tor_cv_size_t_signed, [
894 AC_RUN_IFELSE([AC_LANG_SOURCE([
895 #ifdef HAVE_SYS_TYPES_H
896 #include <sys/types.h>
898 int main(int c, char**v) { if (((size_t)-1)<0) return 1; else return 0; }])],
899 tor_cv_size_t_signed=no, tor_cv_size_t_signed=yes, tor_cv_size_t_signed=cross)
902 if test "$tor_cv_size_t_signed" = cross; then
903 AC_MSG_NOTICE([Cross compiling: assuming that size_t is not signed.])
906 if test "$tor_cv_size_t_signed" = yes; then
907 AC_MSG_ERROR([You have a signed size_t; that's grossly nonconformant.])
910 AC_CHECK_SIZEOF(socklen_t, , [AC_INCLUDES_DEFAULT()
911 #ifdef HAVE_SYS_SOCKET_H
912 #include <sys/socket.h>
916 # We want to make sure that we _don't_ have a cell_t defined, like IRIX does.
918 AC_CHECK_SIZEOF(cell_t)
920 # Now make sure that NULL can be represented as zero bytes.
921 AC_CACHE_CHECK([whether memset(0) sets pointers to NULL], tor_cv_null_is_zero,
922 [AC_RUN_IFELSE([AC_LANG_SOURCE(
923 [[#include <stdlib.h>
929 int main () { char *p1,*p2; p1=NULL; memset(&p2,0,sizeof(p2));
930 return memcmp(&p1,&p2,sizeof(char*))?1:0; }]])],
931 [tor_cv_null_is_zero=yes],
932 [tor_cv_null_is_zero=no],
933 [tor_cv_null_is_zero=cross])])
935 if test "$tor_cv_null_is_zero" = cross ; then
936 # Cross-compiling; let's hope that the target isn't raving mad.
937 AC_MSG_NOTICE([Cross-compiling: we'll assume that NULL is represented as a sequence of 0-valued bytes.])
940 if test "$tor_cv_null_is_zero" != no; then
941 AC_DEFINE([NULL_REP_IS_ZERO_BYTES], 1,
942 [Define to 1 iff memset(0) sets pointers to NULL])
945 # And what happens when we malloc zero?
946 AC_CACHE_CHECK([whether we can malloc(0) safely.], tor_cv_malloc_zero_works,
947 [AC_RUN_IFELSE([AC_LANG_SOURCE(
948 [[#include <stdlib.h>
954 int main () { return malloc(0)?0:1; }]])],
955 [tor_cv_malloc_zero_works=yes],
956 [tor_cv_malloc_zero_works=no],
957 [tor_cv_malloc_zero_works=cross])])
959 if test "$tor_cv_malloc_zero_works" = cross; then
960 # Cross-compiling; let's hope that the target isn't raving mad.
961 AC_MSG_NOTICE([Cross-compiling: we'll assume that we need to check malloc() arguments for 0.])
964 if test "$tor_cv_malloc_zero_works" = yes; then
965 AC_DEFINE([MALLOC_ZERO_WORKS], 1,
966 [Define to 1 iff malloc(0) returns a pointer])
969 # whether we seem to be in a 2s-complement world.
970 AC_CACHE_CHECK([whether we are using 2s-complement arithmetic], tor_cv_twos_complement,
971 [AC_RUN_IFELSE([AC_LANG_SOURCE(
972 [[int main () { int problem = ((-99) != (~99)+1);
973 return problem ? 1 : 0; }]])],
974 [tor_cv_twos_complement=yes],
975 [tor_cv_twos_complement=no],
976 [tor_cv_twos_complement=cross])])
978 if test "$tor_cv_twos_complement" = cross ; then
979 # Cross-compiling; let's hope that the target isn't raving mad.
980 AC_MSG_NOTICE([Cross-compiling: we'll assume that negative integers are represented with two's complement.])
983 if test "$tor_cv_twos_complement" != no ; then
984 AC_DEFINE([USING_TWOS_COMPLEMENT], 1,
985 [Define to 1 iff we represent negative integers with two's complement])
988 # What does shifting a negative value do?
989 AC_CACHE_CHECK([whether right-shift on negative values does sign-extension], tor_cv_sign_extend,
990 [AC_RUN_IFELSE([AC_LANG_SOURCE(
991 [[int main () { int okay = (-60 >> 8) == -1; return okay ? 0 : 1; }]])],
992 [tor_cv_sign_extend=yes],
993 [tor_cv_sign_extend=no],
994 [tor_cv_sign_extend=cross])])
996 if test "$tor_cv_sign_extend" = cross ; then
997 # Cross-compiling; let's hope that the target isn't raving mad.
998 AC_MSG_NOTICE([Cross-compiling: we'll assume that right-shifting negative integers causes sign-extension])
1001 if test "$tor_cv_sign_extend" != no ; then
1002 AC_DEFINE([RSHIFT_DOES_SIGN_EXTEND], 1,
1003 [Define to 1 iff right-shifting a negative value performs sign-extension])
1006 # Whether we should use the dmalloc memory allocation debugging library.
1007 AC_MSG_CHECKING(whether to use dmalloc (debug memory allocation library))
1008 AC_ARG_WITH(dmalloc,
1009 [ --with-dmalloc Use debug memory allocation library. ],
1010 [if [[ "$withval" = "yes" ]]; then
1016 fi], [ dmalloc=0; AC_MSG_RESULT(no) ]
1019 if [[ $dmalloc -eq 1 ]]; then
1020 AC_CHECK_HEADERS(dmalloc.h, , AC_MSG_ERROR(dmalloc header file not found. Do you have the development files for dmalloc installed?))
1021 AC_SEARCH_LIBS(dmalloc_malloc, [dmallocth dmalloc], , AC_MSG_ERROR(Libdmalloc library not found. If you enable it you better have it installed.))
1022 AC_DEFINE(USE_DMALLOC, 1, [Debug memory allocation library])
1023 AC_DEFINE(DMALLOC_FUNC_CHECK, 1, [Enable dmalloc's malloc function check])
1024 AC_CHECK_FUNCS(dmalloc_strdup dmalloc_strndup)
1027 AC_ARG_WITH(tcmalloc,
1028 [ --with-tcmalloc Use tcmalloc memory allocation library. ],
1029 [ tcmalloc=yes ], [ tcmalloc=no ])
1031 if test x$tcmalloc = xyes ; then
1032 LDFLAGS="-ltcmalloc $LDFLAGS"
1035 # By default, we're going to assume we don't have mlockall()
1036 # bionic and other platforms have various broken mlockall subsystems.
1037 # Some systems don't have a working mlockall, some aren't linkable,
1038 # and some have it but don't declare it.
1039 AC_CHECK_FUNCS(mlockall)
1040 AC_CHECK_DECLS([mlockall], , , [
1041 #ifdef HAVE_SYS_MMAN_H
1042 #include <sys/mman.h>
1045 # Allow user to specify an alternate syslog facility
1046 AC_ARG_WITH(syslog-facility,
1047 [ --with-syslog-facility=LOG syslog facility to use (default=LOG_DAEMON)],
1048 syslog_facility="$withval", syslog_facility="LOG_DAEMON")
1049 AC_DEFINE_UNQUOTED(LOGFACILITY,$syslog_facility,[name of the syslog facility])
1050 AC_SUBST(LOGFACILITY)
1052 # Check if we have getresuid and getresgid
1053 AC_CHECK_FUNCS(getresuid getresgid)
1055 # Check for gethostbyname_r in all its glorious incompatible versions.
1056 # (This logic is based on that in Python's configure.in)
1057 AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
1058 [Define this if you have any gethostbyname_r()])
1060 AC_CHECK_FUNC(gethostbyname_r, [
1061 AC_MSG_CHECKING([how many arguments gethostbyname_r() wants])
1063 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
1064 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1068 struct hostent *h1, *h2;
1070 (void)gethostbyname_r(cp1,h1,cp2,i1,&h2,&i2);
1072 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1073 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
1074 [Define this if gethostbyname_r takes 6 arguments])
1083 (void)gethostbyname_r(cp1,h1,cp2,i1,&i2);
1085 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1086 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
1087 [Define this if gethostbyname_r takes 5 arguments])
1095 struct hostent_data hd;
1096 (void) gethostbyname_r(cp1,h1,&hd);
1098 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1099 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
1100 [Define this if gethostbyname_r takes 3 arguments])
1110 AC_CACHE_CHECK([whether the C compiler supports __func__],
1111 tor_cv_have_func_macro,
1112 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1114 int main(int c, char **v) { puts(__func__); }])],
1115 tor_cv_have_func_macro=yes,
1116 tor_cv_have_func_macro=no))
1118 AC_CACHE_CHECK([whether the C compiler supports __FUNC__],
1119 tor_cv_have_FUNC_macro,
1120 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1122 int main(int c, char **v) { puts(__FUNC__); }])],
1123 tor_cv_have_FUNC_macro=yes,
1124 tor_cv_have_FUNC_macro=no))
1126 AC_CACHE_CHECK([whether the C compiler supports __FUNCTION__],
1127 tor_cv_have_FUNCTION_macro,
1128 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1130 int main(int c, char **v) { puts(__FUNCTION__); }])],
1131 tor_cv_have_FUNCTION_macro=yes,
1132 tor_cv_have_FUNCTION_macro=no))
1134 AC_CACHE_CHECK([whether we have extern char **environ already declared],
1135 tor_cv_have_environ_declared,
1136 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1137 /* We define _GNU_SOURCE here because it is also defined in compat.c.
1138 * Without it environ doesn't get declared. */
1140 #ifdef HAVE_UNISTD_H
1144 int main(int c, char **v) { char **t = environ; }])],
1145 tor_cv_have_environ_declared=yes,
1146 tor_cv_have_environ_declared=no))
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_FUNC_macro" = 'yes'; then
1153 AC_DEFINE(HAVE_MACRO__FUNC__, 1, [Defined if the compiler supports __FUNC__])
1156 if test "$tor_cv_have_FUNCTION_macro" = 'yes'; then
1157 AC_DEFINE(HAVE_MACRO__FUNCTION__, 1,
1158 [Defined if the compiler supports __FUNCTION__])
1161 if test "$tor_cv_have_environ_declared" = 'yes'; then
1162 AC_DEFINE(HAVE_EXTERN_ENVIRON_DECLARED, 1,
1163 [Defined if we have extern char **environ already declared])
1166 # $prefix stores the value of the --prefix command line option, or
1167 # NONE if the option wasn't set. In the case that it wasn't set, make
1168 # it be the default, so that we can use it to expand directories now.
1169 if test "x$prefix" = "xNONE"; then
1170 prefix=$ac_default_prefix
1173 # and similarly for $exec_prefix
1174 if test "x$exec_prefix" = "xNONE"; then
1178 if test "x$BUILDDIR" = "x"; then
1182 AH_TEMPLATE([BUILDDIR],[tor's build directory])
1183 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
1185 if test "x$CONFDIR" = "x"; then
1186 CONFDIR=`eval echo $sysconfdir/tor`
1189 AH_TEMPLATE([CONFDIR],[tor's configuration directory])
1190 AC_DEFINE_UNQUOTED(CONFDIR,"$CONFDIR")
1192 BINDIR=`eval echo $bindir`
1194 LOCALSTATEDIR=`eval echo $localstatedir`
1195 AC_SUBST(LOCALSTATEDIR)
1197 if test "$bwin32" = true; then
1198 # Test if the linker supports the --nxcompat and --dynamicbase options
1200 save_LDFLAGS="$LDFLAGS"
1201 LDFLAGS="-Wl,--nxcompat -Wl,--dynamicbase"
1202 AC_MSG_CHECKING([whether the linker supports DllCharacteristics])
1203 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1204 [AC_MSG_RESULT([yes])]
1205 [save_LDFLAGS="$save_LDFLAGS $LDFLAGS"],
1206 [AC_MSG_RESULT([no])]
1208 LDFLAGS="$save_LDFLAGS"
1211 # Set CFLAGS _after_ all the above checks, since our warnings are stricter
1212 # than autoconf's macros like.
1213 if test "$GCC" = yes; then
1214 # Disable GCC's strict aliasing checks. They are an hours-to-debug
1215 # accident waiting to happen.
1216 CFLAGS="$CFLAGS -Wall -fno-strict-aliasing"
1218 # Autoconf sets -g -O2 by default. Override optimization level
1219 # for non-gcc compilers
1221 enable_gcc_warnings=no
1222 enable_gcc_warnings_advisory=no
1225 # OS X Lion started deprecating the system openssl. Let's just disable
1226 # all deprecation warnings on OS X. Also, to potentially make the binary
1227 # a little smaller, let's enable dead_strip.
1231 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
1232 LDFLAGS="$LDFLAGS -dead_strip" ;;
1235 # Add some more warnings which we use in development but not in the
1236 # released versions. (Some relevant gcc versions can't handle these.)
1237 if test x$enable_gcc_warnings = xyes || test x$enable_gcc_warnings_advisory = xyes; then
1239 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
1240 #if !defined(__GNUC__) || (__GNUC__ < 4)
1242 #endif])], have_gcc4=yes, have_gcc4=no)
1244 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
1245 #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
1247 #endif])], have_gcc42=yes, have_gcc42=no)
1249 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
1250 #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
1252 #endif])], have_gcc43=yes, have_gcc43=no)
1254 save_CFLAGS="$CFLAGS"
1255 CFLAGS="$CFLAGS -Wshorten-64-to-32"
1256 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], have_shorten64_flag=yes,
1257 have_shorten64_flag=no)
1258 CFLAGS="$save_CFLAGS"
1262 # Some OpenBSD versions (like 4.8) have -Wsystem-headers by default.
1263 # That's fine, except that the headers don't pass -Wredundant-decls.
1264 # Therefore, let's disable -Wsystem-headers when we're building
1265 # with maximal warnings on OpenBSD.
1266 CFLAGS="$CFLAGS -Wno-system-headers" ;;
1269 CFLAGS="$CFLAGS -W -Wfloat-equal -Wundef -Wpointer-arith"
1270 CFLAGS="$CFLAGS -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings"
1271 CFLAGS="$CFLAGS -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat=2"
1272 CFLAGS="$CFLAGS -Wwrite-strings -Wmissing-declarations -Wredundant-decls"
1273 CFLAGS="$CFLAGS -Wnested-externs -Wbad-function-cast -Wswitch-enum"
1275 if test x$enable_gcc_warnings = xyes; then
1276 CFLAGS="$CFLAGS -Werror"
1279 # Disabled, so we can use mallinfo(): -Waggregate-return
1281 if test x$have_gcc4 = xyes ; then
1282 # These warnings break gcc 3.3.5 and work on gcc 4.0.2
1283 CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement -Wold-style-definition"
1286 if test x$have_gcc42 = xyes ; then
1287 # These warnings break gcc 4.0.2 and work on gcc 4.2
1288 # XXXX020 See if any of these work with earlier versions.
1289 CFLAGS="$CFLAGS -Waddress -Wmissing-noreturn -Wstrict-overflow=1"
1291 # We used to use -Wstrict-overflow=5, but that breaks us heavily under 4.3.
1294 if test x$have_gcc42 = xyes && test x$have_clang = xno; then
1295 # These warnings break gcc 4.0.2 and clang, but work on gcc 4.2
1296 CFLAGS="$CFLAGS -Wnormalized=id -Woverride-init"
1299 if test x$have_gcc43 = xyes ; then
1300 # These warnings break gcc 4.2 and work on gcc 4.3
1301 # XXXX020 See if any of these work with earlier versions.
1302 CFLAGS="$CFLAGS -Wextra -Warray-bounds"
1305 if test x$have_shorten64_flag = xyes ; then
1306 CFLAGS="$CFLAGS -Wshorten-64-to-32"
1309 ##This will break the world on some 64-bit architectures
1310 # CFLAGS="$CFLAGS -Winline"
1315 CPPFLAGS="$CPPFLAGS $TOR_CPPFLAGS_libevent $TOR_CPPFLAGS_openssl $TOR_CPPFLAGS_zlib"
1321 contrib/suse/Makefile
1323 contrib/tor.logrotate
1331 src/config/torrc.sample
1335 src/tools/tor-fw-helper/Makefile
1342 if test -x /usr/bin/perl && test -x ./contrib/updateVersions.pl ; then
1343 ./contrib/updateVersions.pl