top_builddir=../..
top_srcdir=../..
srcdir=@srcdir@

include $(top_srcdir)/Make.rules

.SUFFIXES: .la .lo

SHARED_CFLAGS=-DPR_SHARED_MODULE
SHARED_LDFLAGS=-avoid-version -export-dynamic -module
VPATH=@srcdir@

MODULE_LIBS=@MODULE_LIBS@
MODULE_NAME=mod_proxy
MODULE_OBJS=mod_proxy.o \
  lib/proxy/random.o \
  lib/proxy/db.o \
  lib/proxy/dns.o \
  lib/proxy/session.o \
  lib/proxy/conn.o \
  lib/proxy/netio.o \
  lib/proxy/inet.o \
  lib/proxy/str.o \
  lib/proxy/ssh.o \
  lib/proxy/ssh/db.o \
  lib/proxy/ssh/redis.o \
  lib/proxy/tls.o \
  lib/proxy/tls/db.o \
  lib/proxy/tls/redis.o \
  lib/proxy/uri.o \
  lib/proxy/forward.o \
  lib/proxy/reverse.o \
  lib/proxy/reverse/db.o \
  lib/proxy/reverse/redis.o \
  lib/proxy/ftp/conn.o \
  lib/proxy/ftp/ctrl.o \
  lib/proxy/ftp/data.o \
  lib/proxy/ftp/dirlist.o \
  lib/proxy/ftp/facts.o \
  lib/proxy/ftp/msg.o \
  lib/proxy/ftp/sess.o \
  lib/proxy/ftp/xfer.o \
  lib/proxy/ssh/agent.o \
  lib/proxy/ssh/auth.o \
  lib/proxy/ssh/bcrypt.o \
  lib/proxy/ssh/cipher.o \
  lib/proxy/ssh/compress.o \
  lib/proxy/ssh/crypto.o \
  lib/proxy/ssh/disconnect.o \
  lib/proxy/ssh/interop.o \
  lib/proxy/ssh/kex.o \
  lib/proxy/ssh/keys.o \
  lib/proxy/ssh/mac.o \
  lib/proxy/ssh/misc.o \
  lib/proxy/ssh/msg.o \
  lib/proxy/ssh/packet.o \
  lib/proxy/ssh/service.o \
  lib/proxy/ssh/session.o \
  lib/proxy/ssh/umac.o \
  lib/proxy/ssh/umac128.o \
  lib/proxy/ssh/utf8.o

SHARED_MODULE_OBJS=mod_proxy.lo \
  lib/proxy/random.lo \
  lib/proxy/db.lo \
  lib/proxy/dns.lo \
  lib/proxy/session.lo \
  lib/proxy/conn.lo \
  lib/proxy/netio.lo \
  lib/proxy/inet.lo \
  lib/proxy/str.lo \
  lib/proxy/ssh.lo \
  lib/proxy/ssh/db.lo \
  lib/proxy/ssh/redis.lo \
  lib/proxy/tls.lo \
  lib/proxy/tls/db.lo \
  lib/proxy/uri.lo \
  lib/proxy/forward.lo \
  lib/proxy/reverse.lo \
  lib/proxy/reverse/db.lo \
  lib/proxy/reverse/redis.lo \
  lib/proxy/ftp/conn.lo \
  lib/proxy/ftp/ctrl.lo \
  lib/proxy/ftp/data.lo \
  lib/proxy/ftp/dirlist.lo \
  lib/proxy/ftp/facts.lo \
  lib/proxy/ftp/msg.lo \
  lib/proxy/ftp/sess.lo \
  lib/proxy/ftp/xfer.lo \
  lib/proxy/ssh/agent.lo \
  lib/proxy/ssh/auth.lo \
  lib/proxy/ssh/bcrypt.lo \
  lib/proxy/ssh/cipher.lo \
  lib/proxy/ssh/compress.lo \
  lib/proxy/ssh/crypto.lo \
  lib/proxy/ssh/disconnect.lo \
  lib/proxy/ssh/interop.lo \
  lib/proxy/ssh/kex.lo \
  lib/proxy/ssh/keys.lo \
  lib/proxy/ssh/mac.lo \
  lib/proxy/ssh/misc.lo \
  lib/proxy/ssh/msg.lo \
  lib/proxy/ssh/packet.lo \
  lib/proxy/ssh/service.lo \
  lib/proxy/ssh/session.lo \
  lib/proxy/ssh/umac.lo \
  lib/proxy/ssh/umac128.lo \
  lib/proxy/ssh/utf8.lo

# Necessary redefinitions
INCLUDES=-I. -I./include -I../.. -I../../include @INCLUDES@
CPPFLAGS= $(ADDL_CPPFLAGS) -DHAVE_CONFIG_H $(DEFAULT_PATHS) $(PLATFORM) $(INCLUDES)
LDFLAGS=-L../../lib @LIBDIRS@

.c.o:
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@

.c.lo:
	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(CPPFLAGS) $(CFLAGS) $(SHARED_CFLAGS) -c $< -o $@

shared: $(SHARED_MODULE_OBJS)
	$(LIBTOOL) --mode=link --tag=CC $(CC) -o $(MODULE_NAME).la $(SHARED_MODULE_OBJS) -rpath $(LIBEXECDIR) $(LDFLAGS) $(SHARED_LDFLAGS) $(SHARED_MODULE_LIBS) `cat $(MODULE_NAME).c | grep '$$Libraries:' | sed -e 's/^.*\$$Libraries: \(.*\)\\$$/\1/'`

static: $(MODULE_OBJS)
	test -z "$(MODULE_LIBS)" || echo "$(MODULE_LIBS)" >> $(MODULE_LIBS_FILE)
	$(AR) rc $(MODULE_NAME).a $(MODULE_OBJS)
	$(RANLIB) $(MODULE_NAME).a

install: install-misc
	if [ -f $(MODULE_NAME).la ] ; then \
		$(LIBTOOL) --mode=install --tag=CC $(INSTALL_BIN) $(MODULE_NAME).la $(DESTDIR)$(LIBEXECDIR) ; \
	fi

install-misc:
	$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0644 cacerts.pem $(DESTDIR)$(sysconfdir)/cacerts.pem

clean:
	$(LIBTOOL) --mode=clean $(RM) $(MODULE_NAME).a $(MODULE_NAME).la *.o *.lo .libs/*.o lib/proxy/*.o lib/proxy/*.lo lib/proxy/ftp/*.o lib/proxy/ftp/*.lo lib/proxy/reverse/*.o lib/proxy/reverse/*.lo lib/proxy/ssh/*.o lib/proxy/ssh/*.lo lib/proxy/tls/*.o lib/proxy/tls/*.lo
	cd t/ && $(MAKE) clean

# Run the API tests
check:
	test -z "$(ENABLE_TESTS)" || (cd t/ && $(MAKE) api-tests)

distclean: clean
	$(RM) Makefile $(MODULE_NAME).h config.status config.cache config.log *.gcda *.gcno
	-$(RM) -r .libs/ .git/ CVS/ RCS/
