# WATCH OUT!  This makefile is a work in progress.             -*- makefile -*-

!IFDEF OPENSSL_DIR
SSL_CFLAGS=/I$(OPENSSL_DIR)\include /DEVENT__HAVE_OPENSSL
SSL_OBJS=regress_ssl.obj
SSL_LIBS=..\libevent_openssl.lib $(OPENSSL_DIR)\lib\libeay32.lib $(OPENSSL_DIR)\lib\ssleay32.lib gdi32.lib User32.lib
!ELSE
SSL_CFLAGS=
SSL_OBJS=
SSL_LIBS=
!ENDIF

CFLAGS=/I.. /I../WIN32-Code /I../WIN32-Code/nmake /I../include /I../compat /DHAVE_CONFIG_H /DTINYTEST_LOCAL $(SSL_CFLAGS)

CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo

REGRESS_OBJS=regress.obj regress_buffer.obj regress_http.obj regress_dns.obj \
	regress_testutils.obj \
        regress_rpc.obj regress.gen.obj \
	regress_et.obj regress_bufferevent.obj \
	regress_listener.obj regress_util.obj tinytest.obj \
	regress_main.obj regress_minheap.obj regress_iocp.obj \
	regress_thread.obj regress_finalize.obj $(SSL_OBJS)

OTHER_OBJS=test-init.obj test-eof.obj test-closed.obj test-weof.obj test-time.obj \
	bench.obj bench_cascade.obj bench_http.obj bench_httpclient.obj \
	test-changelist.obj \
	print-winsock-errors.obj

PROGRAMS=regress.exe \
	test-init.exe test-eof.exe test-closed.exe test-weof.exe test-time.exe \
	test-changelist.exe \
	print-winsock-errors.exe

# Disabled for now:
#	bench.exe bench_cascade.exe bench_http.exe bench_httpclient.exe


LIBS=..\libevent.lib ws2_32.lib shell32.lib advapi32.lib

all: $(PROGRAMS)

regress.exe: $(REGRESS_OBJS)
	$(CC) $(CFLAGS) $(LIBS) $(SSL_LIBS) $(REGRESS_OBJS)

test-init.exe: test-init.obj
	$(CC) $(CFLAGS) $(LIBS) test-init.obj
test-eof.exe: test-eof.obj
	$(CC) $(CFLAGS) $(LIBS) test-eof.obj
test-closed.exe: test-closed.obj
	$(CC) $(CFLAGS) $(LIBS) test-closed.obj
test-changelist.exe: test-changelist.obj
	$(CC) $(CFLAGS) $(LIBS) test-changelist.obj
test-weof.exe: test-weof.obj
	$(CC) $(CFLAGS) $(LIBS) test-weof.obj
test-time.exe: test-time.obj
	$(CC) $(CFLAGS) $(LIBS) test-time.obj

print-winsock-errors.exe: print-winsock-errors.obj
	$(CC) $(CFLAGS) $(LIBS) print-winsock-errors.obj

bench.exe: bench.obj
	$(CC) $(CFLAGS) $(LIBS) bench.obj
bench_cascade.exe: bench_cascade.obj
	$(CC) $(CFLAGS) $(LIBS) bench_cascade.obj
bench_http.exe: bench_http.obj
	$(CC) $(CFLAGS) $(LIBS) bench_http.obj
bench_httpclient.exe: bench_httpclient.obj
	$(CC) $(CFLAGS) $(LIBS) bench_httpclient.obj

regress.gen.c regress.gen.h: regress.rpc ../event_rpcgen.py
	echo // > regress.gen.c
	echo #define NO_PYTHON_EXISTS > regress.gen.h
	-python ..\event_rpcgen.py regress.rpc

clean:
	-del $(REGRESS_OBJS)
	-del $(OTHER_OBJS)
	-del $(PROGRAMS)
