#############################################################################
# Makefile for building: libplpq.so
#############################################################################

####### Compiler, tools and options
POSTGRES_SOURCES = /opt/postgresql-7.3.2/src
POSTGRES_LIBS=/usr/local/pgsql/lib

CC       = gcc
CXX      = g++
CFLAGS   = -pipe -Wall -W -O2 -D_REENTRANT -fPIC  
CXXFLAGS = -pipe -Wall -W -O2 -D_REENTRANT -fPIC  
INCPATH  = -I$(POSTGRES_SOURCES)/include -I$(POSTGRES_SOURCES)/interfaces/libpq
LINK     = g++
LFLAGS   = -shared -Wl,-soname,libplpq.so.1 -Wl,-rpath,.bin/ -L$(POSTGRES_LIBS) -lpq
AR       = ar cqs
TAR      = tar -cf
GZIP     = gzip -9f
COPY     = cp -f
COPY_FILE= $(COPY) -p
COPY_DIR = $(COPY) -pR
DEL_FILE = rm -f
DEL_DIR  = rmdir
MOVE     = mv

####### Output directory

OBJECTS_DIR = .obj/

####### Files

HEADERS = plpq.h
SOURCES = plpq.c
OBJECTS = .obj/plpq.o
DIST	   = 
DESTDIR  = .bin/
TARGET   = libplpq.so
TARGETD   = $(POSTGRES_LIBS)/$(TARGET)

first: all
####### Implicit rules

.SUFFIXES: .c .cpp .cc .cxx .C

.cpp.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.C.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

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

####### Build rules

all: .bin/$(TARGET)

.bin/$(TARGET):  $(OBJECTS) $(SUBLIBS) 
	test -d .bin/ || mkdir -p .bin/
	-rm -f $(TARGET)
	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)
	-mv $(TARGET) .bin/
	sed 's,MODULE_PATHNAME,$(TARGETD),g' plpq.sql.in >plpq.sql


dist: 
	@mkdir -p .obj/plpq && $(COPY_FILE) --parents $(SOURCES) $(HEADERS) $(FORMS) $(DIST) .obj/plpq/ && ( cd `dirname .obj/plpq` && $(TAR) plpq.tar plpq && $(GZIP) plpq.tar ) && mv `dirname .obj/plpq`/plpq.tar.gz . && rm -rf .obj/plpq

clean:
	-rm -f $(OBJECTS) 
	-rm .bin/*
	-rm -f *~ core *.core
	-rm -f plpq.sql
	
####### Sub-libraries

distclean: clean
	-rmdir .obj
	-rmdir .bin

FORCE:

####### Compile

.obj/plpq.o: plpq.c plpq.h
	test -d .obj/ || mkdir -p .obj/
	$(CC) -c $(CFLAGS) $(INCPATH) -o .obj/plpq.o plpq.c

####### Install

install_target: 
	@test -d $(POSTGRES_LIBS) || mkdir -p $(POSTGRES_LIBS)
	-$(COPY) ".bin/$(TARGET)" "$(POSTGRES_LIBS)/$(TARGET)"
uninstall_target: 
	-$(DEL_FILE) "$(POSTGRES_LIBS)/$(TARGET)"

install: all install_target 

uninstall: uninstall_target 

