RSS

(root)/trunk : /Makefile (revision 416)

Line Revision Contents
1 67 WARN=-O -Wall -Wformat=2 -Winit-self -Wmissing-include-dirs \
2         -Wswitch-default -Wswitch-enum -Wunused-parameter \
3 304         -Wstrict-aliasing=1 -Wextra -Wfloat-equal -Wundef -Wshadow \
4 67         -Wunsafe-loop-optimizations -Wpointer-arith \
5         -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
6         -Wconversion -Wstrict-prototypes -Wold-style-definition \
7 177         -Wpacked -Wnested-externs -Winline -Wvolatile-register-var
8 #       -Wunreachable-code 
9 #DEBUG=-ggdb3
10 28 # For info about _FORTIFY_SOURCE, see
11 389 # <http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html>
12 # and <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>.
13 395 FORTIFY=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
14 LINK_FORTIFY_LD=-z relro -z now
15 LINK_FORTIFY=
16 399
17 # If BROKEN_PIE is set, do not build with -pie
18 395 ifndef BROKEN_PIE
19 FORTIFY += -fPIE
20 LINK_FORTIFY += -pie
21 endif
22 24.1.91 #COVERAGE=--coverage
23 24.1.51 OPTIMIZE=-Os
24 21 LANGUAGE=-std=gnu99
25 217 htmldir=man
26 395 version=1.0.14
27 217 SED=sed
28 175
29 ## Use these settings for a traditional /usr/local install
30 # PREFIX=$(DESTDIR)/usr/local
31 177 # CONFDIR=$(DESTDIR)/etc/mandos
32 # KEYDIR=$(DESTDIR)/etc/mandos/keys
33 175 # MANDIR=$(PREFIX)/man
34 177 # INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
35 ##
36 175
37 177 ## These settings are for a package-type install
38 96 PREFIX=$(DESTDIR)/usr
39 CONFDIR=$(DESTDIR)/etc/mandos
40 160 KEYDIR=$(DESTDIR)/etc/keys/mandos
41 175 MANDIR=$(PREFIX)/share/man
42 INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
43 177 ##
44 21
45 345 GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
46 GNUTLS_LIBS=$(shell pkg-config --libs gnutls)
47 81 AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
48 AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
49 317 GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
50 GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
51         getconf LFS_LDFLAGS)
52 81
53 21 # Do not change these two
54 81 CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
55 217         $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
56         -DVERSION='"$(version)"'
57 257.1.1 LDFLAGS=$(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
58 16
59 175 # Commands to format a DocBook <refentry> document into a manual page
60 398 DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
61 62         --param man.charmap.use.subset          0 \
62         --param make.year.ranges                1 \
63         --param make.single.year.ranges         1 \
64         --param man.output.quietly              1 \
65 84         --param man.authors.section.enabled     0 \
66 91          /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
67         $(notdir $<); \
68 398         $(MANPOST) $(notdir $@))
69 175 # DocBook-to-man post-processing to fix a '\n' escape bug
70 217 MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
71 24.1.25
72 398 DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
73 216         --param make.year.ranges                1 \
74         --param make.single.year.ranges         1 \
75         --param man.output.quietly              1 \
76         --param man.authors.section.enabled     0 \
77         --param citerefentry.link               1 \
78         --output $@ \
79         /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
80 398         $<; $(HTMLPOST) $@)
81 216 # Fix citerefentry links
82 235 HTMLPOST=$(SED) --in-place \
83         --expression='s/\(<a class="citerefentry" href="\)\("><span class="citerefentry"><span class="refentrytitle">\)\([^<]*\)\(<\/span>(\)\([^)]*\)\()<\/span><\/a>\)/\1\3.\5\2\3\4\5\6/g'
84 216
85 205 PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
86 214         plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo
87 217 CPROGS=plugin-runner $(PLUGINS)
88 24.1.121 PROGS=mandos mandos-keygen mandos-ctl $(CPROGS)
89 74 DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
90 171         plugins.d/mandos-client.8mandos \
91 67         plugins.d/password-prompt.8mandos mandos.conf.5 \
92 225         plugins.d/usplash.8mandos plugins.d/splashy.8mandos \
93 226         plugins.d/askpass-fifo.8mandos mandos-clients.conf.5
94 16
95 216 htmldocs=$(addsuffix .xhtml,$(DOCS))
96
97 217 objects=$(addsuffix .o,$(CPROGS))
98 16
99 233 all: $(PROGS) mandos.lsm
100 67
101 doc: $(DOCS)
102 24.1.25
103 216 html: $(htmldocs)
104
105 217 %.5: %.xml common.ent legalnotice.xml
106         $(DOCBOOKTOMAN)
107 %.5.xhtml: %.xml common.ent legalnotice.xml
108         $(DOCBOOKTOHTML)
109
110 %.8: %.xml common.ent legalnotice.xml
111         $(DOCBOOKTOMAN)
112 %.8.xhtml: %.xml common.ent legalnotice.xml
113         $(DOCBOOKTOHTML)
114
115 %.8mandos: %.xml common.ent legalnotice.xml
116         $(DOCBOOKTOMAN)
117 %.8mandos.xhtml: %.xml common.ent legalnotice.xml
118         $(DOCBOOKTOHTML)
119
120 mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
121                 legalnotice.xml
122         $(DOCBOOKTOMAN)
123 mandos.8.xhtml: mandos.xml common.ent mandos-options.xml \
124                 overview.xml legalnotice.xml
125         $(DOCBOOKTOHTML)
126
127 mandos-keygen.8: mandos-keygen.xml common.ent overview.xml \
128                 legalnotice.xml
129         $(DOCBOOKTOMAN)
130 mandos-keygen.8.xhtml: mandos-keygen.xml common.ent overview.xml \
131                  legalnotice.xml
132         $(DOCBOOKTOHTML)
133
134 mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
135                 legalnotice.xml
136         $(DOCBOOKTOMAN)
137 mandos.conf.5.xhtml: mandos.conf.xml common.ent mandos-options.xml \
138                 legalnotice.xml
139         $(DOCBOOKTOHTML)
140
141 plugin-runner.8mandos: plugin-runner.xml common.ent overview.xml \
142                 legalnotice.xml
143         $(DOCBOOKTOMAN)
144 plugin-runner.8mandos.xhtml: plugin-runner.xml common.ent \
145                 overview.xml legalnotice.xml
146 216         $(DOCBOOKTOHTML)
147 143
148 171 plugins.d/mandos-client.8mandos: plugins.d/mandos-client.xml \
149 217                                         common.ent \
150 143                                         mandos-options.xml \
151                                         overview.xml legalnotice.xml
152 91         $(DOCBOOKTOMAN)
153 216 plugins.d/mandos-client.8mandos.xhtml: plugins.d/mandos-client.xml \
154 217                                         common.ent \
155 216                                         mandos-options.xml \
156                                         overview.xml legalnotice.xml
157         $(DOCBOOKTOHTML)
158 16
159 217 # Update all these files with version number $(version)
160 common.ent: Makefile
161 398         $(strip $(SED) --in-place \
162 318                 --expression='s/^\(<!ENTITY version "\)[^"]*">$$/\1$(version)">/' \
163 398                 $@)
164 217
165 mandos: Makefile
166 398         $(strip $(SED) --in-place \
167 235                 --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
168 398                 $@)
169 217
170 mandos-keygen: Makefile
171 398         $(strip $(SED) --in-place \
172 235                 --expression='s/^\(VERSION="\)[^"]*"$$/\1$(version)"/' \
173 398                 $@)
174 217
175 24.1.121 mandos-ctl: Makefile
176 398         $(strip $(SED) --in-place \
177 240                 --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
178 398                 $@)
179 240
180 233 mandos.lsm: Makefile
181 398         $(strip $(SED) --in-place \
182 235                 --expression='s/^\(Version:\).*/\1\t$(version)/' \
183 398                 $@)
184         $(strip $(SED) --in-place \
185 235                 --expression='s/^\(Entered-date:\).*/\1\t$(shell date --rfc-3339=date --reference=Makefile)/' \
186 398                 $@)
187         $(strip $(SED) --in-place \
188 255                 --expression='s/\(mandos_\)[0-9.]\+\(\.orig\.tar\.gz\)/\1$(version)\2/' \
189 398                 $@)
190 233
191 398 plugins.d/mandos-client: plugins.d/mandos-client.c
192         $(LINK.c) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) $(strip\
193                 ) $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
194 81
195 216 .PHONY : all doc html clean distclean run-client run-server install \
196 67         install-server install-client uninstall uninstall-server \
197         uninstall-client purge purge-server purge-client
198 47
199 1 clean:
200 217         -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
201 47
202 distclean: clean
203 mostlyclean: clean
204 maintainer-clean: clean
205 104         -rm --force --recursive keydir confdir
206 47
207 217 check:  all
208 47         ./mandos --check
209
210 141 # Run the client with a local config and key
211 159 run-client: all keydir/seckey.txt keydir/pubkey.txt
212 74         ./plugin-runner --plugin-dir=plugins.d \
213 141                 --config-file=plugin-runner.conf \
214 260                 --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt \
215                 $(CLIENTARGS)
216 47
217 104 # Used by run-client
218 keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
219         install --directory keydir
220         ./mandos-keygen --dir keydir --force
221
222 # Run the server with a local config
223 run-server: confdir/mandos.conf confdir/clients.conf
224 292         ./mandos --debug --no-dbus --configdir=confdir $(SERVERARGS)
225 104
226 # Used by run-server
227 confdir/mandos.conf: mandos.conf
228         install --directory confdir
229 160         install --mode=u=rw,go=r $^ $@
230 104 confdir/clients.conf: clients.conf keydir/seckey.txt
231         install --directory confdir
232 166         install --mode=u=rw $< $@
233 104 # Add a client password
234         ./mandos-keygen --dir keydir --password >> $@
235 67
236 182 install: install-server install-client-nokey
237 67
238 235 install-html: html
239 217         install --directory $(htmldir)
240         install --mode=u=rw,go=r --target-directory=$(htmldir) \
241                 $(htmldocs)
242 216
243 67 install-server: doc
244 185         install --directory $(CONFDIR)
245 160         install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
246 162         install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
247                 mandos.conf
248 166         install --mode=u=rw --target-directory=$(CONFDIR) \
249 67                 clients.conf
250 175         install --mode=u=rwx,go=rx init.d-mandos \
251                 $(DESTDIR)/etc/init.d/mandos
252         install --mode=u=rw,go=r default-mandos \
253                 $(DESTDIR)/etc/default/mandos
254 200         if [ -z $(DESTDIR) ]; then \
255                 update-rc.d mandos defaults 25 15;\
256         fi
257 67         gzip --best --to-stdout mandos.8 \
258 74                 > $(MANDIR)/man8/mandos.8.gz
259 67         gzip --best --to-stdout mandos.conf.5 \
260 74                 > $(MANDIR)/man5/mandos.conf.5.gz
261 67         gzip --best --to-stdout mandos-clients.conf.5 \
262 74                 > $(MANDIR)/man5/mandos-clients.conf.5.gz
263 67
264 182 install-client-nokey: all doc
265 185         install --directory $(PREFIX)/lib/mandos $(CONFDIR)
266         install --directory --mode=u=rwx $(KEYDIR) \
267 162                 $(PREFIX)/lib/mandos/plugins.d
268 170         if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
269 166                 install --mode=u=rwx \
270 199                         --directory "$(CONFDIR)/plugins.d"; \
271 166         fi
272 162         install --mode=u=rwx,go=rx \
273                 --target-directory=$(PREFIX)/lib/mandos plugin-runner
274 160         install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
275 74                 mandos-keygen
276 160         install --mode=u=rwx,go=rx \
277 74                 --target-directory=$(PREFIX)/lib/mandos/plugins.d \
278 67                 plugins.d/password-prompt
279 160         install --mode=u=rwxs,go=rx \
280 74                 --target-directory=$(PREFIX)/lib/mandos/plugins.d \
281 171                 plugins.d/mandos-client
282 208         install --mode=u=rwxs,go=rx \
283 160                 --target-directory=$(PREFIX)/lib/mandos/plugins.d \
284                 plugins.d/usplash
285 205         install --mode=u=rwxs,go=rx \
286                 --target-directory=$(PREFIX)/lib/mandos/plugins.d \
287                 plugins.d/splashy
288 214         install --mode=u=rwxs,go=rx \
289                 --target-directory=$(PREFIX)/lib/mandos/plugins.d \
290                 plugins.d/askpass-fifo
291 67         install initramfs-tools-hook \
292 175                 $(INITRAMFSTOOLS)/hooks/mandos
293 185         install --mode=u=rw,go=r initramfs-tools-hook-conf \
294 175                 $(INITRAMFSTOOLS)/conf-hooks.d/mandos
295 74         install initramfs-tools-script \
296 302                 $(INITRAMFSTOOLS)/scripts/init-premount/mandos
297 160         install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
298 67         gzip --best --to-stdout mandos-keygen.8 \
299 74                 > $(MANDIR)/man8/mandos-keygen.8.gz
300         gzip --best --to-stdout plugin-runner.8mandos \
301                 > $(MANDIR)/man8/plugin-runner.8mandos.gz
302 67         gzip --best --to-stdout plugins.d/password-prompt.8mandos \
303 74                 > $(MANDIR)/man8/password-prompt.8mandos.gz
304 171         gzip --best --to-stdout plugins.d/mandos-client.8mandos \
305                 > $(MANDIR)/man8/mandos-client.8mandos.gz
306 225         gzip --best --to-stdout plugins.d/usplash.8mandos \
307                 > $(MANDIR)/man8/usplash.8mandos.gz
308         gzip --best --to-stdout plugins.d/splashy.8mandos \
309                 > $(MANDIR)/man8/splashy.8mandos.gz
310 226         gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
311                 > $(MANDIR)/man8/askpass-fifo.8mandos.gz
312 182
313 install-client: install-client-nokey
314 166 # Post-installation stuff
315 160         -$(PREFIX)/sbin/mandos-keygen --dir "$(KEYDIR)"
316 67         update-initramfs -k all -u
317 160         echo "Now run mandos-keygen --password --dir $(KEYDIR)"
318 67
319 uninstall: uninstall-server uninstall-client
320
321 160 uninstall-server:
322 74         -rm --force $(PREFIX)/sbin/mandos \
323                 $(MANDIR)/man8/mandos.8.gz \
324                 $(MANDIR)/man5/mandos.conf.5.gz \
325                 $(MANDIR)/man5/mandos-clients.conf.5.gz
326 162         update-rc.d -f mandos remove
327 163         -rmdir $(CONFDIR)
328 67
329 uninstall-client:
330 74 # Refuse to uninstall client if /etc/crypttab is explicitly configured
331 # to use it.
332         ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
333 175                 $(DESTDIR)/etc/crypttab
334 74         -rm --force $(PREFIX)/sbin/mandos-keygen \
335                 $(PREFIX)/lib/mandos/plugin-runner \
336                 $(PREFIX)/lib/mandos/plugins.d/password-prompt \
337 171                 $(PREFIX)/lib/mandos/plugins.d/mandos-client \
338 166                 $(PREFIX)/lib/mandos/plugins.d/usplash \
339 205                 $(PREFIX)/lib/mandos/plugins.d/splashy \
340 226                 $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
341 175                 $(INITRAMFSTOOLS)/hooks/mandos \
342                 $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
343 302                 $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
344 74                 $(MANDIR)/man8/plugin-runner.8mandos.gz \
345                 $(MANDIR)/man8/mandos-keygen.8.gz \
346                 $(MANDIR)/man8/password-prompt.8mandos.gz \
347 225                 $(MANDIR)/man8/usplash.8mandos.gz \
348                 $(MANDIR)/man8/splashy.8mandos.gz \
349 226                 $(MANDIR)/man8/askpass-fifo.8mandos.gz \
350 171                 $(MANDIR)/man8/mandos-client.8mandos.gz
351 74         -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
352 166                  $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
353 74         update-initramfs -k all -u
354 67
355 purge: purge-server purge-client
356
357 purge-server: uninstall-server
358 162         -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
359 175                 $(DESTDIR)/etc/default/mandos \
360                 $(DESTDIR)/etc/init.d/mandos \
361                 $(DESTDIR)/var/run/mandos.pid
362 74         -rmdir $(CONFDIR)
363 67
364 purge-client: uninstall-client
365 160         -shred --remove $(KEYDIR)/seckey.txt
366 161         -rm --force $(CONFDIR)/plugin-runner.conf \
367                 $(KEYDIR)/pubkey.txt $(KEYDIR)/seckey.txt
368 160         -rmdir $(KEYDIR) $(CONFDIR)/plugins.d $(CONFDIR)

Loggerhead is a web-based interface for Bazaar branches