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