libevent/Makefile.am
Nick Mathewson 27308aae4d Changelist code to defer event changes until just before dispatch
This is necessary or useful for a few reasons:

    1) Sometimes applications will add and delete the same event more
       than once between calls to dispatch.  Processing these changes
       immediately is needless, and potentially expensive (especially
       if we're on a system that makes one syscall per changed event).

       Yes, this actually happens in practice for nonpathological
       code, such as in cases where the user's callback conditionally
       re-adds a non-persistent event, or where draining a buffer
       turns off writing and invokes a user callback which adds more
       data which in turn re-enabled writing.

    2) Sometimes we can coalesce multiple changes on the same fd into
       a single syscall if we know about them in advance.  For
       example, epoll can do an add and a delete at the same time, but
       only if we have found out about both of them before we tell
       epoll.

    3) Sometimes adding an event that we immediately delete can cause
       unintended consequences: in kqueue, this makes pending events
       get reported spuriously.
2010-01-14 16:31:22 -05:00

159 lines
4.7 KiB
Makefile

AUTOMAKE_OPTIONS = foreign
ACLOCAL_AMFLAGS = -I m4
# This is the version info for the libevent binary API. It has three
# numbers:
# Current -- the number of the binary API that we're implementing
# Revision -- which iteration of the implementation of the binary
# API are we supplying?
# Age -- How many previous binary API versions do we also
# support?
#
# If we release a new version that does not change the binary API,
# increment Revision.
#
# If we release a new version that changes the binary API, but does
# not break programs compiled against the old binary API, increment
# Current and Age. Set Revision to 0, since this is the first
# implementation of the new API.
#
# Otherwise, we're changing the binary API and breaking bakward
# compatibility with old binaries. Increment Current. Set Age to 0,
# since we're backward compatible with no previous APIs. Set Revision
# to 0 too.
#
# ABI version history for this package effectively begins with package
# version 2.0, because package version 1.4 erroneously applied both
# -release and -version-info to the same libraries; -release takes
# precedence, so the -version-info history of 1.4 libraries is moot.
# We are starting the numbering at 2 rather than 1 to avoid confusion.
#
# 2:0:0 -- Libevent 2.0.1-alpha.
VERSION_INFO = 2:0:0
bin_SCRIPTS = event_rpcgen.py
pkgconfigdir=$(libdir)/pkgconfig
pkgconfig_DATA=libevent.pc
EXTRA_DIST = \
autogen.sh evdns.3 \
event.3 \
libevent.pc \
Doxyfile \
kqueue.c epoll_sub.c epoll.c select.c poll.c signal.c \
evport.c devpoll.c win32select.c event_rpcgen.py \
event_iocp.c buffer_iocp.c iocp-internal.h \
sample/Makefile.am sample/Makefile.in sample/event-test.c \
sample/signal-test.c sample/time-test.c \
test/Makefile.am test/Makefile.in test/bench.c test/regress.c \
test/test-eof.c test/test-weof.c test/test-time.c \
test/test-init.c test/test.sh \
compat/sys/queue.h \
evthread_win32.c \
evthread_pthread.c \
whatsnew-2.0.txt \
bufferevent_async.c \
WIN32-Code/event-config.h \
WIN32-Code/tree.h \
Makefile.nmake test/Makefile.nmake
lib_LTLIBRARIES = libevent.la libevent_core.la libevent_extra.la
if PTHREADS
lib_LTLIBRARIES += libevent_pthreads.la
endif
if OPENSSL
lib_LTLIBRARIES += libevent_openssl.la
endif
SUBDIRS = . include sample test
if BUILD_WIN32
SYS_LIBS = -lws2_32
SYS_SRC = win32select.c evthread_win32.c buffer_iocp.c event_iocp.c \
bufferevent_async.c
SYS_INCLUDES = -IWIN32-Code
else
SYS_LIBS =
SYS_SRC =
SYS_INCLUDES =
endif
BUILT_SOURCES = event-config.h
event-config.h: config.h
echo '/* event-config.h' > $@
echo ' *' >> $@
echo ' * This file was generated by autoconf when libevent was built, and post-' >> $@
echo ' * processed by Libevent so that its macros would have a uniform prefix.' >> $@
echo ' *' >> $@
echo ' * DO NOT EDIT THIS FILE.' >> $@
echo ' *' >> $@
echo ' * Do not rely on macros in this file existing in later versions.'>> $@
echo ' */' >> $@
echo '#ifndef _EVENT_CONFIG_H_' >> $@
echo '#define _EVENT_CONFIG_H_' >> $@
sed -e 's/#define /#define _EVENT_/' \
-e 's/#undef /#undef _EVENT_/' \
-e 's/#ifndef /#ifndef _EVENT_/' < config.h >> $@
echo "#endif" >> $@
CORE_SRC = event.c evthread.c buffer.c \
bufferevent.c bufferevent_sock.c bufferevent_filter.c \
bufferevent_pair.c listener.c bufferevent_ratelim.c \
evmap.c log.c evutil.c strlcpy.c $(SYS_SRC)
EXTRA_SRC = event_tagging.c http.c evdns.c evrpc.c
libevent_la_SOURCES = $(CORE_SRC) $(EXTRA_SRC)
libevent_la_LIBADD = @LTLIBOBJS@ $(SYS_LIBS)
libevent_la_LDFLAGS = -version-info $(VERSION_INFO)
libevent_core_la_SOURCES = $(CORE_SRC)
libevent_core_la_LIBADD = @LTLIBOBJS@ $(SYS_LIBS)
libevent_core_la_LDFLAGS = -version-info $(VERSION_INFO)
if PTHREADS
libevent_pthreads_la_SOURCES = evthread_pthread.c
endif
libevent_extra_la_SOURCES = $(EXTRA_SRC)
libevent_extra_la_LIBADD =
libevent_extra_la_LDFLAGS = -version-info $(VERSION_INFO)
if OPENSSL
libevent_openssl_la_SOURCES = bufferevent_openssl.c
libevent_openssl_la_LIBADD = -lcrypto -lssl
libevent_openssl_la_LDFLAGS = -release $(RELEASE) -version-info $(VERSION_INFO)
endif
noinst_HEADERS = util-internal.h mm-internal.h ipv6-internal.h \
evrpc-internal.h strlcpy-internal.h evbuffer-internal.h \
bufferevent-internal.h http-internal.h event-internal.h \
evthread-internal.h ht-internal.h defer-internal.h \
minheap-internal.h log-internal.h evsignal-internal.h evmap-internal.h \
changelist-internal.h \
ratelim-internal.h
include_HEADERS = event.h evhttp.h evdns.h evrpc.h evutil.h
nodist_include_HEADERS = event-config.h
INCLUDES = -I$(srcdir)/compat -I$(srcdir)/include $(SYS_INCLUDES)
man_MANS = event.3 evdns.3
verify: libevent.la
cd test && make verify
doxygen: FORCE
doxygen $(srcdir)/Doxyfile
FORCE:
DISTCLEANFILES = *~ event-config.h libevent.pc