SHELL = /bin/sh
QMD=../qmail-1.03

DJB_ENV=$(QMD)/env.a
DJB_SA=$(QMD)/stralloc.a $(QMD)/alloc.a
DJB_STRERR=$(QMD)/strerr.a
DJB_STR=$(QMD)/str.a
DJB_FS=$(QMD)/fs.a
DJB_CASE=$(QMD)/case.a
DJB_SSTDIO=$(QMD)/substdio.a
DJB_ERROR=$(QMD)/error.a

DJB_CORE=$(DJB_ENV) $(DJB_SA) $(DJB_STRERR) $(DJB_STR) $(DJB_FS) $(DJB_CASE) $(DJB_SSTDIO) $(DJB_ERROR)

HASH_USER=alias
INSTALLDIR=/var/qmail/hashbin
SCRIPTS=hashop showhash showhashtype addhashmaildir delhashuser delhashalias delhashmaildir ishashuser listhashaliases
BINARIES=showhashdir chhashdir addhashuser addhashalias

all: $(BINARIES) qmail-local

clean:
	rm -f chhashdir
	rm -f qmail-local
	rm -f showhashdir
	rm -f addhashuser
	rm -f addhashalias
	rm -f *.o
	rm -f qmail-local.c

install: installbinaries installscripts install-qmail-local

installdir: $(INSTALLDIR)

$(INSTALLDIR):
	mkdir $(INSTALLDIR)

install-qmail-local: qmail-local
	cp -fp qmail-local	$(INSTALLDIR)
	cat qmail-local.notes

installbinaries: all chbinaries installdir
	cp -fp chhashdir	$(INSTALLDIR)
	cp -fp showhashdir	$(INSTALLDIR)
	cp -fp addhashuser	$(INSTALLDIR)
	cp -fp addhashalias	$(INSTALLDIR)

installscripts: $(SCRIPTS) chscripts installdir
	cp -fp hashop		$(INSTALLDIR)
	cp -fp showhash		$(INSTALLDIR)
	cp -fp showhashtype	$(INSTALLDIR)
	cp -fp addhashmaildir	$(INSTALLDIR)
	cp -fp delhashuser	$(INSTALLDIR)
	cp -fp delhashalias	$(INSTALLDIR)
	cp -fp delhashmaildir	$(INSTALLDIR)
	cp -fp ishashuser	$(INSTALLDIR)
	cp -fp listhashaliases	$(INSTALLDIR)

chbinaries: $(BINARIES)
	chown $(HASH_USER) $(BINARIES)
	chmod 500 $(BINARIES)

chscripts: $(SCRIPTS)
	chown $(HASH_USER) $(SCRIPTS)
	chmod 500 $(SCRIPTS)

setup check:
	cat INSTALL

hash_core.o:  hash_core.c
	$(QMD)/compile -I $(QMD) hash_core.c

noddylib.o:   noddylib.c
	$(QMD)/compile -I $(QMD) noddylib.c

admin_core.o: admin_core.c
	$(QMD)/compile -I $(QMD) admin_core.c

qmail-local.c: $(QMD)/qmail-local.c
	cp -p $(QMD)/qmail-local.c .
	patch qmail-local.c < qmail-local.patch

qmail-local.o: qmail-local.c hash_core.h noddylib.h \
$(QMD)/readwrite.h $(QMD)/sig.h $(QMD)/env.h $(QMD)/byte.h $(QMD)/exit.h \
$(QMD)/fork.h $(QMD)/open.h $(QMD)/wait.h $(QMD)/lock.h $(QMD)/seek.h \
$(QMD)/substdio.h $(QMD)/getln.h $(QMD)/strerr.h $(QMD)/subfd.h \
$(QMD)/substdio.h $(QMD)/sgetopt.h $(QMD)/subgetopt.h $(QMD)/alloc.h \
$(QMD)/error.h $(QMD)/stralloc.h $(QMD)/gen_alloc.h $(QMD)/fmt.h \
$(QMD)/str.h $(QMD)/now.h $(QMD)/datetime.h $(QMD)/case.h $(QMD)/quote.h \
$(QMD)/qmail.h $(QMD)/substdio.h $(QMD)/slurpclose.h $(QMD)/myctime.h \
$(QMD)/gfrom.h $(QMD)/auto_patrn.h
	$(QMD)/compile -I $(QMD) qmail-local.c

qmail-local: qmail-local.o hash_core.o noddylib.o ${QMD}/load $(QMD)/qmail.o \
$(QMD)/quote.o $(QMD)/now.o $(QMD)/gfrom.o $(QMD)/myctime.o \
$(QMD)/slurpclose.o $(DJB_CASE) $(QMD)/getln.a $(QMD)/getopt.a $(QMD)/sig.a \
$(QMD)/open.a $(QMD)/seek.a $(QMD)/lock.a $(QMD)/fd.a $(QMD)/wait.a \
$(DJB_ENV) $(DJB_SA) $(DJB_STRERR) $(DJB_SSTDIO) $(DJB_ERROR) $(DJB_STR) \
$(DJB_FS) $(QMD)/datetime.a $(QMD)/auto_qmail.o $(QMD)/auto_patrn.o
	$(QMD)/load qmail-local hash_core.o noddylib.o $(QMD)/qmail.o \
	$(QMD)/quote.o $(QMD)/now.o $(QMD)/gfrom.o $(QMD)/myctime.o \
	$(QMD)/slurpclose.o $(DJB_CASE) $(QMD)/getln.a $(QMD)/getopt.a \
	$(QMD)/sig.a $(QMD)/open.a $(QMD)/seek.a $(QMD)/lock.a $(QMD)/fd.a \
	$(QMD)/wait.a $(DJB_ENV) $(DJB_SA) $(DJB_STRERR) $(DJB_SSTDIO) \
	$(DJB_ERROR) $(DJB_STR) $(DJB_FS) $(QMD)/datetime.a \
	$(QMD)/auto_qmail.o $(QMD)/auto_patrn.o

showhashdir: showhashdir.c hash_core.o noddylib.o $(DJB_CORE)
	$(QMD)/compile -I $(QMD) showhashdir.c
	$(QMD)/load showhashdir hash_core.o noddylib.o $(DJB_CORE)

chhashdir:    chhashdir.c hash_core.o noddylib.o $(DJB_CORE)
	$(QMD)/compile -I $(QMD) chhashdir.c
	$(QMD)/load chhashdir hash_core.o noddylib.o $(DJB_CORE)

addhashuser:  addhashuser.c hash_core.o admin_core.o noddylib.o $(DJB_CORE)
	$(QMD)/compile -I $(QMD) addhashuser.c
	$(QMD)/load addhashuser hash_core.o admin_core.o noddylib.o $(DJB_CORE)

addhashalias: addhashalias.c hash_core.o admin_core.o noddylib.o $(DJB_CORE)
	$(QMD)/compile -I $(QMD) addhashalias.c
	$(QMD)/load addhashalias hash_core.o admin_core.o noddylib.o $(DJB_CORE)
