chiark / gitweb /
cdb-map: New program to construct CDB files.
[misc] / Makefile
index e50424d21871b22c8d183329c817af780125c55e..30921f5811908bf7014b93a6a53cb0619fc7389d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,53 +2,72 @@
 ##
 ## No proper build system here.  Just kludgy hacks.
 
-VERSION = 1.1.0
-
-SCRIPTS = \
-       cdb-assign cdb-list \
-       unfwd splitconf
-
-PROGS = \
-       qmail-checkspam not \
-       cdb-probe cdb-check-domain \
-       gorp \
-       locking if-mtu
-
-OTHERS = \
-       xtitle.so
-
-MAN1 = \
-       not.1 \
-       cdb-assign.1 cdb-list.1 cdb-probe.1 cdb-check-domain.1 \
-       gorp.1 \
-       unfwd.1 splitconf.1 locking.1 if-mtu.1
-
-MAN8 = \
-       qmail-checkspam.8
+PACKAGE = nsict-utils
+VERSION = 1.1.1
+
+BINSCRIPTS = \
+       cdb-assign cdb-map cdb-list check-sender unfwd \
+       splitconf z buf create inplace
+SBINSCRIPTS = shadowfix
+SCRIPTS = $(BINSCRIPTS) $(SBINSCRIPTS)
+BINPROGS = not cdb-probe cdb-check-domain gorp locking if-mtu pause
+SBINPROGS = qmail-checkspam
+PROGS = $(BINPROGS) $(SBINPROGS)
+PERLLIBS = MdwOpt.pm
+LIBS = xtitle.so
+DISTMAN1 = \
+       not.1 z.1 cdb-assign.1 cdb-map.1 cdb-list.1 cdb-probe.1 \
+               cdb-check-domain.1 \
+       gorp.1 unfwd.1 splitconf.1 locking.1 if-mtu.1 pause.1 \
+       buf.1 create.1 inplace.1
+MAN1 = $(DISTMAN1)
+DISTMAN8 = qmail-checkspam.8
+MAN8 = $(DISTMAN8) shadowfix.8
+BUILDFILES = shadowfix.8
+SOURCES = \
+       not.c cdb-probe.c cdb-check-domain.c gorp.c locking.c if-mtu.c \
+       qmail-checkspam.c xtitle.c pause.c
 
 CC = gcc
 LD = gcc
 CFLAGS = -O2 -g -pedantic -Wall -DVERSION=\"$(VERSION)\"
 LINK = $(LD) $(LDFLAGS) -o $@ $^
 
+INST = 
 prefix = /usr/local
 bindir = $(prefix)/bin
+sbindir = $(prefix)/sbin
 mandir = $(prefix)/man
 man1dir = $(mandir)/man1
 man8dir = $(mandir)/man8
 libdir = $(prefix)/lib
+perllibdir = $(libdir)/site_perl
 
-all: $(PROGS) $(OTHERS)
+all: $(BUILDFILES) $(PROGS) $(LIBS)
 
 install: all
-       [ -d $(bindir) ] || install -d $(bindir)
-       install -m775 $(PROGS) $(SCRIPTS) $(bindir)
-       [ -d $(man1dir) ] || install -d $(man1dir)
-       install -m644 $(MAN1) $(man1dir)
-       [ -d $(man8dir) ] || install -d $(man8dir)
-       install -m644 $(MAN8) $(man8dir)
-       [ -d $(libdir) ] || install -d $(libdir)
-       install -m644 xtitle.so $(libdir)
+       [ -d $(INST)$(libdir) ] || install -d $(INST)$(libdir)
+       install -m644 $(LIBS) $(INST)$(libdir)
+       [ -d $(INST)$(perllibdir) ] || install -d $(INST)$(perllibdir)
+       install -m644 $(PERLLIBS) $(INST)$(perllibdir)
+       [ -d $(INST)$(bindir) ] || install -d $(INST)$(bindir)
+       install -m775 $(BINPROGS) $(BINSCRIPTS) $(INST)$(bindir)
+       [ -d $(INST)$(sbindir) ] || install -d $(INST)$(sbindir)
+       install -m775 $(SBINPROGS) $(SBINSCRIPTS) $(INST)$(sbindir)
+       [ -d $(INST)$(man1dir) ] || install -d $(INST)$(man1dir)
+       install -m644 $(MAN1) $(INST)$(man1dir)
+       [ -d $(INST)$(man8dir) ] || install -d $(INST)$(man8dir)
+       install -m644 $(MAN8) $(INST)$(man8dir)
+
+uninstall:
+       for i in $(LIBS); do rm -f $(INST)$(libdir)/$$i; done
+       for i in $(PERLLIBS); do rm -f $(INST)$(perllibdir)/$$i; done
+       for i in $(BINPROGS) $(BINSCRIPTS); do \
+               rm -f $(INST)$(bindir)/$$i; done
+       for i in $(SBINPROGS) $(SBINSCRIPTS); do \
+               rm -f $(INST)$(sbindir)/$$i; done
+       for i in $(MAN1); do rm -f $(INST)$(man1dir)/$$i; done
+       for i in $(MAN8); do rm -f $(INST)$(man8dir)/$$i; done
 
 qmail-checkspam: qmail-checkspam.o
        $(LINK) -lspamc
@@ -70,12 +89,58 @@ xtitle.so: xtitle.o
 gorp: gorp.o
        $(LINK) -lcatacomb -lmLib
 
+pause: pause.o
+       $(LINK) -lmLib
+
 locking: locking.o
        $(LINK) -lmLib
 
 if-mtu: if-mtu.o
        $(LINK)
 
+shadowfix.8: shadowfix
+       pod2man --section 8 shadowfix >shadowfix.8.new
+       mv shadowfix.8.new shadowfix.8
+
 clean:; rm -f *.o *~ $(PROGS) $(OTHERS)
 
-.PHONY: all clean install
+DISTDIR = $(PACKAGE)-$(VERSION)
+DISTFILES = \
+       Makefile \
+       $(SCRIPTS) $(DISTMAN1) $(DISTMAN8) $(SOURCES) $(PERLLIBS) \
+       debian/changelog debian/control debian/copyright \
+       debian/rules debian/inst
+distdir: $(DISTFILES)
+       $(RM) -rf $(DISTDIR)
+       mkdir $(DISTDIR) $(DISTDIR)/debian
+       for i in $(DISTFILES); do \
+         case $$i in \
+           */*) \
+             dir=$${i%/*}; \
+             up=`echo $$dir | sed 's:[^/]\+:..:g'`; \
+             mkdir -p $(DISTDIR)/$$dir;; \
+           *) dir= up=;; \
+         esac; \
+         ln -s ../$$up/$$i $(DISTDIR)/$$i; \
+       done
+disttar: distdir
+       tar chofz $(INST)$(DISTDIR).tar.gz $(DISTDIR)
+dist: disttar
+       $(RM) -rf $(DISTDIR)
+distcheck: dist
+       @echo "*** Packing..."
+       $(MAKE) dist
+       @echo "*** Unpacking..."
+       tar xfz $(DISTDIR).tar.gz
+       @echo "*** Test building..."
+       set -e; \
+       cd $(DISTDIR); \
+       $(MAKE) clean; \
+       $(MAKE); \
+       $(MAKE) install INST=inst; \
+       $(MAKE) dist
+       @echo "*** Tidying up..."
+       rm -rf $(DISTDIR)
+       @echo "*** All OK"
+
+.PHONY: all clean install dist distdir disttar