#-------------------------------------------------------------------------
#
# Makefile for src/cybercluster/pgrp
#
#-------------------------------------------------------------------------

subdir = src/cybercluster/pgrp
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global

override CPPFLAGS += -DFRONTEND

# this setup is for V2 protocol
#OBJS= cascade.o conf.o main.o recovery.o replicate.o rlog.o 
# this setup is for V3 protocol
OBJS= pqformat.o cascade.o conf.o main.o recovery.o replicate.o rlog.o
#								 lifecheck.o
RPLMON_OBJS= rplmon.o
RPLCC_OBJS= rplcc.o

# Bad hack to successfully link under Windows
# Unfortunately neither of the referenced symbols
# can be resolved using "-lpq -lpgport" :-(
ifeq ($(PORTNAME), win32)
#PGPORT_SRV=$(top_builddir)/src/port/libpgport.a
PTHREAD_LIB=-lpthreadGC2
PQLIB=$(top_builddir)/src/interfaces/libpq/libpq.dll \
	$(top_builddir)/src/interfaces/libpq/dllist.o \
	$(top_builddir)/src/interfaces/libpq/fe-exec.o \
	$(top_builddir)/src/interfaces/libpq/fe-misc.o \
	$(top_builddir)/src/interfaces/libpq/fe-protocol2.o \
	$(top_builddir)/src/interfaces/libpq/fe-protocol3.o \
	$(top_builddir)/src/interfaces/libpq/fe-secure.o \
	$(top_builddir)/src/interfaces/libpq/wchar.o \
	$(top_builddir)/src/interfaces/libpq/win32.o
else
#PQLIB=$(libpq_pgport)
endif # win32

EXTRA_OBJS = $(top_builddir)/src/backend/libpq/replicate_com-fe.o ../libpgc/SUBSYS.o
RPLMON_EXTRA_OBJS = $(top_builddir)/src/backend/libpq/replicate_com-fe.o

CFLAGS += -DPRINT_DEBUG
override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) -DBINDIR=\"$(bindir)\"
all: pgreplicate pgrplmon pgrplcc

pgreplicate: $(OBJS) $(libpq_builddir)/libpq.a 
	$(CC) $(CFLAGS) $(OBJS) $(EXTRA_OBJS) $(libpq) $(libpq_builddir)/libpq.a $(LDFLAGS) $(LIBS) $(PTHREAD_LIB) -o $@

pgrplmon: $(RPLMON_OBJS)
	$(CC) $(CFLAGS) $(RPLMON_OBJS) $(RPLMON_EXTRA_OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@

pgrplcc: $(RPLCC_OBJS)
	$(CC) $(CFLAGS) $(RPLCC_OBJS) $(RPLMON_EXTRA_OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@

install: all installdirs
	$(INSTALL_PROGRAM) pgreplicate$(X) $(DESTDIR)$(bindir)/pgreplicate$(X)
	$(INSTALL_PROGRAM) pgrplmon$(X) $(DESTDIR)$(bindir)/pgrplmon$(X)
	$(INSTALL_PROGRAM) pgrplcc$(X) $(DESTDIR)$(bindir)/pgrplcc$(X)
	$(INSTALL_DATA) pgreplicate.conf.sample  $(DESTDIR)$(datadir)/pgreplicate.conf.sample

installdirs:
	$(mkinstalldirs) $(DESTDIR)$(bindir)
	$(mkinstalldirs) $(DESTDIR)$(datadir)

uninstall:
	rm -f $(addprefix $(DESTDIR)$(bindir)/, pgreplicate$(X), pgrplmon$(X), pgrplcc$(X))
	rm -f $(DESTDIR)$(datadir)/pgreplicate.conf.sample

clean distclean maintainer-clean:
	rm -f pgreplicate$(X) pgrplmon$(X) pgrplmon$(X) pgrplcc$(X) $(OBJS) $(RPLMON_OBJS) $(RPLCC_OBJS)

clean_obj:
	rm -f $(OBJS) $(RPLMON_OBJS) $(RPLCC_OBJS)
