VPATH	 = @srcdir@
srcdir   = @srcdir@

CC 	     = @CC@
DEFS	     = -DIN_SERVER @DEFS@
MON_DIR      = @MON_DIR@
SERVER_DEFS  = @SERVER_DEFS@
CDEBUG_FLAGS = @CDEBUG_FLAGS@
EXTRA_CFLAGS =
MON_CFLAGS   = @MON_CFLAGS@
CFLAGS	     = -I$(srcdir) -I../include -I$(srcdir)/../lib -I$(srcdir)/../include @CFLAGS@ $(MON_CFLAGS) $(CDEBUG_FLAGS) $(SERVER_DEFS) $(DEFS) $(EXTRA_CFLAGS)
MAKED	     = @MAKED@
INSTALL	     = @INSTALL@
BINRM        = @BINRM@
prefix       = @prefix@
exec_prefix  = @exec_prefix@
EXTRA_LDFLAGS   = @EXTRA_LDFLAGS@
LDFLAGS      = @LDFLAGS@ @EXPORT_LDFLAGS@ $(EXTRA_LDFLAGS)
EXTRA_OBJS   = @EXTRA_OBJS@
SERVER_LIBS  = @SERVER_LIBS@
MON_LIBS     = @MON_LIBS@
LIBS         = $(MON_LIBS) @LIBS@ $(SERVER_LIBS)
SERVER_PLUGIN_OBJS = @SERVER_PLUGIN_OBJS@

.SUFFIXES: .c .o
.c.o:
	$(CC) ${CFLAGS} -c $(srcdir)/$*.c

OBJS = 	daemon.o socket.o proxy.o tcp.o flow.o info.o validate.o sema.o udp.o udputil.o tracer.o      \
	msg.o protocol.o log.o confutil.o buffer.o null.o addr.o s2s.o sident.o  \
	shim.o dpin.o dpinutil.o $(SERVER_PLUGIN_OBJS) $(EXTRA_OBJS)

SRCS = 	$(srcdir)/daemon.c $(srcdir)/socket.c $(srcdir)/proxy.c $(srcdir)/tcp.c $(srcdir)/flow.c \
	$(srcdir)/info.c $(srcdir)/validate.c $(srcdir)/sema.c $(srcdir)/udp.c   \
	$(srcdir)/udputil.c $(srcdir)/tracer.c $(srcdir)/../lib/msg.c $(srcdir)/../lib/protocol.c           \
	$(srcdir)/../lib/log.c $(srcdir)/../lib/confutil.c $(srcdir)/../lib/buffer.c $(srcdir)/../lib/null.c $(srcdir)/../lib/addr.c \
	$(srcdir)/s2s.c $(srcdir)/sident.c $(srcdir)/../lib/shim.c \
	$(srcdir)/../lib/dpin.c $(srcdir)/../lib/dpinutil.c \
	$(srcdir)/../lib/upwd.c $(srcdir)/../lib/gss.c $(srcdir)/../lib/cram.c $(srcdir)/packet.c

HDRS = 	$(srcdir)/daemon.h $(srcdir)/socket.h $(srcdir)/proxy.h $(srcdir)/tcp.h $(srcdir)/flow.h            \
	$(srcdir)/info.h $(srcdir)/validate.h $(srcdir)/sema.h $(srcdir)/udp.h   \
	$(srcdir)/udputil.h $(srcdir)/tracer.h $(srcdir)/../lib/msg.h $(srcdir)/../lib/protocol.h           \
	$(srcdir)/../lib/log.h $(srcdir)/../lib/confutil.h $(srcdir)/../lib/buffer.h $(srcdir)/../lib/null.h $(srcdir)/../lib/addr.h \
	$(srcdir)/../include/socks5p.h $(srcdir)/../include/socks5api.h $(srcdir)/../include/block.h $(srcdir)/../include/threads.h \
	$(srcdir)/s2s.h $(srcdir)/sident.h $(srcdir)/../lib/shim.h \
	$(srcdir)/../lib/dpin.h $(srcdir)/../lib/dpinutil.h \
	$(srcdir)/../lib/upwd.h $(srcdir)/../lib/gss.h $(srcdir)/../lib/cram.h $(srcdir)/packet.h


all: Makefile socks5 stopsocks
	@(if [ ! -x stopsocks ] ; then (chmod +x stopsocks); fi)

Makefile: $(srcdir)/Makefile.in ../config.status
	(cd ..; CONFIG_FILES=server/Makefile CONFIG_HEADERS= ./config.status)
	@(if [ -f Makefile.nodepend ] ; then (cp Makefile Makefile.nodepend ; $(MAKE) depend); fi)

stopsocks: ../config.status stopsocks.in
	(cd ..; CONFIG_FILES=server/stopsocks CONFIG_HEADERS= ./config.status)

socks5: $(OBJS) 
	$(CC) $(CFLAGS) -o socks5 $(OBJS) $(LDFLAGS) $(LIBS) 

install:
	$(INSTALL) socks5 $(exec_prefix)/bin
	$(INSTALL) stopsocks $(exec_prefix)/bin

clean:
	-$(BINRM) *.o socks5 core

distclean: clean
	-$(BINRM) Makefile stopsocks tags *~ #*# *.bak

tags:
	ctags -d -t ../include/* ../lib/*.c ../lib/*.h *.c *.h

depend:	$(HDRS) $(SRCS)
	$(MAKED) -I/usr/local/include -- $(CFLAGS) -- $(SRCS)
	mv Makefile Makefile.tmp; cat Makefile.tmp | sed s,\^$(srcdir)/\.\./lib/,,g > Makefile ; rm Makefile.tmp
	if [ "$(srcdir)" != "." ] ; then mv Makefile Makefile.tmp; cat Makefile.tmp | sed s,\^$(srcdir)/,,g > Makefile ; rm Makefile.tmp ; fi

.PHONY: wc-c
wc-c:
	wc -l $(SRCS)

.PHONY: wc
wc:
	wc -l $(SRCS) $(HDRS)

daemon.o: daemon.c
socket.o: socket.c
proxy.o: proxy.c
tcp.o: tcp.c
flow.o: flow.c
info.o:	info.c
validate.o: validate.c
sema.o: sema.c
udp.o: udp.c
udputil.o: udputil.c
tracer.o: tracer.c
packet.o: packet.c
s2s.o: s2s.c
sident.o: sident.c

msg.o: $(srcdir)/../lib/msg.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/msg.c

protocol.o: $(srcdir)/../lib/protocol.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/protocol.c

log.o: $(srcdir)/../lib/log.c 
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/log.c

confutil.o: $(srcdir)/../lib/confutil.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/confutil.c

buffer.o: $(srcdir)/../lib/buffer.c 
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/buffer.c

null.o: $(srcdir)/../lib/null.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/null.c

upwd.o: $(srcdir)/../lib/upwd.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/upwd.c

gss.o: $(srcdir)/../lib/gss.c 
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/gss.c

addr.o: $(srcdir)/../lib/addr.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/addr.c

shim.o: $(srcdir)/../lib/shim.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/shim.c

cram.o: $(srcdir)/../lib/cram.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/cram.c

dpin.o: $(srcdir)/../lib/dpin.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/dpin.c

dpinutil.o: $(srcdir)/../lib/dpinutil.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/../lib/dpinutil.c
