#-------------------------------------------------------------------------
#
# Makefile
#    Makefile for libpq library
#
# Copyright (c) 1994, Regents of the University of California
#
# IDENTIFICATION
#    $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/Makefile.in,v 1.44 1999/02/07 22:10:46 tgl Exp $
#
#-------------------------------------------------------------------------

NAME= pq
SO_MAJOR_VERSION= 2
SO_MINOR_VERSION= 0

SRCDIR= @top_srcdir@
include $(SRCDIR)/Makefile.global

CFLAGS+= -DFRONTEND

ifdef KRBVERS
CFLAGS+= $(KRBFLAGS)
endif

ifdef MULTIBYTE
CFLAGS+= $(MBFLAGS)
endif

OBJS= fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o \
      dllist.o pqsignal.o

ifdef MULTIBYTE
OBJS+= common.o wchar.o conv.o big5.o
endif

# If crypt is a separate library, rather than part of libc,
# make sure it gets included in shared libpq.
SHLIB_LINK+= $(findstring -lcrypt,$(LIBS))

# Shared library stuff, also default 'all' target
include $(SRCDIR)/Makefile.shlib


# We need to compile this with special options for shared libs,
# so we can't use the object in $(SRCDIR)/backend
dllist.c:	$(SRCDIR)/backend/lib/dllist.c
	-$(LN_S) $(SRCDIR)/backend/lib/dllist.c .

ifdef MULTIBYTE
# We need to compile this with special options for shared libs,
# so we can't use the object in $(SRCDIR)/backend
common.c: $(SRCDIR)/backend/utils/mb/common.c
	-$(LN_S) $(SRCDIR)/backend/utils/mb/common.c .

wchar.c: $(SRCDIR)/backend/utils/mb/wchar.c
	-$(LN_S) $(SRCDIR)/backend/utils/mb/wchar.c .

conv.c: $(SRCDIR)/backend/utils/mb/conv.c
	-$(LN_S) $(SRCDIR)/backend/utils/mb/conv.c .

big5.c: $(SRCDIR)/backend/utils/mb/big5.c
	-$(LN_S) $(SRCDIR)/backend/utils/mb/big5.c .
endif

# The following rules cause dependencies in the backend directory to 
# get made if they don't exist, but don't cause them to get remade if they
# are out of date.
fe-lobj.o: $(SRCDIR)/backend/fmgr.h

$(SRCDIR)/backend/fmgr.h:
	$(MAKE) -C $(SRCDIR)/backend fmgr.h


.PHONY: install beforeinstall-headers install-headers

install: install-headers install-lib $(install-shlib-dep)

# Many of the headers we install below have nothing to do with libpq,
# so should be installed by someone else.
#
install-headers: beforeinstall-headers $(SRCDIR)/include/c.h \
                 $(SRCDIR)/include/postgres.h $(SRCDIR)/include/postgres_ext.h \
                 $(SRCDIR)/include/config.h $(SRCDIR)/include/libpq/pqcomm.h \
                 $(SRCDIR)/include/libpq/libpq-fs.h $(SRCDIR)/include/lib/dllist.h \
                 $(SRCDIR)/include/utils/geo_decls.h libpq-fe.h libpq-int.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/os.h \
          $(HEADERDIR)/os.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/config.h \
          $(HEADERDIR)/config.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/c.h \
          $(HEADERDIR)/c.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/postgres.h \
          $(HEADERDIR)/postgres.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/postgres_ext.h \
          $(HEADERDIR)/postgres_ext.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/libpq/pqcomm.h \
          $(HEADERDIR)/libpq/pqcomm.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/libpq/libpq-fs.h \
          $(HEADERDIR)/libpq/libpq-fs.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/lib/dllist.h \
          $(HEADERDIR)/lib/dllist.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/utils/geo_decls.h \
          $(HEADERDIR)/utils/geo_decls.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/utils/elog.h \
          $(HEADERDIR)/utils/elog.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/utils/palloc.h \
          $(HEADERDIR)/utils/palloc.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/access/attnum.h \
          $(HEADERDIR)/access/attnum.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/executor/spi.h \
          $(HEADERDIR)/executor/spi.h
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/include/commands/trigger.h \
          $(HEADERDIR)/commands/trigger.h
	$(INSTALL) $(INSTLOPTS) libpq-fe.h $(HEADERDIR)/libpq-fe.h
	$(INSTALL) $(INSTLOPTS) libpq-int.h $(HEADERDIR)/libpq-int.h
ifeq ($(PORTNAME), hpux)
	$(INSTALL) $(INSTLOPTS) $(SRCDIR)/backend/port/hpux/fixade.h \
          $(HEADERDIR)/port/hpux/fixade.h
endif

beforeinstall-headers:
	@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
	@if [ ! -d $(HEADERDIR)/port ]; then mkdir $(HEADERDIR)/port; fi
	@if [ ! -d $(HEADERDIR)/port/$(PORTNAME) ]; \
		then mkdir $(HEADERDIR)/port/$(PORTNAME); fi
	@if [ ! -d $(HEADERDIR)/lib ]; \
		then mkdir $(HEADERDIR)/lib; fi
	@if [ ! -d $(HEADERDIR)/libpq ]; \
		then mkdir $(HEADERDIR)/libpq; fi
	@if [ ! -d $(HEADERDIR)/utils ]; \
		then mkdir $(HEADERDIR)/utils; fi
	@if [ ! -d $(HEADERDIR)/access ]; \
		then mkdir $(HEADERDIR)/access; fi
	@if [ ! -d $(HEADERDIR)/executor ]; \
		then mkdir $(HEADERDIR)/executor; fi
	@if [ ! -d $(HEADERDIR)/commands ]; \
		then mkdir $(HEADERDIR)/commands; fi


.PHONY: clean
clean:
	rm -f libpq.a $(shlib) $(OBJS)
	rm -f dllist.c common.c wchar.c conv.c big5.c
ifeq ($(PORTNAME), win)
	rm -f pq.def
endif

depend dep:
	$(CC) -MM $(CFLAGS) *.c >depend

ifeq (depend,$(wildcard depend))
include depend
endif
