/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to Makefile

  • Committer: Teddy Hogeborn
  • Date: 2011-12-31 20:07:11 UTC
  • mfrom: (535.1.9 wireless-network-hook)
  • Revision ID: teddy@recompile.se-20111231200711-6dli3r8drftem57r
Merge new wireless network hook.  Fix bridge network hook to use
hardware addresses instead of interface names.  Implement and document
new "CONNECT" environment variable for network hooks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
6
6
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
7
7
        -Wpacked -Wnested-externs -Winline -Wvolatile-register-var
8
 
#       -Wunreachable-code 
 
8
#       -Wunreachable-code
9
9
#DEBUG=-ggdb3
10
10
# For info about _FORTIFY_SOURCE, see
11
 
# <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>
 
11
# <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>.
12
13
FORTIFY=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
13
14
LINK_FORTIFY_LD=-z relro -z now
14
15
LINK_FORTIFY=
 
16
 
 
17
# If BROKEN_PIE is set, do not build with -pie
15
18
ifndef BROKEN_PIE
16
19
FORTIFY += -fPIE
17
 
LINK_FORTIFY_LD += -fPIE
18
20
LINK_FORTIFY += -pie
19
21
endif
20
22
#COVERAGE=--coverage
21
23
OPTIMIZE=-Os
22
24
LANGUAGE=-std=gnu99
23
25
htmldir=man
24
 
version=1.0.14
 
26
version=1.4.1
25
27
SED=sed
26
28
 
 
29
USER=$(firstword $(subst :, ,$(shell getent passwd _mandos || getent passwd nobody || echo 65534)))
 
30
GROUP=$(firstword $(subst :, ,$(shell getent group _mandos || getent group nobody || echo 65534)))
 
31
 
27
32
## Use these settings for a traditional /usr/local install
28
33
# PREFIX=$(DESTDIR)/usr/local
29
34
# CONFDIR=$(DESTDIR)/etc/mandos
30
35
# KEYDIR=$(DESTDIR)/etc/mandos/keys
31
36
# MANDIR=$(PREFIX)/man
32
37
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
 
38
# STATEDIR=$(DESTDIR)/var/lib/mandos
33
39
##
34
40
 
35
41
## These settings are for a package-type install
38
44
KEYDIR=$(DESTDIR)/etc/keys/mandos
39
45
MANDIR=$(PREFIX)/share/man
40
46
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
 
47
STATEDIR=$(DESTDIR)/var/lib/mandos
41
48
##
42
49
 
43
50
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
52
59
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
53
60
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
54
61
        -DVERSION='"$(version)"'
55
 
LDFLAGS=$(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
 
62
LDFLAGS=-Xlinker --as-needed $(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
56
63
 
57
64
# Commands to format a DocBook <refentry> document into a manual page
58
 
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
 
65
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
59
66
        --param man.charmap.use.subset          0 \
60
67
        --param make.year.ranges                1 \
61
68
        --param make.single.year.ranges         1 \
63
70
        --param man.authors.section.enabled     0 \
64
71
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
65
72
        $(notdir $<); \
66
 
        $(MANPOST) $(notdir $@)
 
73
        $(MANPOST) $(notdir $@);\
 
74
        LANG=en_US.UTF-8 MANWIDTH=80 man --warnings --encoding=UTF-8 \
 
75
        --local-file $(notdir $@) >/dev/null)
67
76
# DocBook-to-man post-processing to fix a '\n' escape bug
68
77
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
69
78
 
70
 
DOCBOOKTOHTML=xsltproc --nonet --xinclude \
 
79
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
71
80
        --param make.year.ranges                1 \
72
81
        --param make.single.year.ranges         1 \
73
82
        --param man.output.quietly              1 \
75
84
        --param citerefentry.link               1 \
76
85
        --output $@ \
77
86
        /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
78
 
        $<; $(HTMLPOST) $@
 
87
        $<; $(HTMLPOST) $@)
