/mandos/release

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

« back to all changes in this revision

Viewing changes to Makefile

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:
1
 
WARN=-O -Wall -Wextra -Wdouble-promotion -Wformat=2 -Winit-self \
2
 
        -Wmissing-include-dirs -Wswitch-default -Wswitch-enum \
3
 
        -Wunused -Wuninitialized -Wstrict-overflow=5 \
4
 
        -Wsuggest-attribute=pure -Wsuggest-attribute=const \
5
 
        -Wsuggest-attribute=noreturn -Wfloat-equal -Wundef -Wshadow \
 
1
WARN=-O -Wall -Wformat=2 -Winit-self -Wmissing-include-dirs \
 
2
        -Wswitch-default -Wswitch-enum -Wunused-parameter \
 
3
        -Wstrict-aliasing=1 -Wextra -Wfloat-equal -Wundef -Wshadow \
6
4
        -Wunsafe-loop-optimizations -Wpointer-arith \
7
5
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
8
 
        -Wconversion -Wlogical-op -Waggregate-return \
9
 
        -Wstrict-prototypes -Wold-style-definition \
10
 
        -Wmissing-format-attribute -Wnormalized=nfc -Wpacked \
11
 
        -Wredundant-decls -Wnested-externs -Winline -Wvla \
12
 
        -Wvolatile-register-var -Woverlength-strings
 
6
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
 
7
        -Wpacked -Wnested-externs -Winline -Wvolatile-register-var
 
8
#       -Wunreachable-code
13
9
#DEBUG=-ggdb3
14
 
# For info about _FORTIFY_SOURCE, see feature_test_macros(7)
 
10
# For info about _FORTIFY_SOURCE, see
 
11
# <http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html>
15
12
# and <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>.
16
13
FORTIFY=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
17
14
LINK_FORTIFY_LD=-z relro -z now
23
20
LINK_FORTIFY += -pie
24
21
endif
25
22
#COVERAGE=--coverage
26
 
OPTIMIZE=-Os -fno-strict-aliasing
 
23
OPTIMIZE=-Os
27
24
LANGUAGE=-std=gnu99
28
25
htmldir=man
29
 
version=1.6.5
 
26
version=1.4.1
30
27
SED=sed
31
28
 
32
29
USER=$(firstword $(subst :, ,$(shell getent passwd _mandos || getent passwd nobody || echo 65534)))
39
36
# MANDIR=$(PREFIX)/man
40
37
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
41
38
# STATEDIR=$(DESTDIR)/var/lib/mandos
42
 
# LIBDIR=$(PREFIX)/lib
43
39
##
44
40
 
45
41
## These settings are for a package-type install
49
45
MANDIR=$(PREFIX)/share/man
50
46
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
51
47
STATEDIR=$(DESTDIR)/var/lib/mandos
52
 
LIBDIR=$(shell \
53
 
        for d in \
54
 
        "/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`" \
55
 
        "`rpm --eval='%{_libdir}' 2>/dev/null`" /usr/lib; do \
56
 
                if [ -d "$$d" -a "$$d" = "$${d%/}" ]; then \
57
 
                        echo "$(DESTDIR)$$d"; \
58
 
                        break; \
59
 
                fi; \
60
 
        done)
61
48
##
62
49
 
63
 
SYSTEMD=$(DESTDIR)$(shell pkg-config systemd --variable=systemdsystemunitdir)
64
 
 
65
50
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
66
51
GNUTLS_LIBS=$(shell pkg-config --libs gnutls)
67
52
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
71
56
        getconf LFS_LDFLAGS)
72
57
 
73
58
# Do not change these two
74
 
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
 
59
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
75
60
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
76
61
        -DVERSION='"$(version)"'
77
 
LDFLAGS+=-Xlinker --as-needed $(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))
78
63
 
79
64
# Commands to format a DocBook <refentry> document into a manual page
80
65
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
83
68
        --param make.single.year.ranges         1 \
84
69
        --param man.output.quietly              1 \
85
70
        --param man.authors.section.enabled     0 \
86
 
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
 
71
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
87
72
        $(notdir $<); \
88
 
        if locale --all 2>/dev/null | grep --regexp='^en_US\.utf8$$' \
89
 
        && type man 2>/dev/null; then LANG=en_US.UTF-8 MANWIDTH=80 \
90
 
        man --warnings --encoding=UTF-8 --local-file $(notdir $@); \
91
 
        fi >/dev/null)
 
73
        $(MANPOST) $(notdir $@);\
 
74
        LANG=en_US.UTF-8 MANWIDTH=80 man --warnings --encoding=UTF-8 \
 
75
        --local-file $(notdir $@) >/dev/null)
 
76
# DocBook-to-man post-processing to fix a '\n' escape bug
 
77
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
92
78
 
93
79
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
94
80
        --param make.year.ranges                1 \
239
225
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
240
226
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
241
227
 
242
 
.PHONY : all doc html clean distclean mostlyclean maintainer-clean \
243
 
        check run-client run-server install install-html \
244
 
        install-server install-client-nokey install-client uninstall \
245
 
        uninstall-server uninstall-client purge purge-server \
246
 
        purge-client
 
228
.PHONY : all doc html clean distclean run-client run-server install \
 
229
        install-server install-client uninstall uninstall-server \
 
230
        uninstall-client purge purge-server purge-client
247
231
 
248
232
clean:
249
233
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
255
239
 
