srcdir   = @srcdir@
VPATH    = @srcdir@

CC           = @CC@
CDEBUG_FLAGS = @CDEBUG_FLAGS@
EXTRA_CFLAGS = 
CFLAGS       = -DIN_LIBRARY -I../include -I$(srcdir) -I$(srcdir)/../include @CFLAGS@ $(CDEBUG_FLAGS) @DEFS@ $(EXTRA_CFLAGS)

MAKED    = @MAKED@
BINRM    = @BINRM@
INSTALL  = @INSTALL@
RANLIB	 = @RANLIB@
AR       = ar rv
LDFLAGS  = @LDFLAGS@
LIBS     = @LIBS@
DLLIBS   = @DLLIBS@
CLIENT_PLUGIN_OBJS = @CLIENT_PLUGIN_OBJS@

prefix 		= @prefix@
exec_prefix 	= @exec_prefix@
libdir 		= $(prefix)/lib

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

UOBJ = log.o msg.o buffer.o 
OBJS = msg.o protocol.o log.o hostname.o confutil.o buffer.o cache.o wrap.o wrap_tcp.o wrap_udp.o conf.o \
	select.o libproto.o rld.o null.o addr.o shim.o dpin.o dpinutil.o $(CLIENT_PLUGIN_OBJS)
SRCS = $(srcdir)/msg.c $(srcdir)/protocol.c $(srcdir)/log.c $(srcdir)/hostname.c $(srcdir)/confutil.c $(srcdir)/buffer.c \
	$(srcdir)/cache.c $(srcdir)/wrap.c $(srcdir)/wrap_tcp.c $(srcdir)/wrap_udp.c $(srcdir)/conf.c $(srcdir)/select.c \
	$(srcdir)/libproto.c $(srcdir)/rld.c $(srcdir)/null.c $(srcdir)/addr.c \
	$(srcdir)/shim.c $(srcdir)/dpin.c $(srcdir)/dpinutil.c \
	$(srcdir)/upwd.c $(srcdir)/gss.c $(srcdir)/cram.c
HDRS = $(srcdir)/msg.h $(srcdir)/protocol.h $(srcdir)/log.h $(srcdir)/hostname.h $(srcdir)/confutil.h $(srcdir)/buffer.h \
	$(srcdir)/cache.h $(srcdir)/wrap.h $(srcdir)/wrap_tcp.h $(srcdir)/wrap_udp.h $(srcdir)/conf.h \
	$(srcdir)/libproto.h $(srcdir)/null.h $(srcdir)/addr.h \
	$(srcdir)/shim.h $(srcdir)/dpin.h $(srcdir)/dpinutil.h \
	$(srcdir)/upwd.h $(srcdir)/gss.h $(srcdir)/cram.h

all:: Makefile lib util

Makefile: Makefile.in ../config.status
	(cd ..; CONFIG_FILES=lib/Makefile CONFIG_HEADERS= ./config.status)

.PHONY: lib
lib:: libsocks5.a

util: libs5util.a

libs5util.a: $(UOBJ)
	$(AR) $@ $(UOBJ)
	$(RANLIB) $@

libsocks5.a: $(OBJS)
	$(AR) $@ $(OBJS)
	$(RANLIB) $@

install: libsocks5.a
	@( if [ ! -d $(libdir) ]; then mkdir -p $(libdir); fi )
	$(INSTALL) libsocks5.a $(libdir)/libsocks5.a

util.install: libs5util.a
	@( if [ ! -d $(prefix)/include ]; then mkdir -p $(prefix)/include; fi )
	@( if [ ! -d $(libdir) ]; then mkdir -p $(libdir); fi )
	$(INSTALL) -m 644 $(srcdir)/../include/s5util.h $(prefix)/include
	$(INSTALL) -m 644 $(srcdir)/../include/socks5api.h $(prefix)/include
	$(INSTALL) -m 644 $(srcdir)/../include/includes.h $(prefix)/include
	$(INSTALL) -m 644 ../include/config.h $(prefix)/include
	$(INSTALL) -m 644 libs5util.a $(libdir)/libs5util.a

clean:
	-$(BINRM) *.o libsocks5.a libs5util.a

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

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

depend: Makefile
	$(MAKED) -I/usr/local/include -- $(CFLAGS) -- $(SRCS)
	mv Makefile Makefile.tmp; cat Makefile.tmp | sed s,\^$(srcdir)/,,g > Makefile ; rm Makefile.tmp

msg.o: msg.c
protocol.o: protocol.c
log.o: log.c
hostname.o: hostname.c
confutil.o: confutil.c
buffer.o: buffer.c
cache.o: cache.c
wrap.o: wrap.c
wrap_tcp.o: wrap_tcp.c
wrap_udp.o: wrap_udp.c
conf.o: conf.c
select.o: select.c
libproto.o: libproto.c
rld.o: rld.c
null.o: null.c
addr.o: addr.c
shim.o: shim.c
dpin.o: dpin.c
dpinutil.o: dpinutil.c
upwd.o: upwd.c
gss.o: gss.c
cram.o: cram.c
