#*****************************************************************************
# Copyright (C) 2006-2007 NTT
#*****************************************************************************
##
## MACRO definition
##
#PROF       = -pg
#EFENCE     = -lefence
#MPATROL    = -lmpatrol -lbfd -liberty -ldl
ROOTDIR    = ../..
COMDIR     = $(ROOTDIR)/common
PGDIR      = $(DIRPGSRC)
BINDIR     = $(COMDIR)/bin
SRCDIR     = $(COMDIR)/src
INCDIR     = $(COMDIR)/include
PGINCDIR   = $(PGDIR)/src/include
INSTALLDIR = $(PREFIX)/bin

CMNSRC     = PREXMessage.c ReadWWConfFile.c GetCheckPointLSN.c PREXUtil.c
CCSRC      = Semaphore.c LastLSN.c LastLSNMain.c LastWAL.c exclude.c

ifdef PG82
LastLSNBASE= LastLSN_PG82.c
else
LastLSNBASE= LastLSN_PG83.c
endif

CCOBJECT1  = Semaphore.o PREXMessage.o
CCOBJECT2  = LastLSNMain.o
CCOBJECT3  = LastWAL.o
CCOBJECT4  = exclude.o PREXMessage.o
PGOBJECT   = $(PGDIR)/src/backend/utils/hash/pg_crc.o
LASTLSNOBJECT = LastLSN.o PREXMessage.o

SOURCES    = $(CCSRC) $(CMNSRC)
OBJECTS    = $(SOURCES:.c=.o)
LIBS       = 
DEFS       =

CC         = gcc
CFLAGS     = -I$(ROOTDIR) -I$(INCDIR) -I$(PGINCDIR) -I$(COMINC) $(DEFS) -D_REENTRANT $(PROF)
COMPILE.c  = $(CC) $(CFLAGS) -c -Wall
DEBUG      = -g3 $(LOG_OPT)

LDLIBS     = $(LIBS) $(EFENCE)
LDFLAGS    = $(MPATROL) $(PROF)
LINK.c     = $(CC) $(LDFLAGS)

CCOBJECT1LIBS = -lrt

TARGET         = Semaphore LastLSN LastWAL exclude PREXMessage.o ReadWWConfFile.o GetCheckPointLSN.o
TARGET_INSTALL = Semaphore LastLSN LastWAL exclude

##
## Target definition
##
all: $(TARGET)

.c.o:
	$(COMPILE.c) $(OUTPUT_OPTION) $<

Semaphore: $(CCOBJECT1)
	$(LINK.c) -o $@ $(CCOBJECT1) $(LDLIBS) $(CCOBJECT1LIBS)

LastLSN: $(CCOBJECT2) $(LASTLSNOBJECT)
	$(LINK.c) -o $@ $(CCOBJECT2) $(LASTLSNOBJECT) $(PGOBJECT) $(LDLIBS)

LastLSN.c: $(LastLSNBASE)
	cp $(LastLSNBASE) LastLSN.c

LastWAL: $(CCOBJECT3) $(LASTLSNOBJECT)
	$(LINK.c) -o $@ $(CCOBJECT3) $(LASTLSNOBJECT) $(PGOBJECT) $(LDLIBS)

exclude: $(CCOBJECT4)
	$(LINK.c) -o $@ $(CCOBJECT4) $(LDLIBS)

##
## make debug objects
##
debugobj: $(SOURCES)
	for file in $(SOURCES) ; do \
	  echo $(COMPILE.c) $${file} $(DEBUG); \
	  $(COMPILE.c) $${file} $(DEBUG); \
	done

debug:
	make debugobj; \
	make

##
## Install
##
install: $(TARGET)
	cp -p $(TARGET_INSTALL) $(INSTALLDIR)

##
## Clean
##
clean:
	rm -f $(OBJECTS) $(TARGET)

include $(ROOTDIR)/Makefile.global