79
88
# Fix citerefentry links
80
89
HTMLPOST=$(SED) --in-place \
81
90
        --expression='s/\(<a class="citerefentry" href="\)\("><span class="citerefentry"><span class="refentrytitle">\)\([^<]*\)\(<\/span>(\)\([^)]*\)\()<\/span><\/a>\)/\1\3.\5\2\3\4\5\6/g'
82
91
 
83
92
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
84
 
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo
 
93
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo \
 
94
        plugins.d/plymouth
85
95
CPROGS=plugin-runner $(PLUGINS)
86
 
PROGS=mandos mandos-keygen mandos-ctl $(CPROGS)
87
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
 
96
PROGS=mandos mandos-keygen mandos-ctl mandos-monitor $(CPROGS)
 
97
DOCS=mandos.8 mandos-keygen.8 mandos-monitor.8 mandos-ctl.8 \
 
98
        mandos.conf.5 mandos-clients.conf.5 plugin-runner.8mandos \
88
99
        plugins.d/mandos-client.8mandos \
89
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
90
 
        plugins.d/usplash.8mandos plugins.d/splashy.8mandos \
91
 
        plugins.d/askpass-fifo.8mandos mandos-clients.conf.5
 
100
        plugins.d/password-prompt.8mandos plugins.d/usplash.8mandos \
 
101
        plugins.d/splashy.8mandos plugins.d/askpass-fifo.8mandos \
 
102
        plugins.d/plymouth.8mandos intro.8mandos
92
103
 
93
104
htmldocs=$(addsuffix .xhtml,$(DOCS))
94
105
 
115
126
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
116
127
        $(DOCBOOKTOHTML)
117
128
 
 
129
intro.8mandos: intro.xml common.ent legalnotice.xml
 
130
        $(DOCBOOKTOMAN)
 
131
intro.8mandos.xhtml: intro.xml common.ent legalnotice.xml
 
132
        $(DOCBOOKTOHTML)
 
133
 
118
134
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
119
135
                legalnotice.xml
120
136
        $(DOCBOOKTOMAN)
129
145
                 legalnotice.xml
130
146
        $(DOCBOOKTOHTML)
131
147
 
 
148
mandos-monitor.8: mandos-monitor.xml common.ent overview.xml \
 
149
                legalnotice.xml
 
150
        $(DOCBOOKTOMAN)
 
151
mandos-monitor.8.xhtml: mandos-monitor.xml common.ent overview.xml \
 
152
                 legalnotice.xml
 
153
        $(DOCBOOKTOHTML)
 
154
 
 
155
mandos-ctl.8: mandos-ctl.xml common.ent overview.xml \
 
156
                legalnotice.xml
 
157
        $(DOCBOOKTOMAN)
 
158
mandos-ctl.8.xhtml: mandos-ctl.xml common.ent overview.xml \
 
159
                 legalnotice.xml
 
160
        $(DOCBOOKTOHTML)
 
161
 
132
162
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
133
163
                legalnotice.xml
134
164
        $(DOCBOOKTOMAN)
156
186
 
157
187
# Update all these files with version number $(version)
158
188
common.ent: Makefile
159
 
        $(SED) --in-place \
 
189
        $(strip $(SED) --in-place \
160
190
                --expression='s/^\(<!ENTITY version "\)[^"]*">$$/\1$(version)">/' \
161
 
                $@
 
191
                $@)
162
192
 
163
193
mandos: Makefile
164
 
        $(SED) --in-place \
 
194
        $(strip $(SED) --in-place \
165
195
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
166
 
                $@
 
196
                $@)
167
197
 
168
198
mandos-keygen: Makefile
169
 
        $(SED) --in-place \
 
199
        $(strip $(SED) --in-place \
170
200
                --expression='s/^\(VERSION="\)[^"]*"$$/\1$(version)"/' \
171
 
                $@
 
201
                $@)
172
202
 
173
203
mandos-ctl: Makefile
174
 
        $(SED) --in-place \
175
 
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
176
 
                $@
 
204
        $(strip $(SED) --in-place \
 
205
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
206
                $@)
 
