# $Id: Makefile,v 1.4 1998/07/05 17:15:59 sverrehu Exp $
DIST		= xalloc
VERMAJ		= 1
VERMIN		= 0
VERPAT		= 3
VERSION		= $(VERMAJ).$(VERMIN).$(VERPAT)

###########################################################################

# Define SHARED as 1 for Linux shared ELF library
#SHARED		= 1

ifeq ($(SHARED),1)
LIBTARGET	= lib$(DIST).so.$(VERSION)
LIBTARGETSO	= lib$(DIST).so
LIBTARGETSOMAJ	= $(LIBTARGETSO).$(VERMAJ)
CCSHRD		= -fPIC
else
LIBTARGET	= lib$(DIST).a
endif

LIBHEAD		= $(DIST).h
TARGETS		= $(LIBTARGET)

###########################################################################

INSTBASEDIR	= /usr/local
INSTLIBDIR	= $(INSTBASEDIR)/lib
INSTINCDIR	= $(INSTBASEDIR)/include
INSTALL		= install -m 644
MKDIRP		= install -d -m 755

###########################################################################

CC		= gcc
OPTIM		= -O2

LIBDIR		= -L.
INCDIR		= -I.

CCOPT		= -Wall $(OPTIM) $(INCDIR)
LDOPT		= $(LIBDIR)

# Object files to store in the library
LIBOBJS		= xalloc.o xmalloc.o xcalloc.o xrealloc.o xstrdup.o

###########################################################################

all: $(TARGETS)

$(LIBTARGET): $(LIBOBJS)
ifeq ($(SHARED),1)
	$(CC) -shared -Wl,-soname,$(LIBTARGETSOMAJ) -o $(LIBTARGET) $(LIBOBJS)
else
	ar rcs $(LIBTARGET) $(LIBOBJS)
endif

.c.o:
	$(CC) $(CCSHRD) -o $@ -c $(CCOPT) $<

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

install: $(LIBTARGET)
	$(MKDIRP) $(INSTLIBDIR) $(INSTINCDIR)
	$(INSTALL) $(LIBTARGET) $(INSTLIBDIR)
	$(INSTALL) $(LIBHEAD) $(INSTINCDIR)
ifeq ($(SHARED),1)
	ln -sf $(LIBTARGET) $(INSTLIBDIR)/$(LIBTARGETSOMAJ)
	ln -sf $(LIBTARGETSOMAJ) $(INSTLIBDIR)/$(LIBTARGETSO)
	echo "If you use GNU/Linux, remember to run ldconfig"
endif

clean:
	rm -f *.o core *~ depend

###########################################################################

# To let the author make a distribution. The rest of the Makefile
# should be used by the author only.
LSMFILE		= $(DIST)-$(VERSION).lsm
DISTDIR		= $(DIST)-$(VERSION)
DISTFILE	= $(DIST)-$(VERSION).tar.gz
DISTFILES	= README INSTALL CREDITS $(LSMFILE) ChangeLog Makefile \
		  xalloc.h \
		  xalloc.c xcalloc.c xmalloc.c xrealloc.c xstrdup.c

$(LSMFILE): $(DIST).lsm.in
	VER=$(VERSION); \
	DATE=`date "+%d%b%y"|tr '[a-z]' '[A-Z]'`; \
	sed -e "s/VER/$$VER/g;s/DATE/$$DATE/g" $(DIST).lsm.in > $(LSMFILE)

chmod:
	chmod -R a+rX *

veryclean: clean
	rm -f $(LIBTARGET) $(DIST)-$(VERSION).tar.gz $(LSMFILE)

dist: $(LSMFILE) chmod
	mkdir $(DISTDIR)
	chmod a+rx $(DISTDIR)
	for q in $(DISTFILES); do \
	  if test -e $$q; then \
	    ln -s ../$$q $(DISTDIR); \
	  else echo "warning: no file $$q"; fi; \
	  done
	tar -cvhzf $(DISTFILE) $(DISTDIR)
	chmod a+r $(DISTFILE)
	rm -rf $(DISTDIR)

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