Annotation of embedaddon/libevent/configure.in, revision 1.1

1.1     ! misho       1: dnl configure.in for libevent
        !             2: dnl Dug Song <dugsong@monkey.org>
        !             3: AC_INIT(event.c)
        !             4: 
        !             5: AM_INIT_AUTOMAKE(libevent,1.4.14b-stable)
        !             6: AM_CONFIG_HEADER(config.h)
        !             7: dnl AM_MAINTAINER_MODE
        !             8: 
        !             9: AC_CANONICAL_HOST
        !            10: 
        !            11: AC_DEFINE(NUMERIC_VERSION, 0x01040e00, [Numeric representation of the version])
        !            12: 
        !            13: dnl Initialize prefix.
        !            14: if test "$prefix" = "NONE"; then
        !            15:    prefix="/usr/local"
        !            16: fi
        !            17: 
        !            18: dnl Checks for programs.
        !            19: AC_PROG_CC
        !            20: AC_PROG_INSTALL
        !            21: AC_PROG_LN_S
        !            22: 
        !            23: AC_PROG_GCC_TRADITIONAL
        !            24: if test "$GCC" = yes ; then
        !            25:         CFLAGS="$CFLAGS -Wall"
        !            26:         # And disable the strict-aliasing optimization, since it breaks
        !            27:         # our sockaddr-handling code in strange ways.
        !            28:         CFLAGS="$CFLAGS -fno-strict-aliasing"
        !            29: fi
        !            30: 
        !            31: dnl Libevent 1.4 isn't multithreaded, but some of its functions are
        !            32: dnl documented to be reentrant.  If you don't define the right macros
        !            33: dnl on some platforms, you get non-reentrant versions of the libc
        !            34: dnl functinos (like an errno that's shared by all threads).
        !            35: AC_MSG_CHECKING([whether we need extra flags to make libc reentrant])
        !            36: case $host in
        !            37:    *solaris* | *-osf* | *-hpux* )
        !            38:      AC_MSG_RESULT([-D_REENTRANT])
        !            39:      CFLAGS="$CFLAGS -D_REENTRANT"
        !            40:      ;;
        !            41:    *-aix* | *-freebsd* | *-darwin* )
        !            42:      AC_MSG_RESULT([-D_THREAD_SAFE])
        !            43:      CFLAGS="$CFLAGS -D_THREAD_SAFE"
        !            44:      ;;
        !            45:    *)
        !            46:      AC_MSG_RESULT(no)
        !            47:      ;;
        !            48: esac
        !            49: 
        !            50: AC_ARG_ENABLE(gcc-warnings,
        !            51:      AS_HELP_STRING(--enable-gcc-warnings, enable verbose warnings with GCC))
        !            52: 
        !            53: AC_PROG_LIBTOOL
        !            54: 
        !            55: dnl   Uncomment "AC_DISABLE_SHARED" to make shared librraries not get
        !            56: dnl   built by default.  You can also turn shared libs on and off from 
        !            57: dnl   the command line with --enable-shared and --disable-shared.
        !            58: dnl AC_DISABLE_SHARED
        !            59: AC_SUBST(LIBTOOL_DEPS)
        !            60: 
        !            61: dnl Checks for libraries.
        !            62: AC_CHECK_LIB(socket, socket)
        !            63: AC_CHECK_LIB(resolv, inet_aton)
        !            64: AC_CHECK_LIB(rt, clock_gettime)
        !            65: AC_CHECK_LIB(nsl, inet_ntoa)
        !            66: 
        !            67: dnl Checks for header files.
        !            68: AC_HEADER_STDC
        !            69: AC_CHECK_HEADERS(fcntl.h stdarg.h inttypes.h stdint.h poll.h signal.h unistd.h sys/epoll.h sys/time.h sys/queue.h sys/event.h sys/param.h sys/ioctl.h sys/select.h sys/devpoll.h port.h netinet/in6.h sys/socket.h)
        !            70: if test "x$ac_cv_header_sys_queue_h" = "xyes"; then
        !            71:        AC_MSG_CHECKING(for TAILQ_FOREACH in sys/queue.h)
        !            72:        AC_EGREP_CPP(yes,
        !            73: [
        !            74: #include <sys/queue.h>
        !            75: #ifdef TAILQ_FOREACH
        !            76:  yes
        !            77: #endif
        !            78: ],     [AC_MSG_RESULT(yes)
        !            79:         AC_DEFINE(HAVE_TAILQFOREACH, 1,
        !            80:                [Define if TAILQ_FOREACH is defined in <sys/queue.h>])],
        !            81:        AC_MSG_RESULT(no)
        !            82:        )
        !            83: fi
        !            84: 
        !            85: if test "x$ac_cv_header_sys_time_h" = "xyes"; then
        !            86:        AC_MSG_CHECKING(for timeradd in sys/time.h)
        !            87:        AC_EGREP_CPP(yes,
        !            88: [
        !            89: #include <sys/time.h>
        !            90: #ifdef timeradd
        !            91:  yes
        !            92: #endif
        !            93: ],     [ AC_DEFINE(HAVE_TIMERADD, 1,
        !            94:                [Define if timeradd is defined in <sys/time.h>])
        !            95:          AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
        !            96: )
        !            97: fi
        !            98: 
        !            99: if test "x$ac_cv_header_sys_time_h" = "xyes"; then
        !           100:        AC_MSG_CHECKING(for timercmp in sys/time.h)
        !           101:        AC_EGREP_CPP(yes,
        !           102: [
        !           103: #include <sys/time.h>
        !           104: #ifdef timercmp
        !           105:  yes
        !           106: #endif
        !           107: ],     [ AC_DEFINE(HAVE_TIMERCMP, 1,
        !           108:                [Define if timercmp is defined in <sys/time.h>])
        !           109:          AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
        !           110: )
        !           111: fi
        !           112: 
        !           113: if test "x$ac_cv_header_sys_time_h" = "xyes"; then
        !           114:        AC_MSG_CHECKING(for timerclear in sys/time.h)
        !           115:        AC_EGREP_CPP(yes,
        !           116: [
        !           117: #include <sys/time.h>
        !           118: #ifdef timerclear
        !           119:  yes
        !           120: #endif
        !           121: ],     [ AC_DEFINE(HAVE_TIMERCLEAR, 1,
        !           122:                [Define if timerclear is defined in <sys/time.h>])
        !           123:          AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
        !           124: )
        !           125: fi
        !           126: 
        !           127: if test "x$ac_cv_header_sys_time_h" = "xyes"; then
        !           128:        AC_MSG_CHECKING(for timerisset in sys/time.h)
        !           129:        AC_EGREP_CPP(yes,
        !           130: [
        !           131: #include <sys/time.h>
        !           132: #ifdef timerisset
        !           133:  yes
        !           134: #endif
        !           135: ],     [ AC_DEFINE(HAVE_TIMERISSET, 1,
        !           136:                [Define if timerisset is defined in <sys/time.h>])
        !           137:          AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
        !           138: )
        !           139: fi
        !           140: 
        !           141: dnl - check if the macro WIN32 is defined on this compiler.
        !           142: dnl - (this is how we check for a windows version of GCC)
        !           143: AC_MSG_CHECKING(for WIN32)
        !           144: AC_TRY_COMPILE(,
        !           145:        [
        !           146: #ifndef WIN32
        !           147: die horribly
        !           148: #endif
        !           149:        ],
        !           150:        bwin32=true; AC_MSG_RESULT(yes),
        !           151:        bwin32=false; AC_MSG_RESULT(no),
        !           152: )
        !           153: 
        !           154: AM_CONDITIONAL(BUILD_WIN32, test x$bwin32 = xtrue)
        !           155: 
        !           156: dnl Checks for typedefs, structures, and compiler characteristics.
        !           157: AC_C_CONST
        !           158: AC_C_INLINE
        !           159: AC_HEADER_TIME
        !           160: 
        !           161: dnl Checks for library functions.
        !           162: AC_CHECK_FUNCS(gettimeofday vasprintf fcntl clock_gettime strtok_r strsep getaddrinfo getnameinfo strlcpy inet_ntop signal sigaction strtoll issetugid geteuid getegid)
        !           163: 
        !           164: AC_CHECK_SIZEOF(long)
        !           165: 
        !           166: if test "x$ac_cv_func_clock_gettime" = "xyes"; then
        !           167:    AC_DEFINE(DNS_USE_CPU_CLOCK_FOR_ID, 1, [Define if clock_gettime is available in libc])
        !           168: else
        !           169:    AC_DEFINE(DNS_USE_GETTIMEOFDAY_FOR_ID, 1, [Define is no secure id variant is available])
        !           170: fi
        !           171: 
        !           172: AC_MSG_CHECKING(for F_SETFD in fcntl.h)
        !           173: AC_EGREP_CPP(yes,
        !           174: [
        !           175: #define _GNU_SOURCE
        !           176: #include <fcntl.h>
        !           177: #ifdef F_SETFD
        !           178: yes
        !           179: #endif
        !           180: ],     [ AC_DEFINE(HAVE_SETFD, 1,
        !           181:              [Define if F_SETFD is defined in <fcntl.h>])
        !           182:          AC_MSG_RESULT(yes) ], AC_MSG_RESULT(no))
        !           183: 
        !           184: needsignal=no
        !           185: haveselect=no
        !           186: AC_CHECK_FUNCS(select, [haveselect=yes], )
        !           187: if test "x$haveselect" = "xyes" ; then
        !           188:        AC_LIBOBJ(select)
        !           189:        needsignal=yes
        !           190: fi
        !           191: 
        !           192: havepoll=no
        !           193: AC_CHECK_FUNCS(poll, [havepoll=yes], )
        !           194: if test "x$havepoll" = "xyes" ; then
        !           195:        AC_LIBOBJ(poll)
        !           196:        needsignal=yes
        !           197: fi
        !           198: 
        !           199: haveepoll=no
        !           200: AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], )
        !           201: if test "x$haveepoll" = "xyes" ; then
        !           202:        AC_DEFINE(HAVE_EPOLL, 1,
        !           203:                [Define if your system supports the epoll system calls])
        !           204:        AC_LIBOBJ(epoll)
        !           205:        needsignal=yes
        !           206: fi
        !           207: 
        !           208: havedevpoll=no
        !           209: if test "x$ac_cv_header_sys_devpoll_h" = "xyes"; then
        !           210:        AC_DEFINE(HAVE_DEVPOLL, 1,
        !           211:                    [Define if /dev/poll is available])
        !           212:         AC_LIBOBJ(devpoll)
        !           213: fi
        !           214: 
        !           215: havekqueue=no
        !           216: if test "x$ac_cv_header_sys_event_h" = "xyes"; then
        !           217:        AC_CHECK_FUNCS(kqueue, [havekqueue=yes], )
        !           218:        if test "x$havekqueue" = "xyes" ; then
        !           219:                AC_MSG_CHECKING(for working kqueue)
        !           220:                AC_TRY_RUN(
        !           221: #include <sys/types.h>
        !           222: #include <sys/time.h>
        !           223: #include <sys/event.h>
        !           224: #include <stdio.h>
        !           225: #include <unistd.h>
        !           226: #include <fcntl.h>
        !           227: 
        !           228: int
        !           229: main(int argc, char **argv)
        !           230: {
        !           231:        int kq;
        !           232:        int n;
        !           233:        int fd[[2]];
        !           234:        struct kevent ev;
        !           235:        struct timespec ts;
        !           236:        char buf[[8000]];
        !           237: 
        !           238:        if (pipe(fd) == -1)
        !           239:                exit(1);
        !           240:        if (fcntl(fd[[1]], F_SETFL, O_NONBLOCK) == -1)
        !           241:                exit(1);
        !           242: 
        !           243:        while ((n = write(fd[[1]], buf, sizeof(buf))) == sizeof(buf))
        !           244:                ;
        !           245: 
        !           246:         if ((kq = kqueue()) == -1)
        !           247:                exit(1);
        !           248: 
        !           249:        ev.ident = fd[[1]];
        !           250:        ev.filter = EVFILT_WRITE;
        !           251:        ev.flags = EV_ADD | EV_ENABLE;
        !           252:        n = kevent(kq, &ev, 1, NULL, 0, NULL);
        !           253:        if (n == -1)
        !           254:                exit(1);
        !           255:        
        !           256:        read(fd[[0]], buf, sizeof(buf));
        !           257: 
        !           258:        ts.tv_sec = 0;
        !           259:        ts.tv_nsec = 0;
        !           260:        n = kevent(kq, NULL, 0, &ev, 1, &ts);
        !           261:        if (n == -1 || n == 0)
        !           262:                exit(1);
        !           263: 
        !           264:        exit(0);
        !           265: }, [AC_MSG_RESULT(yes)
        !           266:     AC_DEFINE(HAVE_WORKING_KQUEUE, 1,
        !           267:                [Define if kqueue works correctly with pipes])
        !           268:     AC_LIBOBJ(kqueue)], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
        !           269:        fi
        !           270: fi
        !           271: 
        !           272: haveepollsyscall=no
        !           273: if test "x$ac_cv_header_sys_epoll_h" = "xyes"; then
        !           274:        if test "x$haveepoll" = "xno" ; then
        !           275:                AC_MSG_CHECKING(for epoll system call)
        !           276:                AC_TRY_RUN(
        !           277: #include <stdint.h>
        !           278: #include <sys/param.h>
        !           279: #include <sys/types.h>
        !           280: #include <sys/syscall.h>
        !           281: #include <sys/epoll.h>
        !           282: #include <unistd.h>
        !           283: 
        !           284: int
        !           285: epoll_create(int size)
        !           286: {
        !           287:        return (syscall(__NR_epoll_create, size));
        !           288: }
        !           289: 
        !           290: int
        !           291: main(int argc, char **argv)
        !           292: {
        !           293:        int epfd;
        !           294: 
        !           295:        epfd = epoll_create(256);
        !           296:        exit (epfd == -1 ? 1 : 0);
        !           297: }, [AC_MSG_RESULT(yes)
        !           298:     AC_DEFINE(HAVE_EPOLL, 1,
        !           299:        [Define if your system supports the epoll system calls])
        !           300:     needsignal=yes
        !           301:     AC_LIBOBJ(epoll_sub)
        !           302:     AC_LIBOBJ(epoll)], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
        !           303:        fi
        !           304: fi
        !           305: 
        !           306: haveeventports=no
        !           307: AC_CHECK_FUNCS(port_create, [haveeventports=yes], )
        !           308: if test "x$haveeventports" = "xyes" ; then
        !           309:        AC_DEFINE(HAVE_EVENT_PORTS, 1,
        !           310:                [Define if your system supports event ports])
        !           311:        AC_LIBOBJ(evport)
        !           312:        needsignal=yes
        !           313: fi
        !           314: if test "x$bwin32" = "xtrue"; then
        !           315:        needsignal=yes
        !           316: fi
        !           317: if test "x$bwin32" = "xtrue"; then
        !           318:        needsignal=yes
        !           319: fi
        !           320: if test "x$needsignal" = "xyes" ; then
        !           321:        AC_LIBOBJ(signal)
        !           322: fi
        !           323: 
        !           324: AC_TYPE_PID_T
        !           325: AC_TYPE_SIZE_T
        !           326: AC_CHECK_TYPES([uint64_t, uint32_t, uint16_t, uint8_t], , ,
        !           327: [#ifdef HAVE_STDINT_H
        !           328: #include <stdint.h>
        !           329: #elif defined(HAVE_INTTYPES_H)
        !           330: #include <inttypes.h>
        !           331: #endif
        !           332: #ifdef HAVE_SYS_TYPES_H
        !           333: #include <sys/types.h>
        !           334: #endif])
        !           335: AC_CHECK_TYPES([fd_mask], , ,
        !           336: [#ifdef HAVE_SYS_TYPES_H
        !           337: #include <sys/types.h>
        !           338: #endif
        !           339: #ifdef HAVE_SELECT_H
        !           340: #include <select.h>
        !           341: #endif])
        !           342: 
        !           343: AC_CHECK_SIZEOF(long long)
        !           344: AC_CHECK_SIZEOF(int)
        !           345: AC_CHECK_SIZEOF(short)
        !           346: AC_CHECK_TYPES([struct in6_addr], , ,
        !           347: [#ifdef WIN32
        !           348: #include <winsock2.h>
        !           349: #else
        !           350: #include <sys/types.h>
        !           351: #include <netinet/in.h>
        !           352: #include <sys/socket.h>
        !           353: #endif
        !           354: #ifdef HAVE_NETINET_IN6_H
        !           355: #include <netinet/in6.h>
        !           356: #endif])
        !           357: 
        !           358: AC_MSG_CHECKING([for socklen_t])
        !           359: AC_TRY_COMPILE([
        !           360:  #include <sys/types.h>
        !           361:  #include <sys/socket.h>],
        !           362:   [socklen_t x;],
        !           363:   AC_MSG_RESULT([yes]),
        !           364:   [AC_MSG_RESULT([no])
        !           365:   AC_DEFINE(socklen_t, unsigned int,
        !           366:        [Define to unsigned int if you dont have it])]
        !           367: )
        !           368: 
        !           369: AC_MSG_CHECKING([whether our compiler supports __func__])
        !           370: AC_TRY_COMPILE([],
        !           371:  [ const char *cp = __func__; ],
        !           372:  AC_MSG_RESULT([yes]),
        !           373:  AC_MSG_RESULT([no])
        !           374:  AC_MSG_CHECKING([whether our compiler supports __FUNCTION__])
        !           375:  AC_TRY_COMPILE([],
        !           376:    [ const char *cp = __FUNCTION__; ],
        !           377:    AC_MSG_RESULT([yes])
        !           378:    AC_DEFINE(__func__, __FUNCTION__,
        !           379:          [Define to appropriate substitue if compiler doesnt have __func__]),
        !           380:    AC_MSG_RESULT([no])
        !           381:    AC_DEFINE(__func__, __FILE__,
        !           382:          [Define to appropriate substitue if compiler doesnt have __func__])))
        !           383: 
        !           384: 
        !           385: # Add some more warnings which we use in development but not in the
        !           386: # released versions.  (Some relevant gcc versions can't handle these.)
        !           387: if test x$enable_gcc_warnings = xyes; then
        !           388: 
        !           389:   AC_COMPILE_IFELSE(AC_LANG_PROGRAM([], [
        !           390: #if !defined(__GNUC__) || (__GNUC__ < 4)
        !           391: #error
        !           392: #endif]), have_gcc4=yes, have_gcc4=no)
        !           393: 
        !           394:   AC_COMPILE_IFELSE(AC_LANG_PROGRAM([], [
        !           395: #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
        !           396: #error
        !           397: #endif]), have_gcc42=yes, have_gcc42=no)
        !           398: 
        !           399:   CFLAGS="$CFLAGS -W -Wfloat-equal -Wundef -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat=2 -Wwrite-strings -Wmissing-declarations -Wredundant-decls -Wnested-externs -Wbad-function-cast -Wswitch-enum -Werror"
        !           400:   CFLAGS="$CFLAGS -Wno-unused-parameter -Wno-sign-compare -Wstrict-aliasing"
        !           401: 
        !           402:   if test x$have_gcc4 = xyes ; then 
        !           403:     # These warnings break gcc 3.3.5 and work on gcc 4.0.2
        !           404:     CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement"
        !           405:     #CFLAGS="$CFLAGS -Wold-style-definition"
        !           406:   fi
        !           407: 
        !           408:   if test x$have_gcc42 = xyes ; then 
        !           409:     # These warnings break gcc 4.0.2 and work on gcc 4.2
        !           410:     CFLAGS="$CFLAGS -Waddress -Wnormalized=id -Woverride-init"
        !           411:   fi
        !           412: 
        !           413: ##This will break the world on some 64-bit architectures
        !           414: # CFLAGS="$CFLAGS -Winline"
        !           415: 
        !           416: fi
        !           417: 
        !           418: AC_OUTPUT(Makefile test/Makefile sample/Makefile)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>