256
240
check:  all
257
241
        ./mandos --check
258
 
        ./mandos-ctl --check
259
242
 
260
243
# Run the client with a local config and key
261
244
run-client: all keydir/seckey.txt keydir/pubkey.txt
281
264
        ./mandos-keygen --dir keydir --force
282
265
 
283
266
# Run the server with a local config
284
 
run-server: confdir/mandos.conf confdir/clients.conf statedir
 
267
run-server: confdir/mandos.conf confdir/clients.conf
285
268
        ./mandos --debug --no-dbus --configdir=confdir \
286
269
                --statedir=statedir $(SERVERARGS)
287
270
 
306
289
 
307
290
install-server: doc
308
291
        install --directory $(CONFDIR)
309
 
        if install --directory --mode=u=rwx --owner=$(USER) \
310
 
                --group=$(GROUP) $(STATEDIR); then \
311
 
                :; \
312
 
        elif install --directory --mode=u=rwx $(STATEDIR); then \
313
 
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
314
 
        fi
 
292
        install --directory --mode=u=rwx --owner=$(USER) \
 
293
                --group=$(GROUP) $(STATEDIR)
315
294
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
316
295
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
317
296
                mandos-ctl
325
304
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
326
305
        install --mode=u=rwx,go=rx init.d-mandos \
327
306
                $(DESTDIR)/etc/init.d/mandos
328
 
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
329
 
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
330
 
        fi
331
307
        install --mode=u=rw,go=r default-mandos \
332
308
                $(DESTDIR)/etc/default/mandos
333
309
        if [ -z $(DESTDIR) ]; then \
343
319
                > $(MANDIR)/man5/mandos.conf.5.gz
344
320
        gzip --best --to-stdout mandos-clients.conf.5 \
345
321
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
346
 
        gzip --best --to-stdout intro.8mandos \
347
 
                > $(MANDIR)/man8/intro.8mandos.gz
348
322
 
349
323
install-client-nokey: all doc
350
 
        install --directory $(LIBDIR)/mandos $(CONFDIR)
 
324
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
351
325
        install --directory --mode=u=rwx $(KEYDIR) \
352
 
                $(LIBDIR)/mandos/plugins.d
353
 
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
 
326
                $(PREFIX)/lib/mandos/plugins.d
 
327
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
354
328
                install --mode=u=rwx \
355
329
                        --directory "$(CONFDIR)/plugins.d"; \
356
330
        fi
357
331
        install --mode=u=rwx,go=rx --directory \
358
332
                "$(CONFDIR)/network-hooks.d"
359
333
        install --mode=u=rwx,go=rx \
360
 
                --target-directory=$(LIBDIR)/mandos plugin-runner
 
334
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
361
335
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
362
336
                mandos-keygen
363
337
        install --mode=u=rwx,go=rx \
364
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
338
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
365
339
                plugins.d/password-prompt
366
340
        install --mode=u=rwxs,go=rx \
367
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
341
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
368
342
                plugins.d/mandos-client
369
343
        install --mode=u=rwxs,go=rx \
370
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
344
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
371
345
                plugins.d/usplash
372
346
        install --mode=u=rwxs,go=rx \
373
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
347
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
374
348
                plugins.d/splashy
375
349
        install --mode=u=rwxs,go=rx \
376
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
350
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
377
351
                plugins.d/askpass-fifo
378
352
        install --mode=u=rwxs,go=rx \
379
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
353
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
380
354
                plugins.d/plymouth
381
355
        install initramfs-tools-hook \
382
356
                $(INITRAMFSTOOLS)/hooks/mandos
428
402
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
429
403
                $(DESTDIR)/etc/crypttab
430
404
        -rm --force $(PREFIX)/sbin/mandos-keygen \
431
 
                $(LIBDIR)/mandos/plugin-runner \
432
 
                $(LIBDIR)/mandos/plugins.d/password-prompt \
433
 
                $(LIBDIR)/mandos/plugins.d/mandos-client \
434
 
                $(LIBDIR)/mandos/plugins.d/usplash \
435
 
                $(LIBDIR)/mandos/plugins.d/splashy \
436
 
                $(LIBDIR)/mandos/plugins.d/askpass-fifo \
437
 
                $(LIBDIR)/mandos/plugins.d/plymouth \
 
405
                $(PREFIX)/lib/mandos/plugin-runner \
 
406
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
 
407
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
 
408
                $(PREFIX)/lib/mandos/plugins.d/usplash \
 
409
                $(PREFIX)/lib/mandos/plugins.d/splashy \
 
410
                $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
 
411
                $(PREFIX)/lib/mandos/plugins.d/plymouth \
438
412
                $(INITRAMFSTOOLS)/hooks/mandos \
439
413
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
440
414
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
446
420
                $(MANDIR)/man8/splashy.8mandos.gz \
447
421
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
448
422
                $(MANDIR)/man8/plymouth.8mandos.gz \
449
 
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
450
 
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
 
423
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
 
424
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
451
425
        update-initramfs -k all -u
452
426
 
453
427
purge: purge-server purge-client
457
431
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
458
432
                $(DESTDIR)/etc/default/mandos \
459
433
                $(DESTDIR)/etc/init.d/mandos \
460
 
                $(SYSTEMD)/mandos.service \
461
 
                $(DESTDIR)/run/mandos.pid \
462
434
                $(DESTDIR)/var/run/mandos.pid
463
435
        -rmdir $(CONFDIR)
464
436