# test/Makefile.am for libevent
# Copyright 2000-2007 Niels Provos
# Copyright 2007-2012 Niels Provos and Nick Mathewson
#
# See LICENSE for copying information.

regress_CPPFLAGS = -DTINYTEST_LOCAL

EXTRA_DIST+=					\
	test/check-dumpevents.py		\
	test/regress.gen.c			\
	test/regress.gen.h				\
	test/regress.rpc				\
	test/rpcgen_wrapper.sh			\
	test/print-winsock-errors.c			\
	test/test.sh

TESTPROGRAMS = \
	test/bench					\
	test/bench_cascade				\
	test/bench_http				\
	test/bench_httpclient			\
	test/test-changelist				\
	test/test-dumpevents				\
	test/test-eof				\
	test/test-closed				\
	test/test-fdleak				\
	test/test-init				\
	test/test-ratelim				\
	test/test-time				\
	test/test-weof \
	test/regress

if BUILD_REGRESS
noinst_PROGRAMS += $(TESTPROGRAMS)
EXTRA_PROGRAMS+= test/regress
endif

noinst_HEADERS+=				\
	test/regress.h				\
	test/regress_thread.h			\
	test/tinytest.h				\
	test/tinytest_local.h			\
	test/tinytest_macros.h

TESTS = \
	test_runner_epoll \
	test_runner_select \
	test_runner_kqueue \
	test_runner_evport \
	test_runner_devpoll \
	test_runner_poll \
	test_runner_win32 \
	test_runner_timerfd \
	test_runner_changelist \
	test_runner_timerfd_changelist
LOG_COMPILER = true
TESTS_COMPILER = true

test_runner_epoll: $(top_srcdir)/test/test.sh
	$(top_srcdir)/test/test.sh -b EPOLL
test_runner_select: $(top_srcdir)/test/test.sh
	$(top_srcdir)/test/test.sh -b SELECT
test_runner_kqueue: $(top_srcdir)/test/test.sh
	$(top_srcdir)/test/test.sh -b KQUEUE
test_runner_evport: $(top_srcdir)/test/test.sh
	$(top_srcdir)/test/test.sh -b EVPORT
test_runner_devpoll: $(top_srcdir)/test/test.sh
	$(top_srcdir)/test/test.sh -b DEVPOLL
test_runner_poll: $(top_srcdir)/test/test.sh
	$(top_srcdir)/test/test.sh -b POLL
test_runner_win32: $(top_srcdir)/test/test.sh
	$(top_srcdir)/test/test.sh -b WIN32
test_runner_timerfd: $(top_srcdir)/test/test.sh
	$(top_srcdir)/test/test.sh -b "" -t
test_runner_changelist: $(top_srcdir)/test/test.sh
	$(top_srcdir)/test/test.sh -b "" -c
test_runner_timerfd_changelist: $(top_srcdir)/test/test.sh
	$(top_srcdir)/test/test.sh -b "" -T

DISTCLEANFILES += test/regress.gen.c test/regress.gen.h

if BUILD_REGRESS
BUILT_SOURCES += test/regress.gen.c test/regress.gen.h
endif

test_test_init_SOURCES = test/test-init.c
test_test_init_LDADD = libevent_core.la
test_test_dumpevents_SOURCES = test/test-dumpevents.c
test_test_dumpevents_LDADD = libevent_core.la
test_test_eof_SOURCES = test/test-eof.c
test_test_eof_LDADD = libevent_core.la
test_test_closed_SOURCES = test/test-closed.c
test_test_closed_LDADD = libevent_core.la
test_test_changelist_SOURCES = test/test-changelist.c
test_test_changelist_LDADD = libevent_core.la
test_test_weof_SOURCES = test/test-weof.c
test_test_weof_LDADD = libevent_core.la
test_test_time_SOURCES = test/test-time.c
test_test_time_LDADD = libevent_core.la
test_test_ratelim_SOURCES = test/test-ratelim.c
test_test_ratelim_LDADD = libevent_core.la -lm
test_test_fdleak_SOURCES = test/test-fdleak.c
test_test_fdleak_LDADD = libevent_core.la

test_regress_SOURCES = 				\
	test/regress.c				\
	test/regress.gen.c				\
	test/regress.gen.h				\
	test/regress_buffer.c			\
	test/regress_bufferevent.c			\
	test/regress_dns.c				\
	test/regress_et.c				\
	test/regress_finalize.c				\
	test/regress_http.c				\
	test/regress_listener.c			\
	test/regress_main.c				\
	test/regress_minheap.c			\
	test/regress_rpc.c				\
	test/regress_testutils.c			\
	test/regress_testutils.h			\
	test/regress_util.c				\
	test/tinytest.c				\
	$(regress_thread_SOURCES)		\
	$(regress_zlib_SOURCES)

if PTHREADS
regress_thread_SOURCES = test/regress_thread.c
PTHREAD_LIBS += libevent_pthreads.la
endif
if BUILD_WIN32
if THREADS
regress_thread_SOURCES = test/regress_thread.c
endif
endif
if ZLIB_REGRESS
regress_zlib_SOURCES = test/regress_zlib.c
endif
if BUILD_WIN32
test_regress_SOURCES += test/regress_iocp.c
endif

test_regress_LDADD = $(LIBEVENT_GC_SECTIONS) libevent_core.la libevent_extra.la $(PTHREAD_LIBS) $(ZLIB_LIBS)
test_regress_CPPFLAGS = $(AM_CPPFLAGS) $(PTHREAD_CFLAGS) $(ZLIB_CFLAGS) -Itest
test_regress_LDFLAGS = $(PTHREAD_CFLAGS)

if OPENSSL
test_regress_SOURCES += test/regress_ssl.c
test_regress_CPPFLAGS += $(OPENSSL_INCS)
test_regress_LDADD += libevent_openssl.la $(OPENSSL_LIBS) ${OPENSSL_LIBADD}
endif

test_bench_SOURCES = test/bench.c
test_bench_LDADD = $(LIBEVENT_GC_SECTIONS) libevent.la
test_bench_cascade_SOURCES = test/bench_cascade.c
test_bench_cascade_LDADD = $(LIBEVENT_GC_SECTIONS) libevent.la
test_bench_http_SOURCES = test/bench_http.c
test_bench_http_LDADD = $(LIBEVENT_GC_SECTIONS) libevent.la
test_bench_httpclient_SOURCES = test/bench_httpclient.c
test_bench_httpclient_LDADD = $(LIBEVENT_GC_SECTIONS) libevent_core.la

test/regress.gen.c test/regress.gen.h: test/rpcgen-attempted

test/rpcgen-attempted: test/regress.rpc event_rpcgen.py test/rpcgen_wrapper.sh
	$(AM_V_GEN)date -u > $@
	$(AM_V_at)if $(srcdir)/test/rpcgen_wrapper.sh $(srcdir)/test; then \
	   true; \
	else \
	   echo "No Python installed; stubbing out RPC test." >&2; \
	   echo " "> test/regress.gen.c; \
	   echo "#define NO_PYTHON_EXISTS" > test/regress.gen.h; \
	fi

CLEANFILES += test/rpcgen-attempted

$(TESTPROGRAMS) : libevent.la
