LDFLAGS = -lssl -lcrypto -lpthread

INCLFLAGS = -Ideps/http-parser -Ideps/libuv/include -Ideps/evt-tls -Ideps/evt-tls/sample/libuv-tls

LIBFLAGS =

CCFLAGS = -g

UNAME=$(shell uname)

ifeq ($(UNAME),Linux)
LDFLAGS += -lrt
endif

ifeq ($(UNAME),Darwin)
LDFLAGS += -framework Foundation \
           -framework CoreFoundation \
           -framework ApplicationServices
LIBFLAGS += -L/usr/local/opt/openssl/lib
INCLFLAGS += -I/usr/local/opt/openssl/include
endif


datadome_proxyserver: cmdline.o libuv.a http-parser.o evt_tls.o uv_tls.o
	$(CC) $(CCFLAGS) -o datadome_proxyserver src/proxyserver.c $(INCLFLAGS) $(LIBFLAGS) \
		src/cmdline.o \
		deps/evt-tls/evt_tls.o \
		deps/evt-tls/sample/libuv-tls/uv_tls.o \
		deps/libuv/.libs/libuv.a \
		deps/http-parser/http_parser.o $(LDFLAGS)

cmdline.c:
	gengetopt --input=src/proxyserver.cmdline --include-getopt --output-dir=src

cmdline.o: cmdline.c
	$(CC) $(CCFLAGS) -c -o src/cmdline.o src/cmdline.c
	
libuv.a:
	cd deps/libuv; (test -f Makefile || (./autogen.sh; ./configure))
	$(MAKE) -C deps/libuv libuv.la

http-parser.o:
	$(MAKE) -C deps/http-parser http_parser.o

evt_tls.o:
	$(CC) $(CCFLAGS) -c $(INCLFLAGS) -o deps/evt-tls/evt_tls.o deps/evt-tls/evt_tls.c

uv_tls.o:
	$(CC) $(CCFLAGS) -c $(INCLFLAGS) -o deps/evt-tls/sample/libuv-tls/uv_tls.o deps/evt-tls/sample/libuv-tls/uv_tls.c

clean:
	rm -f datadome_proxyserver
	rm -f src/cmdline.o
	rm -f src/cmdline.c
	rm -f src/cmdline.h
	rm -f deps/evt-tls/sample/libuv-tls/uv_tls.o
	rm -f deps/evt-tls/evt-tls.o
	(test -f deps/libuv/Makefile && $(MAKE) -C deps/libuv clean) || true
	(test -f deps/http-parser/Makefile && $(MAKE) -C deps/http-parser clean) || true
	
all: proxyserver
