chiark / gitweb /
gitignore: Move debian/ entries to debian/.gitignore
[userv.git] / Makefile.in
1 #  userv - Makefile.in
2 #  
3 #  userv is
4 #  Copyright 1996-2017 Ian Jackson <ian@davenant.greenend.org.uk>.
5 #  Copyright 2000      Ben Harris <bjh21@cam.ac.uk>
6 #  Copyright 2016-2017 Peter Benie <pjb1008@cam.ac.uk>
7 #  
8 #  This is free software; you can redistribute it and/or modify it
9 #  under the terms of the GNU General Public License as published by
10 #  the Free Software Foundation; either version 3 of the License, or
11 #  (at your option) any later version.
12 #  
13 #  This program is distributed in the hope that it will be useful, but
14 #  WITHOUT ANY WARRANTY; without even the implied warranty of
15 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 #  General Public License for more details.
17 #  
18 #  You should have received a copy of the GNU General Public License
19 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21
22 VERSION=@VERSION@
23 VEREXT=std
24
25 CC=@CC@
26 CFLAGS=@CFLAGS@ $(XCFLAGS) -DVERSION='"$(VERSION)"' -DVEREXT='"$(VEREXT)"' $(WERROR) $(XCFLAGS)
27 OPTIMISE=@OPTIMISE@
28 CPPFLAGS=@DEBUGDEFS@ $(XCPPFLAGS)
29 LDLIBS=@DEBUGLIBS@ @LIBS@ $(XLDLIBS)
30
31 M4=m4
32 M4FLAGS=
33 LEX=flex
34 MD5SUM=@MD5SUM_SIMPLE@
35 CWD=$(shell pwd)
36
37 INSTALL_GROUP=0  # root or wheel
38 INSTALL_FLAGS=-o root -g $(INSTALL_GROUP)
39
40 INSTALL=@INSTALL@
41 INSTALL_PROGRAM=@INSTALL_PROGRAM@ $(INSTALL_FLAGS)
42 INSTALL_DATA=@INSTALL_DATA@ $(INSTALL_FLAGS)
43 prefix=@prefix@
44 exec_prefix=$(prefix)
45 share_prefix=$(prefix)/share
46 bindir=$(exec_prefix)/bin
47 mandir=$(share_prefix)/man
48 man1dir=$(mandir)/man1
49 man8dir=$(mandir)/man8
50 sbindir=$(exec_prefix)/sbin
51 etcdir=/etc
52 etcsubdir=$(etcdir)/userv
53 docdir=$(share_prefix)/doc/userv
54
55 TARGETS=        daemon client
56 TARGETS_DOC_PS= spec.ps overview.ps
57 TARGETS_DOC_RM= $(TARGETS_DOC_PS) spec.html
58 TARGETS_DOC=    $(TARGETS_DOC_PS) spec.html/index.html
59 MAN1PAGES=      userv.1
60 MAN8PAGES=      uservd.8
61
62 SOURCES=        Makefile.in configure.in acconfig.h                     \
63                 client.c common.h                                       \
64                 overlord.c process.c servexec.c                         \
65                 daemon.h debug.c parser.c lib.c lib.h                   \
66                 language.i4 lexer.l.m4 tokens.h.m4
67
68 CONFIG_RESULTS= config.status config.log config.h config.cache \
69                 Makefile pcsum.h
70
71 GENSHIP_CLEAN=  lexer.l lexer.c tokens.h config.h.in spec.sgml $(TARGETS_DOC)
72 GENSHIP=        $(GENSHIP_CLEAN) configure
73
74 all:            $(TARGETS)
75
76 docs:           $(TARGETS_DOC)
77
78 install:        all
79                 $(INSTALL) -d $(addprefix $(DESTDIR), $(bindir) $(sbindir))
80                 $(INSTALL_PROGRAM) -m 755 daemon $(DESTDIR)$(sbindir)/uservd
81                 $(INSTALL_PROGRAM) -m 4755 client $(DESTDIR)$(bindir)/userv
82                 set -e; for f in '' /default.d /services.d /override.d; do \
83                         $(INSTALL) -d -m 2755 $(DESTDIR)$(etcsubdir)$$f; \
84                 done
85                 set -e; for f in system.default system.override; do     \
86                         if test ! -f $(DESTDIR)$(etcsubdir)/$$f; then   \
87                                 $(INSTALL_DATA) $$f $(DESTDIR)$(etcsubdir); \
88                         fi;                                             \
89                 done
90
91 install-strip:
92                 $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
93
94 install-doc:    $(TARGETS_DOC)
95                 $(INSTALL) -d -m 2755 $(addprefix $(DESTDIR),   \
96                         $(docdir) $(docdir)/spec.html           \
97                         $(mandir) $(man1dir) $(man8dir)         \
98                 )
99                 $(INSTALL_DATA) -m 644 $(TARGETS_DOC_PS) $(DESTDIR)$(docdir)/.
100                 $(INSTALL_DATA) -m 644 spec.html/*.html \
101                         $(DESTDIR)$(docdir)/spec.html/.
102                 $(INSTALL_DATA) -m 644 $(MAN1PAGES) $(DESTDIR)$(man1dir)
103                 $(INSTALL_DATA) -m 644 $(MAN8PAGES) $(DESTDIR)$(man8dir)
104
105 uninstall:
106                 rm -f $(bindir)/userv $(sbindir)/uservd
107
108 uninstall-doc:
109                 cd $docdir && rm -rf $(TARGETS_DOC_RM)
110
111 check:
112                 @echo There is no validation suite for this package.
113
114 daemon:         overlord.o process.o servexec.o parserlexer.o debug.o lib.o both.o
115                 $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
116
117 client:         client.o both.o
118                 $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
119
120 lexer.l:        language.i4
121
122 spec.sgml:      spec.sgml.in Makefile
123                 sed -e '/<version><\/version>/ s/>/&$(VERSION)/' \
124                         spec.sgml.in >$@.new && mv -f $@.new $@
125
126 client.o:       config.h common.h pcsum.h both.h version.h
127
128 process.o:      config.h common.h pcsum.h both.h daemon.h lib.h tokens.h
129
130 overlord.o:     config.h common.h pcsum.h daemon.h
131
132 servexec.o:     config.h common.h pcsum.h daemon.h lib.h version.h
133
134 lib.o:          config.h common.h lib.h
135
136 debug.o:        config.h common.h pcsum.h daemon.h lib.h tokens.h
137
138 parserlexer.o:  lexer.c parser.c config.h common.h pcsum.h daemon.h lib.h tokens.h
139 # lexer.c #include's parser.c at the end.  Blame flex.
140                 $(CC) -c $(CPPFLAGS) $(CFLAGS) lexer.c -o $@
141
142 pcsum.h:        common.h config.h config.status Makefile
143                 cat $^ | $(MD5SUM) \
144                         | sed -e 's/  -$$//; s/../0x&,/g; s/,$$//;' \
145                         >pcsum.h.new
146                 cmp pcsum.h.new pcsum.h || mv -f pcsum.h.new pcsum.h
147                 @rm -f pcsum.h.new
148
149 version.h:      Makefile
150                 echo '#define VERSION "$(VERSION)"' >$@.new && mv -f $@.new $@
151
152 tokens.h:       language.i4
153
154 autoconf configure:
155                 autoheader
156                 autoconf
157
158 clean:
159                 find -name '*.orig' -o -name '*~' -o -name '.*~' \
160                         -o -name '*#' -o -name '.#*' -o -name '*.bak' \
161                         | xargs -r rm
162                 rm -rf $(TARGETS) *.o core version.h
163                 rm -f overview.eps
164                 rm -f spec.lout* spec.text* spec.ps* spec.sgml.new spec.tex
165                 rm -f lout.li *.ld *.lix *.ldx
166                 rm -f userv-*.tar.gz vd/*
167
168 distclean mostlyclean:  clean
169                 rm -f $(CONFIG_RESULTS)
170
171 maintainer-clean:       distclean
172                 rm -rf $(GENSHIP_CLEAN) spec.html/*.html
173
174 dist-prep:      $(GENSHIP)
175
176 pre-checkin:
177                 ./configure
178                 $(MAKE) dist-prep
179
180 dist_tmp=dist_tmp/userv-$(VERSION)
181 dist_prune=\( -name CVS -o -name 'dist_tmp*' -o -name slash-etc -o -name vd \)
182 dist:                   dist-prep distclean
183         rm -rf dist_tmp*
184         mkdir dist_tmp $(dist_tmp)
185         find $(dist_prune) -prune -o -type d -print | \
186                 sed -e 's#.*#mkdir -p $(dist_tmp)/&#' | sh
187         find $(dist_prune) -prune -o -type f -print | \
188                 sed -e 's#.*#ln & $(dist_tmp)/&#' | sh
189         cd dist_tmp && tar cf ../$(dist_tmp).tar `basename $(dist_tmp)`
190         gzip -9 $(dist_tmp).tar
191         mv $(dist_tmp).tar.gz .
192
193 linecount:      $(SOURCES)
194                 wc -l $^
195
196 %.html/index.html:      %.sgml
197                         debiandoc2html $<
198
199 %.ps:           %.sgml
200                 debiandoc2ps -1 -O $< >$@.new && mv $@.new $@
201
202 %.ps:           %.fig
203                 fig2dev -L ps -c -l dummy -P -z A4 $< >$@.new && mv $@.new $@
204
205 %.l:            %.l.m4
206                 $(M4) $(M4FLAGS) -- $< >$@.new && mv $@.new $@
207
208 %.h:            %.h.m4
209                 $(M4) $(M4FLAGS) -- $< >$@.new && mv $@.new $@
210
211 %:              %.m4
212                 $(M4) $(M4FLAGS) -- $< >$@.new && mv $@.new $@