207
 
 
208
mandos-monitor: Makefile
 
209
        $(strip $(SED) --in-place \
 
210
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
211
                $@)
177
212
 
178
213
mandos.lsm: Makefile
179
 
        $(SED) --in-place \
 
214
        $(strip $(SED) --in-place \
180
215
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
181
 
                $@
182
 
        $(SED) --in-place \
 
216
                $@)
 
217
        $(strip $(SED) --in-place \
183
218
                --expression='s/^\(Entered-date:\).*/\1\t$(shell date --rfc-3339=date --reference=Makefile)/' \
184
 
                $@
185
 
        $(SED) --in-place \
 
219
                $@)
 
220
        $(strip $(SED) --in-place \
186
221
                --expression='s/\(mandos_\)[0-9.]\+\(\.orig\.tar\.gz\)/\1$(version)\2/' \
187
 
                $@
 
222
                $@)
188
223
 
189
 
plugins.d/mandos-client: plugins.d/mandos-client.o
190
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
191
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
224
plugins.d/mandos-client: plugins.d/mandos-client.c
 
225
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
 
226
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
192
227
 
193
228
.PHONY : all doc html clean distclean run-client run-server install \
194
229
        install-server install-client uninstall uninstall-server \
200
235
distclean: clean
201
236
mostlyclean: clean
202
237
maintainer-clean: clean
203
 
        -rm --force --recursive keydir confdir
 
238
        -rm --force --recursive keydir confdir statedir
204
239
 
205
240
check:  all
206
241
        ./mandos --check
220
255
        @echo "###################################################################"
221
256
        ./plugin-runner --plugin-dir=plugins.d \
222
257
                --config-file=plugin-runner.conf \
223
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt \
 
258
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
224
259
                $(CLIENTARGS)
225
260
 
226
261
# Used by run-client
230
265
 
231
266
# Run the server with a local config
232
267
run-server: confdir/mandos.conf confdir/clients.conf
233
 
        @echo "#################################################################"
234
 
        @echo "# NOTE: Please IGNORE errors about \"No permission to bind to    #"
235
 
        @echo "# interface\" or \"Could not open file u'/var/run/mandos.pid'\" -  #"
236
 
        @echo "# they are harmless and are caused by the server not running as #"
237
 
        @echo "# root.  Do NOT run \"make run-server\" server as root if you did #"
238
 
        @echo "# not also unpack and compile it as root.                       #"
239
 
        @echo "#################################################################"
240
 
        ./mandos --debug --no-dbus --configdir=confdir $(SERVERARGS)
 
268
        ./mandos --debug --no-dbus --configdir=confdir \
 
269
                --statedir=statedir $(SERVERARGS)
241
270
 
242
271
# Used by run-server
243
272
confdir/mandos.conf: mandos.conf
248
277
        install --mode=u=rw $< $@
249
278
# Add a client password
250
279
        ./mandos-keygen --dir keydir --password >> $@
 
280
statedir:
 
281
        install --directory statedir
251
282
 
252
283
install: install-server install-client-nokey
253
284
 
258
289
 
259
290
install-server: doc
260
291
        install --directory $(CONFDIR)
 
292
        install --directory --mode=u=rwx --owner=$(USER) \
 
293
                --group=$(GROUP) $(STATEDIR)
261
294
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
 
295
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
296
                mandos-ctl
 
297
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
298
                mandos-monitor
262
299
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
263
300
                mandos.conf
264
301
        install --mode=u=rw --target-directory=$(CONFDIR) \
265
302
                clients.conf
 
303
        install --mode=u=rw,go=r dbus-mandos.conf \
 
304
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
266
305
        install --mode=u=rwx,go=rx init.d-mandos \
267
306
                $(DESTDIR)/etc/init.d/mandos
268
307
        install --mode=u=rw,go=r default-mandos \
272
311
        fi
273
312
        gzip --best --to-stdout mandos.8 \
274
313
                > $(MANDIR)/man8/mandos.8.gz
 
