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>