mirror of
https://github.com/libevent/libevent.git
synced 2025-01-09 00:56:20 +08:00
27308aae4d
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.
159 lines
4.7 KiB
Makefile
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
|