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.10-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, 0x02010a00, [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 __midipix__ is defined on this compiler.
164 dnl - (this is how we check for a midipix version of GCC)
165 AC_MSG_CHECKING(for MIDIPIX)
172 midipix=true; AC_MSG_RESULT(yes),
173 midipix=false; AC_MSG_RESULT(no),
176 dnl - check if the macro __CYGWIN__ is defined on this compiler.
177 dnl - (this is how we check for a cygwin version of GCC)
178 AC_MSG_CHECKING(for CYGWIN)
185 cygwin=true; AC_MSG_RESULT(yes),
186 cygwin=false; AC_MSG_RESULT(no),
189 AC_CHECK_HEADERS([zlib.h])
191 if test "x$ac_cv_header_zlib_h" = "xyes"; then
192 dnl Determine if we have zlib for regression tests
193 dnl Don't put this one in LIBS
198 AC_SEARCH_LIBS([inflateEnd], [z],
201 AC_DEFINE(HAVE_LIBZ, 1, [Define if the system has zlib])])
205 AM_CONDITIONAL(ZLIB_REGRESS, [test "$have_zlib" = "yes"])
207 dnl See if we have openssl. This doesn't go in LIBS either.
208 if test "$bwin32" = true; then
215 AC_SUBST(EV_LIB_WS32)
217 AC_SUBST(OPENSSL_LIBADD)
223 dnl Checks for header files.
258 AC_CHECK_HEADERS(sys/sysctl.h, [], [], [
259 #ifdef HAVE_SYS_PARAM_H
260 #include <sys/param.h>
263 if test "x$ac_cv_header_sys_queue_h" = "xyes"; then
264 AC_MSG_CHECKING(for TAILQ_FOREACH in sys/queue.h)
267 #include <sys/queue.h>
271 ], [AC_MSG_RESULT(yes)
272 AC_DEFINE(HAVE_TAILQFOREACH, 1,
273 [Define if TAILQ_FOREACH is defined in <sys/queue.h>])],
278 if test "x$ac_cv_header_sys_time_h" = "xyes"; then
279 AC_MSG_CHECKING(for timeradd in sys/time.h)
282 #include <sys/time.h>
286 ], [ AC_DEFINE(HAVE_TIMERADD, 1,
287 [Define if timeradd 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 timercmp in sys/time.h)
296 #include <sys/time.h>
300 ], [ AC_DEFINE(HAVE_TIMERCMP, 1,
301 [Define if timercmp 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 timerclear in sys/time.h)
310 #include <sys/time.h>
314 ], [ AC_DEFINE(HAVE_TIMERCLEAR, 1,
315 [Define if timerclear is defined in <sys/time.h>])
316 AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
320 if test "x$ac_cv_header_sys_time_h" = "xyes"; then
321 AC_MSG_CHECKING(for timerisset in sys/time.h)
324 #include <sys/time.h>
328 ], [ AC_DEFINE(HAVE_TIMERISSET, 1,
329 [Define if timerisset is defined in <sys/time.h>])
330 AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
334 if test "x$ac_cv_header_sys_sysctl_h" = "xyes"; then
335 AC_CHECK_DECLS([CTL_KERN, KERN_RANDOM, RANDOM_UUID, KERN_ARND], [], [],
336 [[#include <sys/types.h>
337 #include <sys/sysctl.h>]]
341 AM_CONDITIONAL(BUILD_WIN32, test x$bwin32 = xtrue)
342 AM_CONDITIONAL(BUILD_CYGWIN, test x$cygwin = xtrue)
343 AM_CONDITIONAL(BUILD_MIDIPIX, test x$midipix = xtrue)
344 AM_CONDITIONAL(BUILD_WITH_NO_UNDEFINED, test x$bwin32 = xtrue || test x$cygwin = xtrue || test x$midipix = xtrue)
346 if test x$bwin32 = xtrue; then
347 AC_SEARCH_LIBS([getservbyname],[ws2_32])
350 dnl Checks for typedefs, structures, and compiler characteristics.
355 dnl Checks for library functions.
360 arc4random_addrandom \
397 AM_CONDITIONAL(STRLCPY_IMPL, [test x"$ac_cv_func_strlcpy" = xno])
401 [libevent_cv_getaddrinfo],
413 [libevent_cv_getaddrinfo=yes],
414 [libevent_cv_getaddrinfo=no]
417 if test "$libevent_cv_getaddrinfo" = "yes" ; then
418 AC_DEFINE([HAVE_GETADDRINFO], [1], [Do we have getaddrinfo()?])
421 # Check for gethostbyname_r in all its glorious incompatible versions.
422 # (This is cut-and-pasted from Tor, which based its logic on
423 # Python's configure.in.)
424 AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
425 [Define this if you have any gethostbyname_r()])
427 AC_CHECK_FUNC(gethostbyname_r, [
428 AC_MSG_CHECKING([how many arguments gethostbyname_r() wants])
430 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
431 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
435 struct hostent *h1, *h2;
437 (void)gethostbyname_r(cp1,h1,cp2,i1,&h2,&i2);
439 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
440 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
441 [Define this if gethostbyname_r takes 6 arguments])
450 (void)gethostbyname_r(cp1,h1,cp2,i1,&i2);
452 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
453 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
454 [Define this if gethostbyname_r takes 5 arguments])
462 struct hostent_data hd;
463 (void) gethostbyname_r(cp1,h1,&hd);
465 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
466 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
467 [Define this if gethostbyname_r takes 3 arguments])
479 AC_MSG_CHECKING(for F_SETFD in fcntl.h)
482 #define _GNU_SOURCE 1
487 ], [ AC_DEFINE(HAVE_SETFD, 1,
488 [Define if F_SETFD is defined in <fcntl.h>])
489 AC_MSG_RESULT(yes) ], AC_MSG_RESULT(no))
493 if test x$bwin32 != xtrue; then
494 AC_CHECK_FUNCS(select, [haveselect=yes], )
495 if test "x$haveselect" = "xyes" ; then
499 AM_CONDITIONAL(SELECT_BACKEND, [test "x$haveselect" = "xyes"])
502 AC_CHECK_FUNCS(poll, [havepoll=yes], )
503 if test "x$havepoll" = "xyes" ; then
506 AM_CONDITIONAL(POLL_BACKEND, [test "x$havepoll" = "xyes"])
509 if test "x$ac_cv_header_sys_devpoll_h" = "xyes"; then
510 AC_DEFINE(HAVE_DEVPOLL, 1,
511 [Define if /dev/poll is available])
513 AM_CONDITIONAL(DEVPOLL_BACKEND, [test "x$ac_cv_header_sys_devpoll_h" = "xyes"])
516 if test "x$ac_cv_header_sys_event_h" = "xyes"; then
517 AC_CHECK_FUNCS(kqueue, [havekqueue=yes], )
518 if test "x$havekqueue" = "xyes" ; then
519 AC_MSG_CHECKING(for working kqueue)
527 #include <sys/types.h>
528 #include <sys/time.h>
529 #include <sys/event.h>
535 main(int argc, char **argv)
546 if (fcntl(fd[[1]], F_SETFL, O_NONBLOCK) == -1)
549 while ((n = write(fd[[1]], buf, sizeof(buf))) == sizeof(buf))
552 if ((kq = kqueue()) == -1)
555 memset(&ev, 0, sizeof(ev));
557 ev.filter = EVFILT_WRITE;
558 ev.flags = EV_ADD | EV_ENABLE;
559 n = kevent(kq, &ev, 1, NULL, 0, NULL);
563 read(fd[[0]], buf, sizeof(buf));
567 n = kevent(kq, NULL, 0, &ev, 1, &ts);
568 if (n == -1 || n == 0)
572 }, [AC_MSG_RESULT(yes)
573 AC_DEFINE(HAVE_WORKING_KQUEUE, 1,
574 [Define if kqueue works correctly with pipes])
576 ], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
579 AM_CONDITIONAL(KQUEUE_BACKEND, [test "x$havekqueue" = "xyes"])
583 AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], )
584 if test "x$haveepoll" = "xyes" ; then
585 AC_DEFINE(HAVE_EPOLL, 1,
586 [Define if your system supports the epoll system calls])
589 if test "x$ac_cv_header_sys_epoll_h" = "xyes"; then
590 if test "x$haveepoll" = "xno" ; then
591 AC_MSG_CHECKING(for epoll system call)
594 #include <sys/param.h>
595 #include <sys/types.h>
596 #include <sys/syscall.h>
597 #include <sys/epoll.h>
601 epoll_create(int size)
603 return (syscall(__NR_epoll_create, size));
607 main(int argc, char **argv)
611 epfd = epoll_create(256);
612 exit (epfd == -1 ? 1 : 0);
613 }, [AC_MSG_RESULT(yes)
614 AC_DEFINE(HAVE_EPOLL, 1,
615 [Define if your system supports the epoll system calls])
619 ], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
622 AM_CONDITIONAL(EPOLL_BACKEND, [test "x$haveepoll" = "xyes"])
625 AC_CHECK_FUNCS(port_create, [haveeventports=yes], )
626 if test "x$haveeventports" = "xyes" ; then
627 AC_DEFINE(HAVE_EVENT_PORTS, 1,
628 [Define if your system supports event ports])
631 AM_CONDITIONAL(EVPORT_BACKEND, [test "x$haveeventports" = "xyes"])
633 if test "x$bwin32" = "xtrue"; then
637 AM_CONDITIONAL(SIGNAL_SUPPORT, [test "x$needsignal" = "xyes"])
643 AC_CHECK_TYPES([uint64_t, uint32_t, uint16_t, uint8_t, uintptr_t], , ,
644 [#ifdef HAVE_STDINT_H
646 #elif defined(HAVE_INTTYPES_H)
647 #include <inttypes.h>
649 #ifdef HAVE_SYS_TYPES_H
650 #include <sys/types.h>
653 AC_CHECK_TYPES([fd_mask], , ,
654 [#ifdef HAVE_SYS_TYPES_H
655 #include <sys/types.h>
657 #ifdef HAVE_SYS_SELECT_H
658 #include <sys/select.h>
661 AC_CHECK_SIZEOF(long long)
662 AC_CHECK_SIZEOF(long)
664 AC_CHECK_SIZEOF(short)
665 AC_CHECK_SIZEOF(size_t)
666 AC_CHECK_SIZEOF(void *)
667 AC_CHECK_SIZEOF(off_t)
668 AC_CHECK_SIZEOF(time_t)
670 AC_CHECK_TYPES([struct in6_addr, struct sockaddr_in6, struct sockaddr_un, sa_family_t, struct addrinfo, struct sockaddr_storage], , ,
671 [#define _GNU_SOURCE 1
672 #include <sys/types.h>
673 #ifdef HAVE_NETINET_IN_H
674 #include <netinet/in.h>
676 #ifdef HAVE_NETINET_IN6_H
677 #include <netinet/in6.h>
682 #ifdef HAVE_SYS_SOCKET_H
683 #include <sys/socket.h>
689 #define WIN32_WINNT 0x400
690 #define _WIN32_WINNT 0x400
691 #define WIN32_LEAN_AND_MEAN
692 #if defined(_MSC_VER) && (_MSC_VER < 1300)
695 #include <winsock2.h>
696 #include <ws2tcpip.h>
700 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], , ,
701 [#include <sys/types.h>
702 #ifdef HAVE_NETINET_IN_H
703 #include <netinet/in.h>
705 #ifdef HAVE_NETINET_IN6_H
706 #include <netinet/in6.h>
708 #ifdef HAVE_SYS_SOCKET_H
709 #include <sys/socket.h>
712 #define WIN32_WINNT 0x400
713 #define _WIN32_WINNT 0x400
714 #define WIN32_LEAN_AND_MEAN
715 #if defined(_MSC_VER) && (_MSC_VER < 1300)
718 #include <winsock2.h>
719 #include <ws2tcpip.h>
724 AC_CHECK_TYPES([struct linger],,,
726 #ifdef HAVE_SYS_SOCKET_H
727 #include <sys/socket.h>
731 AC_MSG_CHECKING([for socklen_t])
733 #include <sys/types.h>
735 #include <ws2tcpip.h>
737 #include <sys/socket.h>
740 AC_MSG_RESULT([yes]),
742 AC_DEFINE(socklen_t, unsigned int,
743 [Define to unsigned int if you dont have it])]
746 # __func__/__FUNCTION__ is not a macros in general
747 AC_MSG_CHECKING([whether our compiler supports __func__])
749 [ const char *cp = __func__; ],
750 [ AC_DEFINE(HAVE___func__, 1, [Define to 1 if compiler have __func__])
755 AC_MSG_CHECKING([whether our compiler supports __FUNCTION__])
757 [ const char *cp = __FUNCTION__; ],
758 [ AC_DEFINE(HAVE___FUNCTION__, 1, [Define to 1 if compiler have __FUNCTION__])
764 # check if we can compile with pthreads
766 if test x$bwin32 != xtrue && test "$enable_thread_support" != "no"; then
768 AC_DEFINE(HAVE_PTHREADS, 1,
769 [Define if we have pthreads on this system])
771 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
772 AC_CHECK_SIZEOF(pthread_t, ,
773 [AC_INCLUDES_DEFAULT()
774 #include <pthread.h> ]
777 AM_CONDITIONAL(THREADS, [test "$enable_thread_support" != "no"])
778 AM_CONDITIONAL(PTHREADS, [test "$have_pthreads" != "no" && test "$enable_thread_support" != "no"])
780 # check if we should compile locking into the library
781 if test x$enable_thread_support = xno; then
782 AC_DEFINE(DISABLE_THREAD_SUPPORT, 1,
783 [Define if libevent should not be compiled with thread support])
786 # check if we should hard-code the mm functions.
787 if test x$enable_malloc_replacement = xno; then
788 AC_DEFINE(DISABLE_MM_REPLACEMENT, 1,
789 [Define if libevent should not allow replacing the mm functions])
792 # check if we should hard-code debugging out
793 if test x$enable_debug_mode = xno; then
794 AC_DEFINE(DISABLE_DEBUG_MODE, 1,
795 [Define if libevent should build without support for a debug mode])
798 # check if we should enable verbose debugging
799 if test x$enable_verbose_debug = xyes; then
800 CFLAGS="$CFLAGS -DUSE_DEBUG"
803 # check if we have and should use openssl
804 AM_CONDITIONAL(OPENSSL, [test "$enable_openssl" != "no" && test "$have_openssl" = "yes"])
806 # Add some more warnings which we use in development but not in the
807 # released versions. (Some relevant gcc versions can't handle these.)
808 if test x$enable_gcc_warnings != xno && test "$GCC" = "yes"; then
810 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
811 #if !defined(__GNUC__) || (__GNUC__ < 4)
813 #endif])], have_gcc4=yes, have_gcc4=no)
815 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
816 #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
818 #endif])], have_gcc42=yes, have_gcc42=no)
820 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
821 #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
823 #endif])], have_gcc45=yes, have_gcc45=no)
825 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
826 #if !defined(__clang__)
828 #endif])], have_clang=yes, have_clang=no)
830 # -W is the same as -Wextra
831 CFLAGS="$CFLAGS -W -Wfloat-equal -Wundef -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wmissing-declarations -Wredundant-decls -Wnested-externs -Wbad-function-cast"
832 if test x$enable_gcc_warnings = xyes; then
833 CFLAGS="$CFLAGS -Werror"
836 CFLAGS="$CFLAGS -Wno-unused-parameter -Wstrict-aliasing"
838 if test x$have_gcc4 = xyes ; then
839 # These warnings break gcc 3.3.5 and work on gcc 4.0.2
840 CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement"
841 #CFLAGS="$CFLAGS -Wold-style-definition"
844 if test x$have_gcc42 = xyes ; then
845 # These warnings break gcc 4.0.2 and work on gcc 4.2
846 CFLAGS="$CFLAGS -Waddress"
849 if test x$have_gcc42 = xyes && test x$have_clang = xno; then
850 # These warnings break gcc 4.0.2 and clang, but work on gcc 4.2
851 CFLAGS="$CFLAGS -Wnormalized=id -Woverride-init"
854 if test x$have_gcc45 = xyes ; then
855 # These warnings work on gcc 4.5
856 CFLAGS="$CFLAGS -Wlogical-op"
859 if test x$have_clang = xyes; then
860 # Disable the unused-function warnings, because these trigger
861 # for minheap-internal.h related code.
862 CFLAGS="$CFLAGS -Wno-unused-function"
864 # clang on macosx emits warnings for each directory specified which
865 # isn't "used" generating a lot of build noise (typically 3 warnings
869 CFLAGS="$CFLAGS -Qunused-arguments"
874 ##This will break the world on some 64-bit architectures
875 # CFLAGS="$CFLAGS -Winline"
879 LIBEVENT_GC_SECTIONS=
880 if test "$GCC" = yes && test "$enable_function_sections" = yes ; then
882 [if linker supports omitting unused code and data],
883 [libevent_cv_gc_sections_runs],
885 dnl NetBSD will link but likely not run with --gc-sections
886 dnl http://bugs.ntp.org/1844
887 dnl http://gnats.netbsd.org/40401
888 dnl --gc-sections causes attempt to load as linux elf, with
889 dnl wrong syscalls in place. Test a little gauntlet of
890 dnl simple stdio read code checking for errors, expecting
891 dnl enough syscall differences that the NetBSD code will
892 dnl fail even with Linux emulation working as designed.
893 dnl A shorter test could be refined by someone with access
894 dnl to a NetBSD host with Linux emulation working.
896 CFLAGS="$CFLAGS -Wl,--gc-sections"
907 int read_success_once;
909 fpC = fopen("conftest.c", "r");
913 cch = fread(buf, sizeof(buf), 1, fpC);
914 read_success_once |= (0 != cch);
916 if (!read_success_once)
920 if (0 != fclose(fpC))
927 dnl We have to do this invocation manually so that we can
928 dnl get the output of conftest.err to make sure it doesn't
929 dnl mention gc-sections.
930 if test "X$cross_compiling" = "Xyes" || grep gc-sections conftest.err ; then
931 libevent_cv_gc_sections_runs=no
933 libevent_cv_gc_sections_runs=no
934 ./conftest >/dev/null 2>&1 && libevent_cv_gc_sections_runs=yes
937 [libevent_cv_gc_sections_runs=no]
940 AS_UNSET([origCFLAGS])
943 case "$libevent_cv_gc_sections_runs" in
945 CFLAGS="-ffunction-sections -fdata-sections $CFLAGS"
946 LIBEVENT_GC_SECTIONS="-Wl,--gc-sections"
950 AC_SUBST([LIBEVENT_GC_SECTIONS])
952 AM_CONDITIONAL([INSTALL_LIBEVENT], [test "$enable_libevent_install" = "yes"])
954 AC_CONFIG_FILES( [libevent.pc libevent_openssl.pc libevent_pthreads.pc libevent_core.pc libevent_extra.pc] )