#
# This is a Makefile stub which handles the creation of BSD shared
# libraries.
#
# In order to use this stub, the following makefile variables must be defined.
# 
# BSDLIB_VERSION = 1.0
# BSDLIB_IMAGE = libce
# BSDLIB_MYDIR = et
# BSDLIB_INSTALL_DIR = $(SHLIBDIR)
#

all:: pic image

subdirs:: pic

pic:
	mkdir pic

BSD_LIB = $(BSDLIB_IMAGE).so.$(BSDLIB_VERSION)
BSDLIB_PIC_FLAG = -fpic

image:		$(BSD_LIB)

$(BSD_LIB): $(OBJS)
	(cd pic; ld -Bshareable -o $(BSD_LIB) $(OBJS))
	$(MV) pic/$(BSD_LIB) .
	$(RM) -f ../$(BSD_LIB)
	$(LN) $(BSD_LIB) ../$(BSD_LIB)

install-shlibs install:: $(BSD_LIB)
	$(INSTALL_PROGRAM) $(BSD_LIB) \
		$(DESTDIR)$(BSDLIB_INSTALL_DIR)/$(BSD_LIB)
	-$(LDCONFIG)

uninstall-shlibs uninstall::
	$(RM) -f $(DESTDIR)$(BSDLIB_INSTALL_DIR)/$(BSD_LIB)

clean::
	$(RM) -rf pic
	$(RM) -f $(BSD_LIB)
	$(RM) -f ../$(BSD_LIB)
