1 dnl Copyright 2000-2007 Niels Provos
2 dnl Copyright 2007-2012 Niels Provos and Nick Mathewson
4 dnl See LICENSE for copying information.
6 dnl Original version Dug Song <dugsong@monkey.org>
8 AC_INIT(libevent,2.1.8-stable)
10 AC_CONFIG_SRCDIR(event.c)
12 AC_CONFIG_MACRO_DIR([m4])
14 dnl AM_SILENT_RULES req. automake 1.11. [no] defaults V=1
15 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
16 AC_CONFIG_HEADERS(config.h evconfig-private.h:evconfig-private.h.in)
17 AC_DEFINE(NUMERIC_VERSION, 0x02010800, [Numeric representation of the version])
19 dnl Initialize prefix.
20 if test "$prefix" = "NONE"; then
24 dnl Try and get a full POSIX environment on obscure systems
25 ifdef([AC_USE_SYSTEM_EXTENSIONS], [
26 AC_USE_SYSTEM_EXTENSIONS
35 dnl the 'build' machine is where we run configure and compile
36 dnl the 'host' machine is where the resulting stuff runs.
41 # CFLAGS="$CFLAGS -D_OSF_SOURCE"
45 dnl Checks for programs.
49 # AC_PROG_MKDIR_P - $(MKDIR_P) should be defined by AM_INIT_AUTOMAKE
51 # AC_PROG_SED is only available in Autoconf >= 2.59b; workaround for older
53 ifdef([AC_PROG_SED], [AC_PROG_SED], [
54 AC_CHECK_PROGS(SED, [gsed sed])
57 AC_PROG_GCC_TRADITIONAL
59 # We need to test for at least gcc 2.95 here, because older versions don't
60 # have -fno-strict-aliasing
61 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
62 #if !defined(__GNUC__) || (__GNUC__ < 2) || (__GNUC__ == 2 && __GNUC_MINOR__ < 95)
64 #endif])], have_gcc295=yes, have_gcc295=no)
66 if test "$GCC" = "yes" ; then
67 # Enable many gcc warnings by default...
68 CFLAGS="$CFLAGS -Wall"
69 # And disable the strict-aliasing optimization, since it breaks
70 # our sockaddr-handling code in strange ways.
71 if test x$have_gcc295 = xyes; then
72 CFLAGS="$CFLAGS -fno-strict-aliasing"
76 # OS X Lion started deprecating the system openssl. Let's just disable
77 # all deprecation warnings on OS X; but do so only for gcc...
78 if test "$GCC" = "yes" ; then
81 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
86 AC_ARG_ENABLE(gcc-warnings,
87 AS_HELP_STRING(--disable-gcc-warnings, disable verbose warnings with GCC))
89 AC_ARG_ENABLE(gcc-hardening,
90 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
91 [if test x$enableval = xyes; then
92 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
93 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
94 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
97 AC_ARG_ENABLE(thread-support,
98 AS_HELP_STRING(--disable-thread-support, disable support for threading),
99 [], [enable_thread_support=yes])
100 AC_ARG_ENABLE(malloc-replacement,
101 AS_HELP_STRING(--disable-malloc-replacement, disable support for replacing the memory mgt functions),
102 [], [enable_malloc_replacement=yes])
103 AC_ARG_ENABLE(openssl,
104 AS_HELP_STRING(--disable-openssl, disable support for openssl encryption),
105 [], [enable_openssl=yes])
106 AC_ARG_ENABLE(debug-mode,
107 AS_HELP_STRING(--disable-debug-mode, disable support for running in debug mode),
108 [], [enable_debug_mode=yes])
109 AC_ARG_ENABLE([libevent-install],
110 AS_HELP_STRING([--disable-libevent-install, disable installation of libevent]),
111 [], [enable_libevent_install=yes])
112 AC_ARG_ENABLE([libevent-regress],
113 AS_HELP_STRING([--disable-libevent-regress, skip regress in make check]),
114 [], [enable_libevent_regress=yes])
115 AC_ARG_ENABLE([samples],
116 AS_HELP_STRING([--disable-samples, skip building of sample programs]),
117 [], [enable_samples=yes])
118 AC_ARG_ENABLE([function-sections],
119 AS_HELP_STRING([--enable-function-sections, make static library allow smaller binaries with --gc-sections]),
120 [], [enable_function_sections=no])
121 AC_ARG_ENABLE([verbose-debug],
122 AS_HELP_STRING([--enable-verbose-debug, verbose debug logging]),
123 [], [enable_verbose_debug=no])
124 AC_ARG_ENABLE([clock-gettime],
125 AS_HELP_STRING(--disable-clock-gettime, do not use clock_gettime even if it is available),
126 [], [enable_clock_gettime=yes])
131 dnl Uncomment "AC_DISABLE_SHARED" to make shared libraries not get
132 dnl built by default. You can also turn shared libs on and off from
133 dnl the command line with --enable-shared and --disable-shared.
134 dnl AC_DISABLE_SHARED
135 AC_SUBST(LIBTOOL_DEPS)
137 AM_CONDITIONAL([BUILD_SAMPLES], [test "$enable_samples" = "yes"])
138 AM_CONDITIONAL([BUILD_REGRESS], [test "$enable_libevent_regress" = "yes"])
140 dnl Checks for libraries.
141 AC_SEARCH_LIBS([inet_ntoa], [nsl])
142 AC_SEARCH_LIBS([socket], [socket])
143 AC_SEARCH_LIBS([inet_aton], [resolv])
144 if test "x$enable_clock_gettime" = "xyes"; then
145 AC_SEARCH_LIBS([clock_gettime], [rt])
146 AC_CHECK_FUNCS([clock_gettime])
148 AC_SEARCH_LIBS([sendfile], [sendfile])
150 dnl - check if the macro _WIN32 is defined on this compiler.
151 dnl - (this is how we check for a windows compiler)
152 AC_MSG_CHECKING(for WIN32)
159 bwin32=true; AC_MSG_RESULT(yes),
160 bwin32=false; AC_MSG_RESULT(no),
163 dnl - check if the macro __CYGWIN__ is defined on this compiler.
164 dnl - (this is how we check for a cygwin version of GCC)
165 AC_MSG_CHECKING(for CYGWIN)
172 cygwin=true; AC_MSG_RESULT(yes),
173 cygwin=false; AC_MSG_RESULT(no),
176 AC_CHECK_HEADERS([zlib.h])
178 if test "x$ac_cv_header_zlib_h" = "xyes"; then
179 dnl Determine if we have zlib for regression tests
180 dnl Don't put this one in LIBS
185 AC_SEARCH_LIBS([inflateEnd], [z],
188 AC_DEFINE(HAVE_LIBZ, 1, [Define if the system has zlib])])
192 AM_CONDITIONAL(ZLIB_REGRESS, [test "$have_zlib" = "yes"])
194 dnl See if we have openssl. This doesn't go in LIBS either.
195 if test "$bwin32" = true; then
202 AC_SUBST(EV_LIB_WS32)
204 AC_SUBST(OPENSSL_LIBADD)
210 dnl Checks for header files.
244 AC_CHECK_HEADERS(sys/sysctl.h, [], [], [
245 #ifdef HAVE_SYS_PARAM_H
246 #include <sys/param.h>
249 if test "x$ac_cv_header_sys_queue_h" = "xyes"; then
250 AC_MSG_CHECKING(for TAILQ_FOREACH in sys/queue.h)
253 #include <sys/queue.h>
257 ], [AC_MSG_RESULT(yes)
258 AC_DEFINE(HAVE_TAILQFOREACH, 1,
259 [Define if TAILQ_FOREACH is defined in <sys/queue.h>])],
264 if test "x$ac_cv_header_sys_time_h" = "xyes"; then
265 AC_MSG_CHECKING(for timeradd in sys/time.h)
268 #include <sys/time.h>
272 ], [ AC_DEFINE(HAVE_TIMERADD, 1,
273 [Define if timeradd is defined in <sys/time.h>])
274 AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
278 if test "x$ac_cv_header_sys_time_h" = "xyes"; then
279 AC_MSG_CHECKING(for timercmp in sys/time.h)
282 #include <sys/time.h>
286 ], [ AC_DEFINE(HAVE_TIMERCMP, 1,
287 [Define if timercmp is defined in <sys/time.h>])
288 AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
292 if test "x$ac_cv_header_sys_time_h" = "xyes"; then
293 AC_MSG_CHECKING(for timerclear in sys/time.h)
296 #include <sys/time.h>
300 ], [ AC_DEFINE(HAVE_TIMERCLEAR, 1,
301 [Define if timerclear is defined in <sys/time.h>])
302 AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
306 if test "x$ac_cv_header_sys_time_h" = "xyes"; then
307 AC_MSG_CHECKING(for timerisset in sys/time.h)
310 #include <sys/time.h>
314 ], [ AC_DEFINE(HAVE_TIMERISSET, 1,
315 [Define if timerisset is defined in <sys/time.h>])
316 AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
320 if test "x$ac_cv_header_sys_sysctl_h" = "xyes"; then
321 AC_CHECK_DECLS([CTL_KERN, KERN_RANDOM, RANDOM_UUID, KERN_ARND], [], [],
322 [[#include <sys/types.h>
323 #include <sys/sysctl.h>]]
327 AM_CONDITIONAL(BUILD_WIN32, test x$bwin32 = xtrue)
328 AM_CONDITIONAL(BUILD_CYGWIN, test x$cygwin = xtrue)
329 AM_CONDITIONAL(BUILD_WITH_NO_UNDEFINED, test x$bwin32 = xtrue || test x$cygwin = xtrue)
331 if test x$bwin32 = xtrue; then
332 AC_SEARCH_LIBS([getservbyname],[ws2_32])
335 dnl Checks for typedefs, structures, and compiler characteristics.
340 dnl Checks for library functions.
381 AM_CONDITIONAL(STRLCPY_IMPL, [test x"$ac_cv_func_strlcpy" = xno])
385 [libevent_cv_getaddrinfo],
397 [libevent_cv_getaddrinfo=yes],
398 [libevent_cv_getaddrinfo=no]
401 if test "$libevent_cv_getaddrinfo" = "yes" ; then
402 AC_DEFINE([HAVE_GETADDRINFO], [1], [Do we have getaddrinfo()?])
405 # Check for gethostbyname_r in all its glorious incompatible versions.
406 # (This is cut-and-pasted from Tor, which based its logic on
407 # Python's configure.in.)
408 AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
409 [Define this if you have any gethostbyname_r()])
411 AC_CHECK_FUNC(gethostbyname_r, [
412 AC_MSG_CHECKING([how many arguments gethostbyname_r() wants])
414 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
415 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
419 struct hostent *h1, *h2;
421 (void)gethostbyname_r(cp1,h1,cp2,i1,&h2,&i2);
423 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
424 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
425 [Define this if gethostbyname_r takes 6 arguments])
434 (void)gethostbyname_r(cp1,h1,cp2,i1,&i2);
436 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
437 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
438 [Define this if gethostbyname_r takes 5 arguments])
446 struct hostent_data hd;
447 (void) gethostbyname_r(cp1,h1,&hd);
449 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
450 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
451 [Define this if gethostbyname_r takes 3 arguments])
463 AC_MSG_CHECKING(for F_SETFD in fcntl.h)
471 ], [ AC_DEFINE(HAVE_SETFD, 1,
472 [Define if F_SETFD is defined in <fcntl.h>])
473 AC_MSG_RESULT(yes) ], AC_MSG_RESULT(no))
477 if test x$bwin32 != xtrue; then
478 AC_CHECK_FUNCS(select, [haveselect=yes], )
479 if test "x$haveselect" = "xyes" ; then
483 AM_CONDITIONAL(SELECT_BACKEND, [test "x$haveselect" = "xyes"])
486 AC_CHECK_FUNCS(poll, [havepoll=yes], )
487 if test "x$havepoll" = "xyes" ; then
490 AM_CONDITIONAL(POLL_BACKEND, [test "x$havepoll" = "xyes"])
493 if test "x$ac_cv_header_sys_devpoll_h" = "xyes"; then
494 AC_DEFINE(HAVE_DEVPOLL, 1,
495 [Define if /dev/poll is available])
497 AM_CONDITIONAL(DEVPOLL_BACKEND, [test "x$ac_cv_header_sys_devpoll_h" = "xyes"])
500 if test "x$ac_cv_header_sys_event_h" = "xyes"; then
501 AC_CHECK_FUNCS(kqueue, [havekqueue=yes], )
502 if test "x$havekqueue" = "xyes" ; then
503 AC_MSG_CHECKING(for working kqueue)
505 #include <sys/types.h>
506 #include <sys/time.h>
507 #include <sys/event.h>
513 main(int argc, char **argv)
524 if (fcntl(fd[[1]], F_SETFL, O_NONBLOCK) == -1)
527 while ((n = write(fd[[1]], buf, sizeof(buf))) == sizeof(buf))
530 if ((kq = kqueue()) == -1)
533 memset(&ev, 0, sizeof(ev));
535 ev.filter = EVFILT_WRITE;
536 ev.flags = EV_ADD | EV_ENABLE;
537 n = kevent(kq, &ev, 1, NULL, 0, NULL);
541 read(fd[[0]], buf, sizeof(buf));
545 n = kevent(kq, NULL, 0, &ev, 1, &ts);
546 if (n == -1 || n == 0)
550 }, [AC_MSG_RESULT(yes)
551 AC_DEFINE(HAVE_WORKING_KQUEUE, 1,
552 [Define if kqueue works correctly with pipes])
554 ], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
557 AM_CONDITIONAL(KQUEUE_BACKEND, [test "x$havekqueue" = "xyes"])
561 AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], )
562 if test "x$haveepoll" = "xyes" ; then
563 AC_DEFINE(HAVE_EPOLL, 1,
564 [Define if your system supports the epoll system calls])
567 if test "x$ac_cv_header_sys_epoll_h" = "xyes"; then
568 if test "x$haveepoll" = "xno" ; then
569 AC_MSG_CHECKING(for epoll system call)
572 #include <sys/param.h>
573 #include <sys/types.h>
574 #include <sys/syscall.h>
575 #include <sys/epoll.h>
579 epoll_create(int size)
581 return (syscall(__NR_epoll_create, size));
585 main(int argc, char **argv)
589 epfd = epoll_create(256);
590 exit (epfd == -1 ? 1 : 0);
591 }, [AC_MSG_RESULT(yes)
592 AC_DEFINE(HAVE_EPOLL, 1,
593 [Define if your system supports the epoll system calls])
597 ], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
600 AM_CONDITIONAL(EPOLL_BACKEND, [test "x$haveepoll" = "xyes"])
602 AC_MSG_CHECKING(waitpid support WNOWAIT)
605 #include <sys/types.h>
606 #include <sys/wait.h>
610 main(int argc, char** argv)
614 if ((pid = fork()) == 0) _exit(0);
615 _exit(waitpid(pid, &status, WNOWAIT) == -1);
616 }, [AC_MSG_RESULT(yes)
617 AC_DEFINE(HAVE_WAITPID_WITH_WNOWAIT, 1,
618 [Define if waitpid() supports WNOWAIT])
619 ], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
623 AC_CHECK_FUNCS(port_create, [haveeventports=yes], )
624 if test "x$haveeventports" = "xyes" ; then
625 AC_DEFINE(HAVE_EVENT_PORTS, 1,
626 [Define if your system supports event ports])
629 AM_CONDITIONAL(EVPORT_BACKEND, [test "x$haveeventports" = "xyes"])
631 if test "x$bwin32" = "xtrue"; then
635 AM_CONDITIONAL(SIGNAL_SUPPORT, [test "x$needsignal" = "xyes"])
641 AC_CHECK_TYPES([uint64_t, uint32_t, uint16_t, uint8_t, uintptr_t], , ,
642 [#ifdef HAVE_STDINT_H
644 #elif defined(HAVE_INTTYPES_H)
645 #include <inttypes.h>
647 #ifdef HAVE_SYS_TYPES_H
648 #include <sys/types.h>
651 AC_CHECK_TYPES([fd_mask], , ,
652 [#ifdef HAVE_SYS_TYPES_H
653 #include <sys/types.h>
655 #ifdef HAVE_SYS_SELECT_H
656 #include <sys/select.h>
659 AC_CHECK_SIZEOF(long long)
660 AC_CHECK_SIZEOF(long)
662 AC_CHECK_SIZEOF(short)
663 AC_CHECK_SIZEOF(size_t)
664 AC_CHECK_SIZEOF(void *)
665 AC_CHECK_SIZEOF(off_t)
667 AC_CHECK_TYPES([struct in6_addr, struct sockaddr_in6, sa_family_t, struct addrinfo, struct sockaddr_storage], , ,
669 #include <sys/types.h>
670 #ifdef HAVE_NETINET_IN_H
671 #include <netinet/in.h>
673 #ifdef HAVE_NETINET_IN6_H
674 #include <netinet/in6.h>
676 #ifdef HAVE_SYS_SOCKET_H
677 #include <sys/socket.h>
683 #define WIN32_WINNT 0x400
684 #define _WIN32_WINNT 0x400
685 #define WIN32_LEAN_AND_MEAN
686 #if defined(_MSC_VER) && (_MSC_VER < 1300)
689 #include <winsock2.h>
690 #include <ws2tcpip.h>
694 AC_CHECK_MEMBERS([struct in6_addr.s6_addr32, struct in6_addr.s6_addr16, struct sockaddr_in.sin_len, struct sockaddr_in6.sin6_len, struct sockaddr_storage.ss_family, struct sockaddr_storage.__ss_family], , ,
695 [#include <sys/types.h>
696 #ifdef HAVE_NETINET_IN_H
697 #include <netinet/in.h>
699 #ifdef HAVE_NETINET_IN6_H
700 #include <netinet/in6.h>
702 #ifdef HAVE_SYS_SOCKET_H
703 #include <sys/socket.h>
706 #define WIN32_WINNT 0x400
707 #define _WIN32_WINNT 0x400
708 #define WIN32_LEAN_AND_MEAN
709 #if defined(_MSC_VER) && (_MSC_VER < 1300)
712 #include <winsock2.h>
713 #include <ws2tcpip.h>
718 AC_CHECK_TYPES([struct so_linger],
719 [#define HAVE_SO_LINGER], ,
721 #ifdef HAVE_SYS_SOCKET_H
722 #include <sys/socket.h>
726 AC_MSG_CHECKING([for socklen_t])
728 #include <sys/types.h>
729 #include <sys/socket.h>],
731 AC_MSG_RESULT([yes]),
733 AC_DEFINE(socklen_t, unsigned int,
734 [Define to unsigned int if you dont have it])]
737 AC_MSG_CHECKING([whether our compiler supports __func__])
739 [ const char *cp = __func__; ],
740 AC_MSG_RESULT([yes]),
742 AC_MSG_CHECKING([whether our compiler supports __FUNCTION__])
744 [ const char *cp = __FUNCTION__; ],
746 AC_DEFINE(__func__, __FUNCTION__,
747 [Define to appropriate substitue if compiler doesnt have __func__]),
749 AC_DEFINE(__func__, __FILE__,
750 [Define to appropriate substitue if compiler doesnt have __func__])))
753 # check if we can compile with pthreads
755 if test x$bwin32 != xtrue && test "$enable_thread_support" != "no"; then
757 AC_DEFINE(HAVE_PTHREADS, 1,
758 [Define if we have pthreads on this system])
760 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
761 AC_CHECK_SIZEOF(pthread_t, ,
762 [AC_INCLUDES_DEFAULT()
763 #include <pthread.h> ]
766 AM_CONDITIONAL(THREADS, [test "$enable_thread_support" != "no"])
767 AM_CONDITIONAL(PTHREADS, [test "$have_pthreads" != "no" && test "$enable_thread_support" != "no"])
769 # check if we should compile locking into the library
770 if test x$enable_thread_support = xno; then
771 AC_DEFINE(DISABLE_THREAD_SUPPORT, 1,
772 [Define if libevent should not be compiled with thread support])
775 # check if we should hard-code the mm functions.
776 if test x$enable_malloc_replacement = xno; then
777 AC_DEFINE(DISABLE_MM_REPLACEMENT, 1,
778 [Define if libevent should not allow replacing the mm functions])
781 # check if we should hard-code debugging out
782 if test x$enable_debug_mode = xno; then
783 AC_DEFINE(DISABLE_DEBUG_MODE, 1,
784 [Define if libevent should build without support for a debug mode])
787 # check if we should enable verbose debugging
788 if test x$enable_verbose_debug = xyes; then
789 CFLAGS="$CFLAGS -DUSE_DEBUG"
792 # check if we have and should use openssl
793 AM_CONDITIONAL(OPENSSL, [test "$enable_openssl" != "no" && test "$have_openssl" = "yes"])
794 if test "x$enable_openssl" = "xyes"; then
795 AC_SEARCH_LIBS([ERR_remove_thread_state], [crypto eay32],
796 [AC_DEFINE(HAVE_ERR_REMOVE_THREAD_STATE, 1, [Define to 1 if you have ERR_remove_thread_stat().])])
799 # Add some more warnings which we use in development but not in the
800 # released versions. (Some relevant gcc versions can't handle these.)
801 if test x$enable_gcc_warnings != xno && test "$GCC" = "yes"; then
803 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
804 #if !defined(__GNUC__) || (__GNUC__ < 4)
806 #endif])], have_gcc4=yes, have_gcc4=no)
808 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
809 #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
811 #endif])], have_gcc42=yes, have_gcc42=no)
813 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
814 #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
816 #endif])], have_gcc45=yes, have_gcc45=no)
818 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
819 #if !defined(__clang__)
821 #endif])], have_clang=yes, have_clang=no)
823 CFLAGS="$CFLAGS -W -Wfloat-equal -Wundef -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wmissing-declarations -Wredundant-decls -Wnested-externs -Wbad-function-cast -Wswitch"
824 if test x$enable_gcc_warnings = xyes; then
825 CFLAGS="$CFLAGS -Werror"
828 CFLAGS="$CFLAGS -Wno-unused-parameter -Wstrict-aliasing"
830 if test x$have_gcc4 = xyes ; then
831 # These warnings break gcc 3.3.5 and work on gcc 4.0.2
832 CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement"
833 #CFLAGS="$CFLAGS -Wold-style-definition"
836 if test x$have_gcc42 = xyes ; then
837 # These warnings break gcc 4.0.2 and work on gcc 4.2
838 CFLAGS="$CFLAGS -Waddress"
841 if test x$have_gcc42 = xyes && test x$have_clang = xno; then
842 # These warnings break gcc 4.0.2 and clang, but work on gcc 4.2
843 CFLAGS="$CFLAGS -Wnormalized=id -Woverride-init"
846 if test x$have_gcc45 = xyes ; then
847 # These warnings work on gcc 4.5
848 CFLAGS="$CFLAGS -Wlogical-op"
851 if test x$have_clang = xyes; then
852 # Disable the unused-function warnings, because these trigger
853 # for minheap-internal.h related code.
854 CFLAGS="$CFLAGS -Wno-unused-function"
856 # clang on macosx emits warnigns for each directory specified which
857 # isn't "used" generating a lot of build noise (typically 3 warnings
861 CFLAGS="$CFLAGS -Qunused-arguments"
866 ##This will break the world on some 64-bit architectures
867 # CFLAGS="$CFLAGS -Winline"
871 LIBEVENT_GC_SECTIONS=
872 if test "$GCC" = yes && test "$enable_function_sections" = yes ; then
874 [if linker supports omitting unused code and data],
875 [libevent_cv_gc_sections_runs],
877 dnl NetBSD will link but likely not run with --gc-sections
878 dnl http://bugs.ntp.org/1844
879 dnl http://gnats.netbsd.org/40401
880 dnl --gc-sections causes attempt to load as linux elf, with
881 dnl wrong syscalls in place. Test a little gauntlet of
882 dnl simple stdio read code checking for errors, expecting
883 dnl enough syscall differences that the NetBSD code will
884 dnl fail even with Linux emulation working as designed.
885 dnl A shorter test could be refined by someone with access
886 dnl to a NetBSD host with Linux emulation working.
888 CFLAGS="$CFLAGS -Wl,--gc-sections"
899 int read_success_once;
901 fpC = fopen("conftest.c", "r");
905 cch = fread(buf, sizeof(buf), 1, fpC);
906 read_success_once |= (0 != cch);
908 if (!read_success_once)
912 if (0 != fclose(fpC))
919 dnl We have to do this invocation manually so that we can
920 dnl get the output of conftest.err to make sure it doesn't
921 dnl mention gc-sections.
922 if test "X$cross_compiling" = "Xyes" || grep gc-sections conftest.err ; then
923 libevent_cv_gc_sections_runs=no
925 libevent_cv_gc_sections_runs=no
926 ./conftest >/dev/null 2>&1 && libevent_cv_gc_sections_runs=yes
929 [libevent_cv_gc_sections_runs=no]
932 AS_UNSET([origCFLAGS])
935 case "$libevent_cv_gc_sections_runs" in
937 CFLAGS="-ffunction-sections -fdata-sections $CFLAGS"
938 LIBEVENT_GC_SECTIONS="-Wl,--gc-sections"
942 AC_SUBST([LIBEVENT_GC_SECTIONS])
944 AM_CONDITIONAL([INSTALL_LIBEVENT], [test "$enable_libevent_install" = "yes"])
946 AC_CONFIG_FILES( [libevent.pc libevent_openssl.pc libevent_pthreads.pc libevent_core.pc libevent_extra.pc] )