chiark / gitweb /
Fix uninstall target.
[misc] / Makefile
1 ## Makefile for miscellaneous stuff
2 ##
3 ## No proper build system here.  Just kludgy hacks.
4
5 PACKAGE = nsict-utils
6 VERSION = 1.1.0
7
8 BINSCRIPTS = cdb-assign cdb-list check-sender unfwd splitconf z
9 SBINSCRIPTS = shadowfix
10 SCRIPTS = $(BINSCRIPTS) $(SBINSCRIPTS)
11 BINPROGS = not cdb-probe cdb-check-domain gorp locking if-mtu
12 SBINPROGS = qmail-checkspam
13 PROGS = $(BINPROGS) $(SBINPROGS)
14 PERLLIBS = MdwOpt.pm
15 LIBS = xtitle.so
16 DISTMAN1 = \
17         not.1 z.1 cdb-assign.1 cdb-list.1 cdb-probe.1 cdb-check-domain.1 \
18         gorp.1 unfwd.1 splitconf.1 locking.1 if-mtu.1
19 MAN1 = $(DISTMAN1)
20 DISTMAN8 = qmail-checkspam.8
21 MAN8 = $(DISTMAN8) shadowfix.8
22 BUILDFILES = shadowfix.8
23 SOURCES = \
24         not.c cdb-probe.c cdb-check-domain.c gorp.c locking.c if-mtu.c \
25         qmail-checkspam.c xtitle.c
26
27 CC = gcc
28 LD = gcc
29 CFLAGS = -O2 -g -pedantic -Wall -DVERSION=\"$(VERSION)\"
30 LINK = $(LD) $(LDFLAGS) -o $@ $^
31
32 INST = 
33 prefix = /usr/local
34 bindir = $(prefix)/bin
35 sbindir = $(prefix)/sbin
36 mandir = $(prefix)/man
37 man1dir = $(mandir)/man1
38 man8dir = $(mandir)/man8
39 libdir = $(prefix)/lib
40 perllibdir = $(libdir)/site_perl
41
42 all: $(BUILDFILES) $(PROGS) $(LIBS)
43
44 install: all
45         [ -d $(INST)$(libdir) ] || install -d $(INST)$(libdir)
46         install -m644 $(LIBS) $(INST)$(libdir)
47         [ -d $(INST)$(perllibdir) ] || install -d $(INST)$(perllibdir)
48         install -m644 $(PERLLIBS) $(INST)$(perllibdir)
49         [ -d $(INST)$(bindir) ] || install -d $(INST)$(bindir)
50         install -m775 $(BINPROGS) $(BINSCRIPTS) $(INST)$(bindir)
51         [ -d $(INST)$(sbindir) ] || install -d $(INST)$(sbindir)
52         install -m775 $(SBINPROGS) $(SBINSCRIPTS) $(INST)$(sbindir)
53         [ -d $(INST)$(man1dir) ] || install -d $(INST)$(man1dir)
54         install -m644 $(MAN1) $(INST)$(man1dir)
55         [ -d $(INST)$(man8dir) ] || install -d $(INST)$(man8dir)
56         install -m644 $(MAN8) $(INST)$(man8dir)
57
58 uninstall:
59         for i in $(LIBS); do rm -f $(INST)$(libdir)/$$i; done
60         for i in $(PERLLIBS); do rm -f $(INST)$(perllibdir)/$$i; done
61         for i in $(BINPROGS) $(BINSCRIPTS); do \
62                 rm -f $(INST)$(bindir)/$$i; done
63         for i in $(SBINPROGS) $(SBINSCRIPTS); do \
64                 rm -f $(INST)$(sbindir)/$$i; done
65         for i in $(MAN1); do rm -f $(INST)$(man1dir)/$$i; done
66         for i in $(MAN8); do rm -f $(INST)$(man8dir)/$$i; done
67
68 qmail-checkspam: qmail-checkspam.o
69         $(LINK) -lspamc
70
71 cdb-probe: cdb-probe.o
72         $(LINK) -lfreecdb
73
74 cdb-check-domain: cdb-check-domain.o
75         $(LINK) -lfreecdb
76
77 not: not.o
78         $(LINK)
79
80 xtitle.o: xtitle.c
81         $(CC) $(CFLAGS) -c -fpic -I/usr/include/bash -DBASH_BUILTIN -o $@ $^
82 xtitle.so: xtitle.o
83         $(LINK) -shared
84
85 gorp: gorp.o
86         $(LINK) -lcatacomb -lmLib
87
88 locking: locking.o
89         $(LINK) -lmLib
90
91 if-mtu: if-mtu.o
92         $(LINK)
93
94 shadowfix.8: shadowfix
95         pod2man --section 8 shadowfix >shadowfix.8.new
96         mv shadowfix.8.new shadowfix.8
97
98 clean:; rm -f *.o *~ $(PROGS) $(OTHERS)
99
100 DISTDIR = $(PACKAGE)-$(VERSION)
101 DISTFILES = \
102         Makefile \
103         $(SCRIPTS) $(DISTMAN1) $(DISTMAN8) $(SOURCES) $(PERLLIBS) \
104         debian/changelog debian/control debian/copyright \
105         debian/rules debian/inst
106 distdir: $(DISTFILES)
107         $(RM) -rf $(DISTDIR)
108         mkdir $(DISTDIR) $(DISTDIR)/debian
109         for i in $(DISTFILES); do \
110           case $$i in \
111             */*) \
112               dir=$${i%/*}; \
113               up=`echo $$dir | sed 's:[^/]\+:..:g'`; \
114               mkdir -p $(DISTDIR)/$$dir;; \
115             *) dir= up=;; \
116           esac; \
117           ln -s ../$$up/$$i $(DISTDIR)/$$i; \
118         done
119 disttar: distdir
120         tar chofz $(INST)$(DISTDIR).tar.gz $(DISTDIR)
121 dist: disttar
122         $(RM) -rf $(DISTDIR)
123 distcheck: dist
124         @echo "*** Packing..."
125         $(MAKE) dist
126         @echo "*** Unpacking..."
127         tar xfz $(DISTDIR).tar.gz
128         @echo "*** Test building..."
129         set -e; \
130         cd $(DISTDIR); \
131         $(MAKE) clean; \
132         $(MAKE); \
133         $(MAKE) install INST=inst; \
134         $(MAKE) dist
135         @echo "*** Tidying up..."
136         rm -rf $(DISTDIR)
137         @echo "*** All OK"
138
139 .PHONY: all clean install dist distdir disttar