# Makefile for erServer
# (c) 2000 Vadim Mikheev, PostgreSQL Inc.
# Updated for erServer 1.2 by Justin Clift
# Updated 12/2003 by Andrew Rawnsley
#

top_builddir = .
include Makefile.global

NAME	= erserver
XXID	= xxid
XXIDSQL		= src/xxid.sql
SONAME	= src/$(NAME)$(DLSUFFIX)
SOXXID	= src/$(XXID)$(DLSUFFIX)
PTE	= pte
SOPTE	= src/$(PTE)$(DLSUFFIX)
CLASSPATH=lib/commons-cli-1.0.jar:lib/log4j.jar:lib/postgresql.jar

BIN	= \
	bin/ers_ctl \
	bin/ers_conf
DOCS	= \
	docs/install.txt \
	docs/install.html \
	docs/install.pdf \
	docs/diagram.gif \
	docs/logo.png
TMPLS	= \
	templates/ers_setvars-template \
	templates/replication.cfg-template
SQLNAMES = sql/xxid.sql
CONFS	= etc/repliclog.cfg
OSQLS	= sql/lastchg_install.sql sql/lastchg_remove.sql
JARS	= lib/postgresql.jar lib/log4j.jar lib/commons-cli-1.0.jar
ERJAR	= lib/erserver.jar
RHSCRIPT = scripts/erserver.redhat
FBSCRIPT = scripts/erserver.freebsd
NBSCRIPT = scripts/erserver.netbsd

override CPPFLAGS := -I/usr/local/include $(CPPFLAGS)
override CFLAGS += $(CFLAGS_SL) -DUSE_T_XMIN

all: $(ERJAR) $(SQLNAMES) $(TMPLS) $(SONAME) $(SOPTE) $(SOXXID)

%.sql: %.sql.in
	sed -e "s:@LIBDIR@:$(libdir):g" \
	    -e "s:@DLSUFFIX@:$(DLSUFFIX):g" $< >$@

$(ERJAR):
	find src -name "*.java" -print > src/srclist
	javac -classpath ${CLASSPATH} -sourcepath src -d classes @src/srclist
	rmic -classpath classes:${CLASSPATH} -d classes com.postgres.replic.server.RServSignalHandlerImpl
	jar cf lib/erserver.jar -C classes org -C classes com 	

install: all installdirs
	for file in $(BIN); do \
	  $(INSTALL_SCRIPT) $$file $(bindir) || exit ; \
	done
	for file in $(DOCS); do \
	  $(INSTALL_DATA) $$file $(docdir) || exit ; \
	done
	for file in $(CONFS); do \
	  $(INSTALL_DATA) $$file $(sysconfdir) || exit ; \
	done
	for file in $(OSQLS); do \
	  $(INSTALL_DATA) $$file $(sqldir) || exit ; \
	done
	for file in $(JARS); do \
	  $(INSTALL_DATA) $$file $(libdir) || exit ; \
	done
	for file in $(TMPLS); do \
	  $(INSTALL_SCRIPT) $$file $(templdir) || exit ; \
	done
	for file in $(ERJAR); do \
	  $(INSTALL_DATA) $$file $(libdir) || exit ; \
	done
	for file in $(SQLNAMES); do \
	  $(INSTALL_DATA) $$file $(sqldir) || exit ; \
	done	

	$(INSTALL_DATA) docs/INSTALL $(basedir)
	$(INSTALL_SHLIB) $(SONAME) $(libdir)
	$(INSTALL_SHLIB) $(SOPTE) $(libdir)
	$(INSTALL_SHLIB) $(SOXXID) $(libdir)
	# If running on RedHat, install its startup script
	if [ -f /etc/redhat-release ] ; then cp -f $(RHSCRIPT) /etc/init.d/erserver ; chkconfig --add erserver ; fi
	# If running on FreeBSD, install its startup script
	if [ `uname -s` = "FreeBSD" ] ; then $(INSTALL_SCRIPT) $(FBSCRIPT) $(templdir) || exit ; fi
	# If running on NetBSD, install it's startup script
	if [ `uname -s` = "NetBSD" ] ; then $(INSTALL_SCRIPT) $(NBSCRIPT) $(templdir) || exit ; fi
	

installdirs:
	$(mkinstalldirs) $(bindir) \
	  $(libdir) $(docdir) $(logdir) \
	  $(sysconfdir) $(sqldir) $(templdir)

clean distclean maintainer-clean:
	rm -rf classes/*
	rm -f src/srclist	
	rm -f $(ERJAR) $(SONAME) $(NAME).o $(SOPTE) $(PTE).o $(SQLNAMES) $(SOXXID) $(BIN) 
	rm -f templates/ers_setvars-template
	rm -f autoscan.log config.h config.log config.status
	rm -rf autom4te.cache 
	rm -f Makefile.port Makefile.global
