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.2-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.
323 if test "$enable_threads" = "yes"; then
324 AC_CHECK_HEADERS(pthread.h)
325 AC_CHECK_FUNCS(pthread_create)
328 dnl ------------------------------------------------------
329 dnl Where do you live, libevent? And how do we call you?
331 if test "$bwin32" = true; then
332 TOR_LIB_WS32=-lws2_32
333 TOR_LIB_IPHLPAPI=-liphlpapi
334 # Some of the cargo-cults recommend -lwsock32 as well, but I don't
335 # think it's actually necessary.
341 AC_SUBST(TOR_LIB_WS32)
342 AC_SUBST(TOR_LIB_GDI)
343 AC_SUBST(TOR_LIB_IPHLPAPI)
345 dnl We need to do this before we try our disgusting hack below.
346 AC_CHECK_HEADERS([sys/types.h])
348 dnl This is a disgusting hack so we safely include older libevent headers.
349 AC_CHECK_TYPE(u_int64_t, unsigned long long)
350 AC_CHECK_TYPE(u_int32_t, unsigned long)
351 AC_CHECK_TYPE(u_int16_t, unsigned short)
352 AC_CHECK_TYPE(u_int8_t, unsigned char)
354 tor_libevent_pkg_redhat="libevent"
355 tor_libevent_pkg_debian="libevent-dev"
356 tor_libevent_devpkg_redhat="libevent-devel"
357 tor_libevent_devpkg_debian="libevent-dev"
359 dnl On Gnu/Linux or any place we require it, we'll add librt to the Libevent
360 dnl linking for static builds.
361 STATIC_LIBEVENT_FLAGS=""
362 if test "$enable_static_libevent" = "yes"; then
363 if test "$have_rt" = yes; then
364 STATIC_LIBEVENT_FLAGS=" -lrt "
368 TOR_SEARCH_LIBRARY(libevent, $trylibeventdir, [-levent $STATIC_LIBEVENT_FLAGS $TOR_LIB_WS32], [
370 #include <winsock2.h>
373 #include <sys/time.h>
374 #include <sys/types.h>
375 #include <event.h>], [
377 #include <winsock2.h>
379 void exit(int); void *event_init(void);],
382 {WSADATA d; WSAStartup(0x101,&d); }
384 event_init(); exit(0);
385 ], [--with-libevent-dir], [/opt/libevent])
387 dnl Now check for particular libevent functions.
389 save_LDFLAGS="$LDFLAGS"
390 save_CPPFLAGS="$CPPFLAGS"
391 LIBS="-levent $STATIC_LIBEVENT_FLAGS $TOR_LIB_WS32 $LIBS"
392 LDFLAGS="$TOR_LDFLAGS_libevent $LDFLAGS"
393 CPPFLAGS="$TOR_CPPFLAGS_libevent $CPPFLAGS"
394 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)
395 AC_CHECK_MEMBERS([struct event.min_heap_idx], , ,
399 AC_CHECK_HEADERS(event2/event.h event2/dns.h event2/bufferevent_ssl.h)
402 LDFLAGS="$save_LDFLAGS"
403 CPPFLAGS="$save_CPPFLAGS"
406 AM_CONDITIONAL(USE_EXTERNAL_EVDNS, test x$ac_cv_header_event2_dns_h = xyes)
408 if test "$enable_static_libevent" = "yes"; then
409 if test "$tor_cv_library_libevent_dir" = "(system)"; then
410 AC_MSG_ERROR("You must specify an explicit --with-libevent-dir=x option when using --enable-static-libevent")
412 TOR_LIBEVENT_LIBS="$TOR_LIBDIR_libevent/libevent.a $STATIC_LIBEVENT_FLAGS"
415 TOR_LIBEVENT_LIBS="-levent"
418 dnl This isn't the best test for Libevent 2.0.3-alpha. Once it's released,
419 dnl we can do much better.
420 if test "$enable_bufferevents" = "yes" ; then
421 if test "$ac_cv_header_event2_bufferevent_ssl_h" != "yes" ; then
422 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.])
425 CPPFLAGS="$CPPFLAGS $TOR_CPPFLAGS_libevent"
427 # Check for the right version. First see if version detection works.
428 AC_MSG_CHECKING([whether we can detect the Libevent version])
429 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
430 #include <event2/event.h>
431 #if !defined(LIBEVENT_VERSION_NUMBER) || LIBEVENT_VERSION_NUMBER < 10
437 ])], [event_version_number_works=yes; AC_MSG_RESULT([yes]) ],
438 [event_version_number_works=no; AC_MSG_RESULT([no])])
439 if test "$event_version_number_works" != 'yes'; then
440 AC_MSG_WARN([Version detection on Libevent seems broken. Your Libevent installation is probably screwed up or very old.])
442 AC_MSG_CHECKING([whether Libevent is new enough for bufferevents])
443 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
444 #include <event2/event.h>
445 #if !defined(LIBEVENT_VERSION_NUMBER) || LIBEVENT_VERSION_NUMBER < 0x02000d00
451 ])], [ AC_MSG_RESULT([yes]) ],
452 [ AC_MSG_RESULT([no])
453 AC_MSG_ERROR([Libevent does not seem new enough to support bufferevents. We require 2.0.13-stable or later]) ] )
459 LDFLAGS="$save_LDFLAGS"
460 CPPFLAGS="$save_CPPFLAGS"
462 AM_CONDITIONAL(USE_BUFFEREVENTS, test "$enable_bufferevents" = "yes")
463 if test "$enable_bufferevents" = "yes"; then
464 AC_DEFINE(USE_BUFFEREVENTS, 1, [Defined if we're going to use Libevent's buffered IO API])
465 if test "$enable_static_libevent" = "yes"; then
466 TOR_LIBEVENT_LIBS="$TOR_LIBDIR_libevent/libevent_openssl.a $TOR_LIBEVENT_LIBS"
468 TOR_LIBEVENT_LIBS="-levent_openssl $TOR_LIBEVENT_LIBS"
471 AC_SUBST(TOR_LIBEVENT_LIBS)
473 dnl ------------------------------------------------------
474 dnl Where do you live, libm?
476 dnl On some platforms (Haiku/BeOS) the math library is
477 dnl part of libroot. In which case don't link against lm
480 AC_SEARCH_LIBS(pow, [m], , AC_MSG_ERROR([Could not find pow in libm or libc.]))
481 if test "$ac_cv_search_pow" != "none required"; then
482 TOR_LIB_MATH="$ac_cv_search_pow"
485 AC_SUBST(TOR_LIB_MATH)
487 dnl ------------------------------------------------------
488 dnl Where do you live, openssl? And how do we call you?
490 tor_openssl_pkg_redhat="openssl"
491 tor_openssl_pkg_debian="libssl"
492 tor_openssl_devpkg_redhat="openssl-devel"
493 tor_openssl_devpkg_debian="libssl-dev"
495 ALT_openssl_WITHVAL=""
497 [ --with-ssl-dir=PATH Obsolete alias for --with-openssl-dir ],
499 if test "x$withval" != xno && test "x$withval" != "x" ; then
500 ALT_openssl_WITHVAL="$withval"
504 TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto $TOR_LIB_GDI],
505 [#include <openssl/rand.h>],
506 [void RAND_add(const void *buf, int num, double entropy);],
507 [RAND_add((void*)0,0,0); exit(0);], [],
508 [/usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/athena /opt/openssl])
510 dnl XXXX check for OPENSSL_VERSION_NUMBER == SSLeay()
512 if test "$enable_static_openssl" = "yes"; then
513 if test "$tor_cv_library_openssl_dir" = "(system)"; then
514 AC_MSG_ERROR("You must specify an explicit --with-openssl-dir=x option when using --enable-static-openssl")
516 TOR_OPENSSL_LIBS="$TOR_LIBDIR_openssl/libssl.a $TOR_LIBDIR_openssl/libcrypto.a"
519 TOR_OPENSSL_LIBS="-lssl -lcrypto"
521 AC_SUBST(TOR_OPENSSL_LIBS)
523 dnl ------------------------------------------------------
524 dnl Where do you live, zlib? And how do we call you?
526 tor_zlib_pkg_redhat="zlib"
527 tor_zlib_pkg_debian="zlib1g"
528 tor_zlib_devpkg_redhat="zlib-devel"
529 tor_zlib_devpkg_debian="zlib1g-dev"
531 TOR_SEARCH_LIBRARY(zlib, $tryzlibdir, [-lz],
533 [const char * zlibVersion(void);],
534 [zlibVersion(); exit(0);], [--with-zlib-dir],
537 if test "$enable_static_zlib" = "yes"; then
538 if test "$tor_cv_library_zlib_dir" = "(system)"; then
539 AC_MSG_ERROR("You must specify an explicit --with-zlib-dir=x option when
540 using --enable-static-zlib")
542 TOR_ZLIB_LIBS="$TOR_LIBDIR_zlib/libz.a"
547 AC_SUBST(TOR_ZLIB_LIBS)
549 dnl ---------------------------------------------------------------------
550 dnl Now that we know about our major libraries, we can check for compiler
551 dnl and linker hardening options. We need to do this with the libraries known,
552 dnl since sometimes the linker will like an option but not be willing to
553 dnl use it with a build of a library.
555 all_ldflags_for_check="$TOR_LDFLAGS_zlib $TOR_LDFLAGS_openssl $TOR_LDFLAGS_libevent"
556 all_libs_for_check="$TOR_ZLIB_LIBS $TOR_LIB_MATH $TOR_LIBEVENT_LIBS $TOR_OPENSSL_LIBS $TOR_LIB_WS32 $TOR_LIB_GDI"
558 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
559 #if !defined(__clang__)
561 #endif])], have_clang=yes, have_clang=no)
563 if test x$enable_gcc_hardening != xno; then
564 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
565 if test x$have_clang = xyes; then
566 TOR_CHECK_CFLAGS(-Qunused-arguments)
568 TOR_CHECK_CFLAGS(-fstack-protector-all)
569 TOR_CHECK_CFLAGS(-Wstack-protector)
570 TOR_CHECK_CFLAGS(-fwrapv)
571 TOR_CHECK_CFLAGS(--param ssp-buffer-size=1)
572 if test "$bwin32" = "false"; then
573 TOR_CHECK_CFLAGS(-fPIE)
574 TOR_CHECK_LDFLAGS(-pie, "$all_ldflags_for_check", "$all_libs_for_check")
578 if test x$enable_linker_hardening != xno; then
579 TOR_CHECK_LDFLAGS(-z relro -z now, "$all_ldflags_for_check", "$all_libs_for_check")
582 dnl ------------------------------------------------------
583 dnl Where do you live, libnatpmp? And how do we call you?
584 dnl There are no packages for Debian or Redhat as of this patch
586 if test "$natpmp" = "true"; then
587 AC_DEFINE(NAT_PMP, 1, [Define to 1 if we are building with nat-pmp.])
588 TOR_SEARCH_LIBRARY(libnatpmp, $trylibnatpmpdir, [-lnatpmp $TOR_LIB_WS32 $TOR_LIB_IPHLPAPI],
589 [#include <natpmp.h>],
593 #include <natpmp.h>],
596 natpmpresp_t response;
597 r = initnatpmp(&natpmp, 0, 0);],
598 [printf("initnatpmp() returned %d (%s)\n", r, r?"FAILED":"SUCCESS");
600 [--with-libnatpmp-dir],
605 dnl ------------------------------------------------------
606 dnl Where do you live, libminiupnpc? And how do we call you?
607 dnl There are no packages for Debian or Redhat as of this patch
609 if test "$upnp" = "true"; then
610 AC_DEFINE(MINIUPNPC, 1, [Define to 1 if we are building with UPnP.])
612 dnl Before we call TOR_SEARCH_LIBRARY we'll do a quick compile test
613 dnl to see if we have miniupnpc-1.5 or -1.6
614 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <miniupnpc/miniupnpc.h>],
615 [upnpDiscover(1, 0, 0, 0);exit(0);])],[miniupnpc15="true"],[miniupnpc15="false"])
617 if test "$miniupnpc15" = "true" ; then
618 AC_DEFINE([MINIUPNPC15],[1],[libminiupnpc version 1.5 found])
619 TOR_SEARCH_LIBRARY(libminiupnpc, $trylibminiupnpcdir, [-lminiupnpc $TOR_LIB_WS32 $TOR_LIB_IPHLPAPI],
620 [#include <miniupnpc/miniwget.h>
621 #include <miniupnpc/miniupnpc.h>
622 #include <miniupnpc/upnpcommands.h>],
623 [void upnpDiscover(int delay, const char * multicastif,
624 const char * minissdpdsock, int sameport);],
625 [upnpDiscover(1, 0, 0, 0); exit(0);],
626 [--with-libminiupnpc-dir],
629 TOR_SEARCH_LIBRARY(libminiupnpc, $trylibminiupnpcdir, [-lminiupnpc $TOR_LIB_WS32 $TOR_LIB_IPHLPAPI],
630 [#include <miniupnpc/miniwget.h>
631 #include <miniupnpc/miniupnpc.h>
632 #include <miniupnpc/upnpcommands.h>],
633 [void upnpDiscover(int delay, const char * multicastif,
634 const char * minissdpdsock, int sameport, int ipv6, int * error);],
635 [upnpDiscover(1, 0, 0, 0, 0, 0); exit(0);],
636 [--with-libminiupnpc-dir],
641 dnl Make sure to enable support for large off_t if available.
656 , , 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.))
658 dnl These headers are not essential
695 AC_CHECK_HEADERS(sys/param.h)
697 AC_CHECK_HEADERS(net/if.h, net_if_found=1, net_if_found=0,
698 [#ifdef HAVE_SYS_TYPES_H
699 #include <sys/types.h>
701 #ifdef HAVE_SYS_SOCKET_H
702 #include <sys/socket.h>
704 AC_CHECK_HEADERS(net/pfvar.h, net_pfvar_found=1, net_pfvar_found=0,
705 [#ifdef HAVE_SYS_TYPES_H
706 #include <sys/types.h>
708 #ifdef HAVE_SYS_SOCKET_H
709 #include <sys/socket.h>
714 AC_CHECK_HEADERS(linux/netfilter_ipv4.h,
715 linux_netfilter_ipv4=1, linux_netfilter_ipv4=0,
716 [#ifdef HAVE_SYS_TYPES_H
717 #include <sys/types.h>
719 #ifdef HAVE_SYS_SOCKET_H
720 #include <sys/socket.h>
725 #ifdef HAVE_LINUX_TYPES_H
726 #include <linux/types.h>
728 #ifdef HAVE_NETINET_IN6_H
729 #include <netinet/in6.h>
731 #ifdef HAVE_NETINET_IN_H
732 #include <netinet/in.h>
735 if test x$transparent = xtrue ; then
737 if test x$net_if_found = x1 && test x$net_pfvar_found = x1 ; then
740 if test x$linux_netfilter_ipv4 = x1 ; then
743 if test x$transparent_ok = x1 ; then
744 AC_DEFINE(USE_TRANSPARENT, 1, "Define to enable transparent proxy support")
747 AC_DEFINE(OPENBSD, 1, "Define to handle pf on OpenBSD properly") ;;
750 AC_MSG_NOTICE([Transparent proxy support enabled, but missing headers.])
754 AC_CHECK_MEMBERS([struct timeval.tv_sec], , ,
755 [#ifdef HAVE_SYS_TYPES_H
756 #include <sys/types.h>
758 #ifdef HAVE_SYS_TIME_H
759 #include <sys/time.h>
762 dnl In case we aren't given a working stdint.h, we'll need to grow our own.
765 AC_CHECK_SIZEOF(int8_t)
766 AC_CHECK_SIZEOF(int16_t)
767 AC_CHECK_SIZEOF(int32_t)
768 AC_CHECK_SIZEOF(int64_t)
769 AC_CHECK_SIZEOF(uint8_t)
770 AC_CHECK_SIZEOF(uint16_t)
771 AC_CHECK_SIZEOF(uint32_t)
772 AC_CHECK_SIZEOF(uint64_t)
773 AC_CHECK_SIZEOF(intptr_t)
774 AC_CHECK_SIZEOF(uintptr_t)
776 dnl AC_CHECK_TYPES([int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t, intptr_t, uintptr_t])
778 AC_CHECK_SIZEOF(char)
779 AC_CHECK_SIZEOF(short)
781 AC_CHECK_SIZEOF(long)
782 AC_CHECK_SIZEOF(long long)
783 AC_CHECK_SIZEOF(__int64)
784 AC_CHECK_SIZEOF(void *)
785 AC_CHECK_SIZEOF(time_t)
786 AC_CHECK_SIZEOF(size_t)
788 AC_CHECK_TYPES([uint, u_char, ssize_t])
790 dnl used to include sockaddr_storage, but everybody has that.
791 AC_CHECK_TYPES([struct in6_addr, struct sockaddr_in6, sa_family_t], , ,
792 [#ifdef HAVE_SYS_TYPES_H
793 #include <sys/types.h>
795 #ifdef HAVE_NETINET_IN_H
796 #include <netinet/in.h>
798 #ifdef HAVE_NETINET_IN6_H
799 #include <netinet/in6.h>
801 #ifdef HAVE_SYS_SOCKET_H
802 #include <sys/socket.h>
805 #define _WIN32_WINNT 0x0501
806 #define WIN32_LEAN_AND_MEAN
807 #if defined(_MSC_VER) && (_MSC_VER < 1300)
810 #include <winsock2.h>
811 #include <ws2tcpip.h>
815 AC_CHECK_MEMBERS([struct in6_addr.s6_addr32, struct in6_addr.s6_addr16, struct sockaddr_in.sin_len, struct sockaddr_in6.sin6_len], , ,
816 [#ifdef HAVE_SYS_TYPES_H
817 #include <sys/types.h>
819 #ifdef HAVE_NETINET_IN_H
820 #include <netinet/in.h>
822 #ifdef HAVE_NETINET_IN6_H
823 #include <netinet/in6.h>
825 #ifdef HAVE_SYS_SOCKET_H
826 #include <sys/socket.h>
829 #define _WIN32_WINNT 0x0501
830 #define WIN32_LEAN_AND_MEAN
831 #if defined(_MSC_VER) && (_MSC_VER < 1300)
834 #include <winsock2.h>
835 #include <ws2tcpip.h>
840 AC_CHECK_TYPES([rlim_t], , ,
841 [#ifdef HAVE_SYS_TYPES_H
842 #include <sys/types.h>
844 #ifdef HAVE_SYS_TIME_H
845 #include <sys/time.h>
847 #ifdef HAVE_SYS_RESOURCE_H
848 #include <sys/resource.h>
852 AC_CACHE_CHECK([whether time_t is signed], tor_cv_time_t_signed, [
853 AC_RUN_IFELSE([AC_LANG_SOURCE([
854 #ifdef HAVE_SYS_TYPES_H
855 #include <sys/types.h>
857 #ifdef HAVE_SYS_TIME_H
858 #include <sys/time.h>
863 int main(int c, char**v) { if (((time_t)-1)<0) return 1; else return 0; }])],
864 tor_cv_time_t_signed=no, tor_cv_time_t_signed=yes, tor_cv_time_t_signed=cross)
867 if test "$tor_cv_time_t_signed" = cross; then
868 AC_MSG_NOTICE([Cross compiling: assuming that time_t is signed.])
871 if test "$tor_cv_time_t_signed" != no; then
872 AC_DEFINE([TIME_T_IS_SIGNED], 1,
873 [Define to 1 iff time_t is signed])
876 AC_CACHE_CHECK([whether size_t is signed], tor_cv_size_t_signed, [
877 AC_RUN_IFELSE([AC_LANG_SOURCE([
878 #ifdef HAVE_SYS_TYPES_H
879 #include <sys/types.h>
881 int main(int c, char**v) { if (((size_t)-1)<0) return 1; else return 0; }])],
882 tor_cv_size_t_signed=no, tor_cv_size_t_signed=yes, tor_cv_size_t_signed=cross)
885 if test "$tor_cv_size_t_signed" = cross; then
886 AC_MSG_NOTICE([Cross compiling: assuming that size_t is not signed.])
889 if test "$tor_cv_size_t_signed" = yes; then
890 AC_MSG_ERROR([You have a signed size_t; that's grossly nonconformant.])
893 AC_CHECK_SIZEOF(socklen_t, , [AC_INCLUDES_DEFAULT()
894 #ifdef HAVE_SYS_SOCKET_H
895 #include <sys/socket.h>
899 # We want to make sure that we _don't_ have a cell_t defined, like IRIX does.
901 AC_CHECK_SIZEOF(cell_t)
903 # Now make sure that NULL can be represented as zero bytes.
904 AC_CACHE_CHECK([whether memset(0) sets pointers to NULL], tor_cv_null_is_zero,
905 [AC_RUN_IFELSE([AC_LANG_SOURCE(
906 [[#include <stdlib.h>
912 int main () { char *p1,*p2; p1=NULL; memset(&p2,0,sizeof(p2));
913 return memcmp(&p1,&p2,sizeof(char*))?1:0; }]])],
914 [tor_cv_null_is_zero=yes],
915 [tor_cv_null_is_zero=no],
916 [tor_cv_null_is_zero=cross])])
918 if test "$tor_cv_null_is_zero" = cross ; then
919 # Cross-compiling; let's hope that the target isn't raving mad.
920 AC_MSG_NOTICE([Cross-compiling: we'll assume that NULL is represented as a sequence of 0-valued bytes.])
923 if test "$tor_cv_null_is_zero" != no; then
924 AC_DEFINE([NULL_REP_IS_ZERO_BYTES], 1,
925 [Define to 1 iff memset(0) sets pointers to NULL])
928 # And what happens when we malloc zero?
929 AC_CACHE_CHECK([whether we can malloc(0) safely.], tor_cv_malloc_zero_works,
930 [AC_RUN_IFELSE([AC_LANG_SOURCE(
931 [[#include <stdlib.h>
937 int main () { return malloc(0)?0:1; }]])],
938 [tor_cv_malloc_zero_works=yes],
939 [tor_cv_malloc_zero_works=no],
940 [tor_cv_malloc_zero_works=cross])])
942 if test "$tor_cv_malloc_zero_works" = cross; then
943 # Cross-compiling; let's hope that the target isn't raving mad.
944 AC_MSG_NOTICE([Cross-compiling: we'll assume that we need to check malloc() arguments for 0.])
947 if test "$tor_cv_malloc_zero_works" = yes; then
948 AC_DEFINE([MALLOC_ZERO_WORKS], 1,
949 [Define to 1 iff malloc(0) returns a pointer])
952 # whether we seem to be in a 2s-complement world.
953 AC_CACHE_CHECK([whether we are using 2s-complement arithmetic], tor_cv_twos_complement,
954 [AC_RUN_IFELSE([AC_LANG_SOURCE(
955 [[int main () { int problem = ((-99) != (~99)+1);
956 return problem ? 1 : 0; }]])],
957 [tor_cv_twos_complement=yes],
958 [tor_cv_twos_complement=no],
959 [tor_cv_twos_complement=cross])])
961 if test "$tor_cv_twos_complement" = cross ; then
962 # Cross-compiling; let's hope that the target isn't raving mad.
963 AC_MSG_NOTICE([Cross-compiling: we'll assume that negative integers are represented with two's complement.])
966 if test "$tor_cv_twos_complement" != no ; then
967 AC_DEFINE([USING_TWOS_COMPLEMENT], 1,
968 [Define to 1 iff we represent negative integers with two's complement])
971 # What does shifting a negative value do?
972 AC_CACHE_CHECK([whether right-shift on negative values does sign-extension], tor_cv_sign_extend,
973 [AC_RUN_IFELSE([AC_LANG_SOURCE(
974 [[int main () { int okay = (-60 >> 8) == -1; return okay ? 0 : 1; }]])],
975 [tor_cv_sign_extend=yes],
976 [tor_cv_sign_extend=no],
977 [tor_cv_sign_extend=cross])])
979 if test "$tor_cv_sign_extend" = cross ; then
980 # Cross-compiling; let's hope that the target isn't raving mad.
981 AC_MSG_NOTICE([Cross-compiling: we'll assume that right-shifting negative integers causes sign-extension])
984 if test "$tor_cv_sign_extend" != no ; then
985 AC_DEFINE([RSHIFT_DOES_SIGN_EXTEND], 1,
986 [Define to 1 iff right-shifting a negative value performs sign-extension])
989 # Whether we should use the dmalloc memory allocation debugging library.
990 AC_MSG_CHECKING(whether to use dmalloc (debug memory allocation library))
992 [ --with-dmalloc Use debug memory allocation library. ],
993 [if [[ "$withval" = "yes" ]]; then
999 fi], [ dmalloc=0; AC_MSG_RESULT(no) ]
1002 if [[ $dmalloc -eq 1 ]]; then
1003 AC_CHECK_HEADERS(dmalloc.h, , AC_MSG_ERROR(dmalloc header file not found. Do you have the development files for dmalloc installed?))
1004 AC_SEARCH_LIBS(dmalloc_malloc, [dmallocth dmalloc], , AC_MSG_ERROR(Libdmalloc library not found. If you enable it you better have it installed.))
1005 AC_DEFINE(USE_DMALLOC, 1, [Debug memory allocation library])
1006 AC_DEFINE(DMALLOC_FUNC_CHECK, 1, [Enable dmalloc's malloc function check])
1007 AC_CHECK_FUNCS(dmalloc_strdup dmalloc_strndup)
1010 AC_ARG_WITH(tcmalloc,
1011 [ --with-tcmalloc Use tcmalloc memory allocation library. ],
1012 [ tcmalloc=yes ], [ tcmalloc=no ])
1014 if test x$tcmalloc = xyes ; then
1015 LDFLAGS="-ltcmalloc $LDFLAGS"
1018 using_custom_malloc=no
1019 if test x$enable_openbsd_malloc = xyes ; then
1020 using_custom_malloc=yes
1022 if test x$tcmalloc = xyes ; then
1023 using_custom_malloc=yes
1025 if test $using_custom_malloc = no ; then
1026 AC_CHECK_FUNCS(mallinfo)
1029 # By default, we're going to assume we don't have mlockall()
1030 # bionic and other platforms have various broken mlockall subsystems.
1031 # Some systems don't have a working mlockall, some aren't linkable,
1032 # and some have it but don't declare it.
1033 AC_CHECK_FUNCS(mlockall)
1034 AC_CHECK_DECLS([mlockall], , , [
1035 #ifdef HAVE_SYS_MMAN_H
1036 #include <sys/mman.h>
1039 # Allow user to specify an alternate syslog facility
1040 AC_ARG_WITH(syslog-facility,
1041 [ --with-syslog-facility=LOG syslog facility to use (default=LOG_DAEMON)],
1042 syslog_facility="$withval", syslog_facility="LOG_DAEMON")
1043 AC_DEFINE_UNQUOTED(LOGFACILITY,$syslog_facility,[name of the syslog facility])
1044 AC_SUBST(LOGFACILITY)
1046 # Check if we have getresuid and getresgid
1047 AC_CHECK_FUNCS(getresuid getresgid)
1049 # Check for gethostbyname_r in all its glorious incompatible versions.
1050 # (This logic is based on that in Python's configure.in)
1051 AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
1052 [Define this if you have any gethostbyname_r()])
1054 AC_CHECK_FUNC(gethostbyname_r, [
1055 AC_MSG_CHECKING([how many arguments gethostbyname_r() wants])
1057 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
1058 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1062 struct hostent *h1, *h2;
1064 (void)gethostbyname_r(cp1,h1,cp2,i1,&h2,&i2);
1066 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1067 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
1068 [Define this if gethostbyname_r takes 6 arguments])
1077 (void)gethostbyname_r(cp1,h1,cp2,i1,&i2);
1079 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1080 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
1081 [Define this if gethostbyname_r takes 5 arguments])
1089 struct hostent_data hd;
1090 (void) gethostbyname_r(cp1,h1,&hd);
1092 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1093 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
1094 [Define this if gethostbyname_r takes 3 arguments])
1104 AC_CACHE_CHECK([whether the C compiler supports __func__],
1105 tor_cv_have_func_macro,
1106 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1108 int main(int c, char **v) { puts(__func__); }])],
1109 tor_cv_have_func_macro=yes,
1110 tor_cv_have_func_macro=no))
1112 AC_CACHE_CHECK([whether the C compiler supports __FUNC__],
1113 tor_cv_have_FUNC_macro,
1114 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1116 int main(int c, char **v) { puts(__FUNC__); }])],
1117 tor_cv_have_FUNC_macro=yes,
1118 tor_cv_have_FUNC_macro=no))
1120 AC_CACHE_CHECK([whether the C compiler supports __FUNCTION__],
1121 tor_cv_have_FUNCTION_macro,
1122 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1124 int main(int c, char **v) { puts(__FUNCTION__); }])],
1125 tor_cv_have_FUNCTION_macro=yes,
1126 tor_cv_have_FUNCTION_macro=no))
1128 AC_CACHE_CHECK([whether we have extern char **environ already declared],
1129 tor_cv_have_environ_declared,
1130 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1131 /* We define _GNU_SOURCE here because it is also defined in compat.c.
1132 * Without it environ doesn't get declared. */
1134 #ifdef HAVE_UNISTD_H
1138 int main(int c, char **v) { char **t = environ; }])],
1139 tor_cv_have_environ_declared=yes,
1140 tor_cv_have_environ_declared=no))
1142 if test "$tor_cv_have_func_macro" = 'yes'; then
1143 AC_DEFINE(HAVE_MACRO__func__, 1, [Defined if the compiler supports __func__])
1146 if test "$tor_cv_have_FUNC_macro" = 'yes'; then
1147 AC_DEFINE(HAVE_MACRO__FUNC__, 1, [Defined if the compiler supports __FUNC__])
1150 if test "$tor_cv_have_FUNCTION_macro" = 'yes'; then
1151 AC_DEFINE(HAVE_MACRO__FUNCTION__, 1,
1152 [Defined if the compiler supports __FUNCTION__])
1155 if test "$tor_cv_have_environ_declared" = 'yes'; then
1156 AC_DEFINE(HAVE_EXTERN_ENVIRON_DECLARED, 1,
1157 [Defined if we have extern char **environ already declared])
1160 # $prefix stores the value of the --prefix command line option, or
1161 # NONE if the option wasn't set. In the case that it wasn't set, make
1162 # it be the default, so that we can use it to expand directories now.
1163 if test "x$prefix" = "xNONE"; then
1164 prefix=$ac_default_prefix
1167 # and similarly for $exec_prefix
1168 if test "x$exec_prefix" = "xNONE"; then
1172 if test "x$BUILDDIR" = "x"; then
1176 AH_TEMPLATE([BUILDDIR],[tor's build directory])
1177 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
1179 if test "x$CONFDIR" = "x"; then
1180 CONFDIR=`eval echo $sysconfdir/tor`
1183 AH_TEMPLATE([CONFDIR],[tor's configuration directory])
1184 AC_DEFINE_UNQUOTED(CONFDIR,"$CONFDIR")
1186 BINDIR=`eval echo $bindir`
1188 LOCALSTATEDIR=`eval echo $localstatedir`
1189 AC_SUBST(LOCALSTATEDIR)
1191 if test "$bwin32" = true; then
1192 # Test if the linker supports the --nxcompat and --dynamicbase options
1194 save_LDFLAGS="$LDFLAGS"
1195 LDFLAGS="-Wl,--nxcompat -Wl,--dynamicbase"
1196 AC_MSG_CHECKING([whether the linker supports DllCharacteristics])
1197 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1198 [AC_MSG_RESULT([yes])]
1199 [save_LDFLAGS="$save_LDFLAGS $LDFLAGS"],
1200 [AC_MSG_RESULT([no])]
1202 LDFLAGS="$save_LDFLAGS"
1205 # Set CFLAGS _after_ all the above checks, since our warnings are stricter
1206 # than autoconf's macros like.
1207 if test "$GCC" = yes; then
1208 # Disable GCC's strict aliasing checks. They are an hours-to-debug
1209 # accident waiting to happen.
1210 CFLAGS="$CFLAGS -Wall -fno-strict-aliasing"
1212 # Autoconf sets -g -O2 by default. Override optimization level
1213 # for non-gcc compilers
1215 enable_gcc_warnings=no
1216 enable_gcc_warnings_advisory=no
1219 # OS X Lion started deprecating the system openssl. Let's just disable
1220 # all deprecation warnings on OS X. Also, to potentially make the binary
1221 # a little smaller, let's enable dead_strip.
1225 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
1226 LDFLAGS="$LDFLAGS -dead_strip" ;;
1229 # Add some more warnings which we use in development but not in the
1230 # released versions. (Some relevant gcc versions can't handle these.)
1231 if test x$enable_gcc_warnings = xyes || test x$enable_gcc_warnings_advisory = xyes; then
1233 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
1234 #if !defined(__GNUC__) || (__GNUC__ < 4)
1236 #endif])], have_gcc4=yes, have_gcc4=no)
1238 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
1239 #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
1241 #endif])], have_gcc42=yes, have_gcc42=no)
1243 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
1244 #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
1246 #endif])], have_gcc43=yes, have_gcc43=no)
1248 save_CFLAGS="$CFLAGS"
1249 CFLAGS="$CFLAGS -Wshorten-64-to-32"
1250 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], have_shorten64_flag=yes,
1251 have_shorten64_flag=no)
1252 CFLAGS="$save_CFLAGS"
1256 # Some OpenBSD versions (like 4.8) have -Wsystem-headers by default.
1257 # That's fine, except that the headers don't pass -Wredundant-decls.
1258 # Therefore, let's disable -Wsystem-headers when we're building
1259 # with maximal warnings on OpenBSD.
1260 CFLAGS="$CFLAGS -Wno-system-headers" ;;
1263 CFLAGS="$CFLAGS -W -Wfloat-equal -Wundef -Wpointer-arith"
1264 CFLAGS="$CFLAGS -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings"
1265 CFLAGS="$CFLAGS -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat=2"
1266 CFLAGS="$CFLAGS -Wwrite-strings -Wmissing-declarations -Wredundant-decls"
1267 CFLAGS="$CFLAGS -Wnested-externs -Wbad-function-cast -Wswitch-enum"
1269 if test x$enable_gcc_warnings = xyes; then
1270 CFLAGS="$CFLAGS -Werror"
1273 # Disabled, so we can use mallinfo(): -Waggregate-return
1275 if test x$have_gcc4 = xyes ; then
1276 # These warnings break gcc 3.3.5 and work on gcc 4.0.2
1277 CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement -Wold-style-definition"
1280 if test x$have_gcc42 = xyes ; then
1281 # These warnings break gcc 4.0.2 and work on gcc 4.2
1282 # XXXX020 See if any of these work with earlier versions.
1283 CFLAGS="$CFLAGS -Waddress -Wmissing-noreturn -Wstrict-overflow=1"
1285 # We used to use -Wstrict-overflow=5, but that breaks us heavily under 4.3.
1288 if test x$have_gcc42 = xyes && test x$have_clang = xno; then
1289 # These warnings break gcc 4.0.2 and clang, but work on gcc 4.2
1290 CFLAGS="$CFLAGS -Wnormalized=id -Woverride-init"
1293 if test x$have_gcc43 = xyes ; then
1294 # These warnings break gcc 4.2 and work on gcc 4.3
1295 # XXXX020 See if any of these work with earlier versions.
1296 CFLAGS="$CFLAGS -Wextra -Warray-bounds"
1299 if test x$have_shorten64_flag = xyes ; then
1300 CFLAGS="$CFLAGS -Wshorten-64-to-32"
1303 ##This will break the world on some 64-bit architectures
1304 # CFLAGS="$CFLAGS -Winline"
1309 CPPFLAGS="$CPPFLAGS $TOR_CPPFLAGS_libevent $TOR_CPPFLAGS_openssl $TOR_CPPFLAGS_zlib"
1315 contrib/tor.logrotate
1319 src/config/torrc.sample
1324 if test -x /usr/bin/perl && test -x ./contrib/updateVersions.pl ; then
1325 ./contrib/updateVersions.pl