/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
11
# <http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html>
13
13
FORTIFY=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
14
14
LINK_FORTIFY_LD=-z relro -z now
15
15
LINK_FORTIFY=
 
16
 
 
17
# If BROKEN_PIE is set, do not build with -pie
16
18
ifndef BROKEN_PIE
17
19
FORTIFY += -fPIE
18
 
LINK_FORTIFY_LD += -fPIE
19
20
LINK_FORTIFY += -pie
20
21
endif
21
22
#COVERAGE=--coverage
22
23
OPTIMIZE=-Os
23
24
LANGUAGE=-std=gnu99
24
25
htmldir=man
25
 
version=1.0.14
 
26
version=1.4.1
26
27
SED=sed
27
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
 
28
32
## Use these settings for a traditional /usr/local install
29
33
# PREFIX=$(DESTDIR)/usr/local
30
34
# CONFDIR=$(DESTDIR)/etc/mandos
31
35
# KEYDIR=$(DESTDIR)/etc/mandos/keys
32
36
# MANDIR=$(PREFIX)/man
33
37
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
 
38
# STATEDIR=$(DESTDIR)/var/lib/mandos
34
39
##
35
40
 
36
41
## These settings are for a package-type install
39
44
KEYDIR=$(DESTDIR)/etc/keys/mandos
40
45
MANDIR=$(PREFIX)/share/man
41
46
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
 
47
STATEDIR=$(DESTDIR)/var/lib/mandos
42
48
##
43
49
 
44
50
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
53
59
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
54
60
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
55
61
        -DVERSION='"$(version)"'
56
 
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))
57
63
 
58
64
# Commands to format a DocBook <refentry> document into a manual page
59
65
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
64
70
        --param man.authors.section.enabled     0 \
65
71
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
66
72
        $(notdir $<); \
67
 
        $(MANPOST) $(notdir $@))
 
73
        $(MANPOST) $(notdir $@);\
 
74
        LANG=en_US.UTF-8 MANWIDTH=80 man --warnings --encoding=UTF-8 \
 
75
        --local-file $(notdir $@) >/dev/null)
68
76
# DocBook-to-man post-processing to fix a '\n' escape bug
69
77
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
70
78
 
82
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'
83
91
 
84
92
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
85
 
        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
86
95
CPROGS=plugin-runner $(PLUGINS)
87
 
PROGS=mandos mandos-keygen mandos-ctl $(CPROGS)
88
 
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 \
89
99
        plugins.d/mandos-client.8mandos \
90
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
91
 
        plugins.d/usplash.8mandos plugins.d/splashy.8mandos \
92
 
        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
93
103
 
94
104
htmldocs=$(addsuffix .xhtml,$(DOCS))
95
105
 
116
126
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
117
127
        $(DOCBOOKTOHTML)
118
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
 
119
134
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
120
135
                legalnotice.xml
121
136
        $(DOCBOOKTOMAN)
130
145
                 legalnotice.xml
131
146
        $(DOCBOOKTOHTML)
132
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
 
133
162
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
134
163
                legalnotice.xml
135
164
        $(DOCBOOKTOMAN)
176
205
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
177
206
                $@)
178
207
 
 
208
mandos-monitor: Makefile
 
209
        $(strip $(SED) --in-place \
 
210
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
211
                $@)
 
212
 
179
213
mandos.lsm: Makefile
180
214
        $(strip $(SED) --in-place \
181
215
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
188
222
                $@)
189
223
 
190
224
plugins.d/mandos-client: plugins.d/mandos-client.c
191
 
        $(LINK.c) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) $(strip\
192
 
                ) $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
225
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
 
226
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
193
227
 
194
228
.PHONY : all doc html clean distclean run-client run-server install \
195
229
        install-server install-client uninstall uninstall-server \
201
235
distclean: clean
202
236
mostlyclean: clean
203
237
maintainer-clean: clean
204
 
        -rm --force --recursive keydir confdir
 
238
        -rm --force --recursive keydir confdir statedir
205
239
 
206
240
check:  all
207
241
        ./mandos --check
208
242
 
209
243
# Run the client with a local config and key
210
244
run-client: all keydir/seckey.txt keydir/pubkey.txt
 
245
        @echo "###################################################################"
 
246
        @echo "# The following error messages are harmless and can be safely     #"
 
247
        @echo "# ignored.  The messages are caused by not running as root, but   #"
 
248
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
 
249
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
 
250
        @echo "# From plugin-runner: setuid: Operation not permitted             #"
 
251
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
 
252
        @echo "# From mandos-client: setuid: Operation not permitted             #"
 
253
        @echo "#                     seteuid: Operation not permitted            #"
 
254
        @echo "#                     klogctl: Operation not permitted            #"
 
255
        @echo "###################################################################"
211
256
        ./plugin-runner --plugin-dir=plugins.d \
212
257
                --config-file=plugin-runner.conf \
213
 
                --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 \
214
259
                $(CLIENTARGS)
215
260
 
216
261
# Used by run-client
220
265
 