314
        gzip --best --to-stdout mandos-monitor.8 \
 
315
                > $(MANDIR)/man8/mandos-monitor.8.gz
 
316
        gzip --best --to-stdout mandos-ctl.8 \
 
317
                > $(MANDIR)/man8/mandos-ctl.8.gz
275
318
        gzip --best --to-stdout mandos.conf.5 \
276
319
                > $(MANDIR)/man5/mandos.conf.5.gz
277
320
        gzip --best --to-stdout mandos-clients.conf.5 \
285
328
                install --mode=u=rwx \
286
329
                        --directory "$(CONFDIR)/plugins.d"; \
287
330
        fi
 
331
        install --mode=u=rwx,go=rx --directory \
 
332
                "$(CONFDIR)/network-hooks.d"
288
333
        install --mode=u=rwx,go=rx \
289
334
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
290
335
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
304
349
        install --mode=u=rwxs,go=rx \
305
350
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
306
351
                plugins.d/askpass-fifo
 
352
        install --mode=u=rwxs,go=rx \
 
353
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
354
                plugins.d/plymouth
307
355
        install initramfs-tools-hook \
308
356
                $(INITRAMFSTOOLS)/hooks/mandos
309
357
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
315
363
                > $(MANDIR)/man8/mandos-keygen.8.gz
316
364
        gzip --best --to-stdout plugin-runner.8mandos \
317
365
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
 
366
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
 
367
                > $(MANDIR)/man8/mandos-client.8mandos.gz
318
368
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
319
369
                > $(MANDIR)/man8/password-prompt.8mandos.gz
320
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
321
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
322
370
        gzip --best --to-stdout plugins.d/usplash.8mandos \
323
371
                > $(MANDIR)/man8/usplash.8mandos.gz
324
372
        gzip --best --to-stdout plugins.d/splashy.8mandos \
325
373
                > $(MANDIR)/man8/splashy.8mandos.gz
326
374
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
327
375
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
 
376
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
 
377
                > $(MANDIR)/man8/plymouth.8mandos.gz
328
378
 
329
379
install-client: install-client-nokey
330
380
# Post-installation stuff
336
386
 
337
387
uninstall-server:
338
388
        -rm --force $(PREFIX)/sbin/mandos \
 
389
                $(PREFIX)/sbin/mandos-ctl \
 
390
                $(PREFIX)/sbin/mandos-monitor \
339
391
                $(MANDIR)/man8/mandos.8.gz \
 
392
                $(MANDIR)/man8/mandos-monitor.8.gz \
 
393
                $(MANDIR)/man8/mandos-ctl.8.gz \
340
394
                $(MANDIR)/man5/mandos.conf.5.gz \
341
395
                $(MANDIR)/man5/mandos-clients.conf.5.gz
342
396
        update-rc.d -f mandos remove
354
408
                $(PREFIX)/lib/mandos/plugins.d/usplash \
355
409
                $(PREFIX)/lib/mandos/plugins.d/splashy \
356
410
                $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
 
411
                $(PREFIX)/lib/mandos/plugins.d/plymouth \
357
412
                $(INITRAMFSTOOLS)/hooks/mandos \
358
413
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
359
414
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
415
                $(MANDIR)/man8/mandos-keygen.8.gz \
360
416
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
361
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
 
417
                $(MANDIR)/man8/mandos-client.8mandos.gz
362
418
                $(MANDIR)/man8/password-prompt.8mandos.gz \
363
419
                $(MANDIR)/man8/usplash.8mandos.gz \
364
420
                $(MANDIR)/man8/splashy.8mandos.gz \
365
421
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
366
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
 
422
                $(MANDIR)/man8/plymouth.8mandos.gz \
367
423
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
368
424
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
369
425
        update-initramfs -k all -u
372
428
 
373
429
purge-server: uninstall-server
374
430
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
 
431
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
375
432
                $(DESTDIR)/etc/default/mandos \
376
433
                $(DESTDIR)/etc/init.d/mandos \
377
434
                $(DESTDIR)/var/run/mandos.pid