AUTOMAKE_OPTIONS = foreign no-dependencies

# This is the point release for libevent.  It shouldn't include any
# a/b/c/d/e notations.
RELEASE = 1.4

# 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.

# History:
#  Libevent 1.4.1 was 2:0:0
#  Libevent 1.4.2 should be 3:0:0
#  Libevent 1.4.5 is 3:0:1 (we forgot to increment in the past)
VERSION_INFO = 3:3:1

bin_SCRIPTS = event_rpcgen.py

EXTRA_DIST = autogen.sh event.h event-internal.h log.h evsignal.h evdns.3 \
	evrpc.h evrpc-internal.h min_heap.h \
	event.3 \
	Doxyfile \
	kqueue.c epoll_sub.c epoll.c select.c poll.c signal.c \
	evport.c devpoll.c event_rpcgen.py \
	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 compat/sys/_libevent_time.h \
	WIN32-Code/config.h \
	WIN32-Code/event-config.h \
	WIN32-Code/win32.c \
	WIN32-Code/tree.h \
	WIN32-Prj/event_test/event_test.dsp \
	WIN32-Prj/event_test/test.txt WIN32-Prj/libevent.dsp \
	WIN32-Prj/libevent.dsw WIN32-Prj/signal_test/signal_test.dsp \
	WIN32-Prj/time_test/time_test.dsp WIN32-Prj/regress/regress.vcproj \
	WIN32-Prj/libevent.sln WIN32-Prj/libevent.vcproj

lib_LTLIBRARIES = libevent.la libevent_core.la libevent_extra.la

if BUILD_WIN32

SUBDIRS = . sample
SYS_LIBS = -lws2_32
SYS_SRC = WIN32-Code/win32.c
SYS_INCLUDES = -IWIN32-Code

else

SUBDIRS = . sample test
SYS_LIBS =
SYS_SRC =
SYS_INCLUDES =

endif

BUILT_SOURCES = event-config.h

event-config.h: config.h
	echo '/* event-config.h' > $@
	echo ' * Generated by autoconf; post-processed by libevent.' >> $@
	echo ' * Do not edit this file.' >> $@
	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 buffer.c evbuffer.c log.c evutil.c $(SYS_SRC)
EXTRA_SRC = event_tagging.c http.c evhttp.h http-internal.h evdns.c \
	evdns.h evrpc.c evrpc.h evrpc-internal.h \
	strlcpy.c strlcpy-internal.h strlcpy-internal.h

libevent_la_SOURCES = $(CORE_SRC) $(EXTRA_SRC)
libevent_la_LIBADD = @LTLIBOBJS@ $(SYS_LIBS)
libevent_la_LDFLAGS = -release $(RELEASE) -version-info $(VERSION_INFO)

libevent_core_la_SOURCES = $(CORE_SRC)
libevent_core_la_LIBADD = @LTLIBOBJS@ $(SYS_LIBS)
libevent_core_la_LDFLAGS = -release $(RELEASE) -version-info $(VERSION_INFO)

libevent_extra_la_SOURCES = $(EXTRA_SRC)
libevent_extra_la_LIBADD = @LTLIBOBJS@ $(SYS_LIBS)
libevent_extra_la_LDFLAGS = -release $(RELEASE) -version-info $(VERSION_INFO)

include_HEADERS = event.h evhttp.h evdns.h evrpc.h evutil.h

nodist_include_HEADERS = event-config.h

INCLUDES = -I$(srcdir)/compat $(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
