SHELL=/bin/sh

VERSION		= 1.0#
DATE		= 2000-Jan-09#

DESTDIR		=#
PREFIX		= /usr/local
BINDIR		= $(PREFIX)/bin
MANDIR		= $(PREFIX)/man/man1
SBINDIR		= $(PREFIX)/sbin
ETCDIR		= /etc

INSTALL_BIN	= install -m 0755 -s
INSTALL_MAN	= install -m 0444
INSTALL_SCRIPT	= install -m 0755
INSTALL_DATA	= install -m 0644
#INSTALL_BIN	= cp
#INSTALL_MAN	= cp
#INSTALL_SCRIPT	= cp
#INSTALL_DATA	= cp
MKDIRS		= mkdir -p
#MKDIRS		= install -d

CC		= gcc
OPTFLAGS	= -O2 -fno-strength-reduce
WARNFLAGS	= -Wall -W -ansi -pedantic
MISCFLAGS	= -DVERSION=\"$(VERSION)\"
CFLAGS		= $(OPTFLAGS) $(WARNFLAGS) $(MISCFLAGS)
LDFLAGS		=#

PROG		= aliases2cdbm

INCS		= dynlist.h
SRCS		= $(PROG).c dynlist.c
OBJS		= $(SRCS:.c=.o)

MAN_SRC		= $(PROG).1.in
MAN_OBJ		= $(PROG).1

SPEC_SRC	= $(PROG).spec.in
SPEC_OBJ	= $(PROG).spec

ALIASSCRIPT_SRC	= exim.newaliases.cdb.in
ALIASSCRIPT_OBJ	= exim.newaliases.cdb
ALIASCONF_SRC	= aliases.conf.in
ALIASCONF_OBJ	= aliases.conf

DOCS		= README
EXTRAS		= $(ALIASSCRIPT_SRC) $(ALIASCONF_SRC)
MAKEFILES	= Makefile
SAMPLES		= aliases.sample aliases.warnings

DIST_DIR	= $(PROG)-$(VERSION)
DIST		= $(DIST_DIR).tar.gz
DIST_FILES	= \
 $(DOCS) \
 $(MAKEFILES) \
 $(EXTRAS) \
 $(SAMPLES) \
 $(SPEC_SRC) \
 $(SPEC_OBJ) \
 $(SRCS) \
 $(INCS) \
 $(MAN_SRC)

.PHONY: all sed man spec install extra install-extra
.PHONY: clean realclean spotless distclean
.SUFFIXES:
.SUFFIXES: .c .o

all: $(PROG) man

$(PROG): $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

.c.o:
	$(CC) $(CFLAGS) -o $@ -c $<

man: $(MAN_OBJ)

$(MAN_OBJ): $(MAN_SRC)
	cat $< | sed \
		-e 's~@VERSION@~$(VERSION)~g' \
		-e 's~@DATE@~$(DATE)~g' \
		>$@

sed: spec
spec: $(SPEC_OBJ)

$(SPEC_OBJ): $(SPEC_SRC)
	cat $< | sed \
		-e 's~@PROG@~$(PROG)~g' \
		-e 's~@VERSION@~$(VERSION)~g' \
		>$@

install: $(PROG) $(DESTDIR)$(BINDIR) $(DESTDIR)$(MANDIR)
	$(INSTALL_BIN) $(PROG) $(DESTDIR)$(BINDIR)/
	$(INSTALL_MAN) $(MAN_OBJ) $(DESTDIR)$(MANDIR)/

extra: $(ALIASSCRIPT_OBJ) $(ALIASCONF_OBJ)

$(ALIASSCRIPT_OBJ): $(ALIASSCRIPT_SRC)
	cat $< | sed \
		-e 's~@ETCDIR@~$(ETCDIR)~g' \
		-e 's~@SBINDIR@~$(SBINDIR)~g' \
		>$@
	chmod 0755 $@

$(ALIASCONF_OBJ): $(ALIASCONF_SRC)
	cat $< | sed \
		-e 's~@ETCDIR@~$(ETCDIR)~g' \
		>$@

install-extra: extra $(DESTDIR)$(SBINDIR) $(DESTDIR)$(ETCDIR)
	$(INSTALL_SCRIPT) $(ALIASSCRIPT_OBJ) $(DESTDIR)$(SBINDIR)/
	$(INSTALL_DATA) $(ALIASCONF_OBJ) $(DESTDIR)$(ETCDIR)/

$(DESTDIR)$(BINDIR):
	$(MKDIRS) $@

$(DESTDIR)$(MANDIR):
	$(MKDIRS) $@

$(DESTDIR)$(SBINDIR):
	$(MKDIRS) $@

$(DESTDIR)$(ETCDIR):
	$(MKDIRS) $@

clean:
	rm -f $(PROG) $(OBJS) $(MAN_OBJ) $(ALIASSCRIPT_OBJ) $(ALIASCONF_OBJ)

realclean: clean
	rm -f $(SPEC_OBJ) *~ *.LOG

distclean: spotless
spotless: realclean
	rm -f $(DIST)

dist: tar
tar: spec
	rm -rf ./$(DIST_DIR)
	mkdir ./$(DIST_DIR)
	chmod 0755 ./$(DIST_DIR)
	cp -p $(DIST_FILES) ./$(DIST_DIR)/
	chmod 0644 ./$(DIST_DIR)/*
	tar -czvf ./$(DIST) ./$(DIST_DIR)
	chmod 0644 ./$(DIST)
	rm -rf ./$(DIST_DIR)

