#
# This Makefile is for the Msql extension to perl.
# 
CC = cc
RANLIB = :
TOP = ../..
ABSTOP = /export/home1/local/src/lang/perl5.000
LDFLAGS = 
CLDFLAGS = 
SMALL = 
LARGE =  
INSTALLPRIVLIB = /usr/local/lib/perl5
# To use an alternate make, set $altmake in config.sh.
MAKE = make
MSQLINC = /usr/local/msql/include
VERSION = a1

EXT = Msql

# Msql might have its own typemap
EXTTYPEMAP = typemap

# Msql might have its own bootstrap support
BOOTDEP  = 
BOOTSTRAP  = Msql.bs

# The following are used to build and install shared libraries for
# dynamic loading.
LDDLFLAGS = -G
CCDLFLAGS = 
CCCDLFLAGS = -K pic
SO = so

# Msql might need to be linked with some extra libraries.
# EXTRALIBS =  full list of libraries needed for static linking.
#		Only those libraries that actually exist are included.
# DYNLOADLIBS = list of those libraries that are needed but can be
#		linked in dynamically on this platform.  On SunOS, for
#		example, this would be .so* libraries, but not archive
#		libraries.  The bootstrap file is installed only if
#		this list is not empty.
# STATLOADLIBS = list of those libraries which must be statically
#		linked into the shared library.  On SunOS 4.1.3, 
#		for example,  I have only an archive version of
#		-lm, and it must be linked in statically.
EXTRALIBS = -L/usr/local/msql/lib -lmsql
DYNALOADLIBS  = 
STATLOADLIBS = -L/usr/local/msql/lib -lmsql


# Where to put things:
AUTO = $(TOP)/lib/auto
INSTALLBOOT = $(AUTO)/$(EXT)/$(EXT).bs
INSTALLDYNAMIC = $(AUTO)/$(EXT)/$(EXT).$(SO)
INSTALLSTATIC = $(TOP)/$(EXT).a
INSTALLPM = $(TOP)/lib/$(EXT).pm

PERL = $(ABSTOP)/miniperl
XSUBPP = $(TOP)/ext/xsubpp
SHELL = /bin/sh
CCCMD = `sh $(shellflags) $(TOP)/cflags $@`

.c.o:
	$(CCCMD) $(CCCDLFLAGS) -I$(TOP) -I$(MSQLINC) $*.c

all:	dynamic
# Phony target to force checking subdirectories.
FORCE:

# Target for Dynamic Loading:
dynamic:	$(INSTALLDYNAMIC) $(INSTALLPM) $(INSTALLBOOT)

$(INSTALLDYNAMIC): $(EXT).o
	@test -d $(AUTO) || mkdir $(AUTO)
	@test -d $(AUTO)/$(EXT) || mkdir $(AUTO)/$(EXT)
	ld $(LDDLFLAGS) -o $@ $(EXT).o $(STATLOADLIBS)

$(BOOTSTRAP):	Makefile $(BOOTDEP)
	$(PERL) -I$(TOP)/lib $(TOP)/ext/util/mkbootstrap $(DYNALOADLIBS)
	touch $(BOOTSTRAP)

$(INSTALLBOOT):	$(BOOTSTRAP)
	@test ! -s $(BOOTSTRAP) || cp $(BOOTSTRAP) $@

# Target for Static Loading:
static: $(INSTALLSTATIC) $(INSTALLPM)

$(INSTALLSTATIC):	$(EXT).o
	ar cr $@ $(EXT).o
	$(RANLIB) $@
	echo $(EXTRALIBS) >> $(TOP)/ext.libs

$(EXT).c:	$(EXT).xs $(XSUBPP) $(TOP)/ext/typemap $(EXTTYPEMAP) $(TOP)/cflags
	$(PERL) $(XSUBPP) $(EXT).xs >tmp
	mv tmp $@

$(INSTALLPM):	$(EXT).pm
	cp $(EXT).pm $@
	cd $(TOP); $(PERL) autosplit $(EXT)

install: $(TOP)/lib/auto/$(EXT)/$(EXT).$(SO)
	test -d $(INSTALLPRIVLIB)/auto || mkdir $(INSTALLPRIVLIB)/auto
	test -d $(INSTALLPRIVLIB)/auto/$(EXT) || mkdir $(INSTALLPRIVLIB)/auto/$(EXT)
	cp $(TOP)/lib/auto/$(EXT)/$(EXT).$(SO) $(INSTALLPRIVLIB)/auto/$(EXT)
	chmod 644 $(INSTALLPRIVLIB)/auto/$(EXT)/$(EXT).$(SO)
	cp $(EXT).pm $(INSTALLPRIVLIB)

test: all ../../perl
	../../perl -I$(TOP)/lib -e 'use TestHarness; runtests @ARGV;' t/*.t

clean:
	rm -f *.o *.a mon.out core $(EXT).c so_locations $(BOOTSTRAP)

distclean:	clean
	rm -f Makefile *~ t/*~
	cd $(TOP); tar czf MsqlPerl-$(VERSION).tgz ext/Msql
	cd $(TOP); uuencode MsqlPerl-$(VERSION).tgz MsqlPerl-$(VERSION).tgz > MsqlPerl-$(VERSION).tgz.uue

realclean: 	clean
	rm -f makefile Makefile
	rm -f $(INSTALLPM) $(INSTALLDYNAMIC) $(INSTALLSTATIC) $(INSTALLBOOT)
	rm -rf $(AUTO)/$(EXT)

purge:	realclean

$(EXT).o :	$(TOP)/EXTERN.h
$(EXT).o :	$(TOP)/perl.h
$(EXT).o :	$(TOP)/embed.h
$(EXT).o :	$(TOP)/config.h
$(EXT).o :	$(TOP)/unixish.h
$(EXT).o :	$(TOP)/handy.h
$(EXT).o :	$(TOP)/regexp.h
$(EXT).o :	$(TOP)/sv.h
$(EXT).o :	$(TOP)/util.h
$(EXT).o :	$(TOP)/form.h
$(EXT).o :	$(TOP)/gv.h
$(EXT).o :	$(TOP)/cv.h
$(EXT).o :	$(TOP)/opcode.h
$(EXT).o :	$(TOP)/op.h
$(EXT).o :	$(TOP)/cop.h
$(EXT).o :	$(TOP)/av.h
$(EXT).o :	$(TOP)/hv.h
$(EXT).o :	$(TOP)/mg.h
$(EXT).o :	$(TOP)/scope.h
$(EXT).o :	$(TOP)/pp.h
$(EXT).o :	$(TOP)/proto.h
$(EXT).o :	$(TOP)/XSUB.h 

Makefile:	Makefile.SH $(TOP)/config.sh ; /bin/sh Makefile.SH
$(TOP)/config.h:	$(TOP)/config.sh; cd $(TOP); /bin/sh config_h.SH
$(TOP)/embed.h:	$(TOP)/config.sh; cd $(TOP); /bin/sh embed_h.SH
$(TOP)/cflags:	$(TOP)/config.sh; cd $(TOP); /bin/sh cflags.SH

