#
# This Makefile is for the Socket extension to perl.
# 
CC = cc
RANLIB = :
TOP = ../..
ABSTOP = /export/home1/local/src/lang/perl5.000
LDFLAGS = 
CLDFLAGS = 
SMALL = 
LARGE =  

# To use an alternate make, set $altmake in config.sh.
MAKE = make

EXT = Socket

# Socket might have its own typemap
EXTTYPEMAP = 

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

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

# Socket 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 = 
DYNALOADLIBS  = 
STATLOADLIBS = 


# Where to put things:
AUTO = $(TOP)/lib/auto
INSTALLBOOT = $(AUTO)/$(EXT)/$(EXT).bs
INSTALLDYNAMIC = $(AUTO)/$(EXT)/$(EXT).$(DLEXT)
INSTALLSTATIC = $(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) $*.c

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

config:

# 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 Makefile
	$(PERL) $(XSUBPP) $(EXT).xs >tmp
	mv tmp $@

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

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

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