221
266
# Run the server with a local config
222
267
run-server: confdir/mandos.conf confdir/clients.conf
223
 
        ./mandos --debug --no-dbus --configdir=confdir $(SERVERARGS)
 
268
        ./mandos --debug --no-dbus --configdir=confdir \
 
269
                --statedir=statedir $(SERVERARGS)
224
270
 
225
271
# Used by run-server
226
272
confdir/mandos.conf: mandos.conf
231
277
        install --mode=u=rw $< $@
232
278
# Add a client password
233
279
        ./mandos-keygen --dir keydir --password >> $@
 
280
statedir:
 
281
        install --directory statedir
234
282
 
235
283
install: install-server install-client-nokey
236
284
 
241
289
 
242
290
install-server: doc
243
291
        install --directory $(CONFDIR)
 
292
        install --directory --mode=u=rwx --owner=$(USER) \
 
293
                --group=$(GROUP) $(STATEDIR)
244
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
245
299
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
246
300
                mandos.conf
247
301
        install --mode=u=rw --target-directory=$(CONFDIR) \
248
302
                clients.conf
 
303
        install --mode=u=rw,go=r dbus-mandos.conf \
 
304
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
249
305
        install --mode=u=rwx,go=rx init.d-mandos \
250
306
                $(DESTDIR)/etc/init.d/mandos
251
307
        install --mode=u=rw,go=r default-mandos \
255
311
        fi
256
312
        gzip --best --to-stdout mandos.8 \
257
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
258
318
        gzip --best --to-stdout mandos.conf.5 \
259
319
                > $(MANDIR)/man5/mandos.conf.5.gz
260
320
        gzip --best --to-stdout mandos-clients.conf.5 \
268
328
                install --mode=u=rwx \
269
329
                        --directory "$(CONFDIR)/plugins.d"; \
270
330
        fi
 
331
        install --mode=u=rwx,go=rx --directory \
 
332
                "$(CONFDIR)/network-hooks.d"
271
333
        install --mode=u=rwx,go=rx \
272
334
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
273
335
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
287
349
        install --mode=u=rwxs,go=rx \
288
350
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
289
351
                plugins.d/askpass-fifo
 
352
        install --mode=u=rwxs,go=rx \
 
353
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
354
                plugins.d/plymouth
290
355
        install initramfs-tools-hook \
291
356
                $(INITRAMFSTOOLS)/hooks/mandos
292
357
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
298
363
                > $(MANDIR)/man8/mandos-keygen.8.gz
299
364
        gzip --best --to-stdout plugin-runner.8mandos \
300
365
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
 
366
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
 
367
                > $(MANDIR)/man8/mandos-client.8mandos.gz
301
368
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
302
369
                > $(MANDIR)/man8/password-prompt.8mandos.gz
303
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
304
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
305
370
        gzip --best --to-stdout plugins.d/usplash.8mandos \
306
371
                > $(MANDIR)/man8/usplash.8mandos.gz
307
372
        gzip --best --to-stdout plugins.d/splashy.8mandos \
308
373
                > $(MANDIR)/man8/splashy.8mandos.gz
309
374
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
310
375
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
 
376
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
 
377
                > $(MANDIR)/man8/plymouth.8mandos.gz
311
378
 
312
379
install-client: install-client-nokey
313
380
# Post-installation stuff
319
386
 
320
387
uninstall-server:
321
388
        -rm --force $(PREFIX)/sbin/mandos \
 
389
                $(PREFIX)/sbin/mandos-ctl \
 
390
                $(PREFIX)/sbin/mandos-monitor \
322
391
                $(MANDIR)/man8/mandos.8.gz \
 
392
                $(MANDIR)/man8/mandos-monitor.8.gz \
 
393
                $(MANDIR)/man8/mandos-ctl.8.gz \
323
394
                $(MANDIR)/man5/mandos.conf.5.gz \
324
395
                $(MANDIR)/man5/mandos-clients.conf.5.gz
325
396
        update-rc.d -f mandos remove
337
408
                $(PREFIX)/lib/mandos/plugins.d/usplash \
338
409
                $(PREFIX)/lib/mandos/plugins.d/splashy \
339
410
                $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
 
411
                $(PREFIX)/lib/mandos/plugins.d/plymouth \
340
412
                $(INITRAMFSTOOLS)/hooks/mandos \
341
413
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
342
414
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
415
                $(MANDIR)/man8/mandos-keygen.8.gz \
343
416
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
344
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
 
417
                $(MANDIR)/man8/mandos-client.8mandos.gz
345
418
                $(MANDIR)/man8/password-prompt.8mandos.gz \
346
419
                $(MANDIR)/man8/usplash.8mandos.gz \
347
420
                $(MANDIR)/man8/splashy.8mandos.gz \
348
421
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
349
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
 
422
                $(MANDIR)/man8/plymouth.8mandos.gz \
350
423
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
351
424
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
352
425
        update-initramfs -k all -u
355
428
 
356
429
purge-server: uninstall-server
357
430
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
 
431
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
358
432
                $(DESTDIR)/etc/default/mandos \
359
433
                $(DESTDIR)/etc/init.d/mandos \
360
434
                $(DESTDIR)/var/run/mandos.pid