/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:
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
27
 
LANGUAGE=-std=gnu11
 
23
OPTIMIZE=-Os
 
24
LANGUAGE=-std=gnu99
28
25
htmldir=man
29
 
version=1.6.9
 
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)
69
54
GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
70
55
GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
71
56
        getconf LFS_LDFLAGS)
72
 
LIBNL3_CFLAGS=$(shell pkg-config --cflags-only-I libnl-route-3.0)
73
 
LIBNL3_LIBS=$(shell pkg-config --libs libnl-route-3.0)
74
57
 
75
58
# Do not change these two
76
 
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
 
59
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
77
60
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
78
61
        -DVERSION='"$(version)"'
79
 
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))
80
63
 
81
64
# Commands to format a DocBook <refentry> document into a manual page
82
65
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
85
68
        --param make.single.year.ranges         1 \
86
69
        --param man.output.quietly              1 \
87
70
        --param man.authors.section.enabled     0 \
88
 
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
 
71
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
89
72
        $(notdir $<); \
90
 
        if locale --all 2>/dev/null | grep --regexp='^en_US\.utf8$$' \
91
 
        && type man 2>/dev/null; then LANG=en_US.UTF-8 MANWIDTH=80 \
92
 
        man --warnings --encoding=UTF-8 --local-file $(notdir $@); \
93
 
        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'
94
78
 
95
79
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
96
80
        --param make.year.ranges                1 \
108
92
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
109
93
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo \
110
94
        plugins.d/plymouth
111
 
PLUGIN_HELPERS=plugin-helpers/mandos-client-iprouteadddel
112
 
CPROGS=plugin-runner $(PLUGINS) $(PLUGIN_HELPERS)
 
95
CPROGS=plugin-runner $(PLUGINS)
113
96
PROGS=mandos mandos-keygen mandos-ctl mandos-monitor $(CPROGS)
114
97
DOCS=mandos.8 mandos-keygen.8 mandos-monitor.8 mandos-ctl.8 \
115
98
        mandos.conf.5 mandos-clients.conf.5 plugin-runner.8mandos \
242
225
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
243
226
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
244
227
 
245
 
plugin-helpers/mandos-client-iprouteadddel: plugin-helpers/mandos-client-iprouteadddel.c
246
 
        $(LINK.c) $(LIBNL3_CFLAGS) $^ $(LIBNL3_LIBS) $(strip\
247
 
                ) $(LOADLIBES) $(LDLIBS) -o $@
248
 
 
249
 
.PHONY : all doc html clean distclean mostlyclean maintainer-clean \
250
 
        check run-client run-server install install-html \
251
 
        install-server install-client-nokey install-client uninstall \
252
 
        uninstall-server uninstall-client purge purge-server \
253
 
        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
254
231
 
255
232
clean:
256
233
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
262
239
 
263
240
check:  all
264
241
        ./mandos --check
265
 
        ./mandos-ctl --check
266
242
 
267
243
# Run the client with a local config and key
268
244
run-client: all keydir/seckey.txt keydir/pubkey.txt
271
247
        @echo "# ignored.  The messages are caused by not running as root, but   #"
272
248
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
273
249
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
274
 
        @echo "# From plugin-runner: setgid: Operation not permitted             #"
275
 
        @echo "#                     setuid: Operation not permitted             #"
 
250
        @echo "# From plugin-runner: setuid: Operation not permitted             #"
276
251
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
277
 
        @echo "# From mandos-client:                                             #"
278
 
        @echo "#             Failed to raise privileges: Operation not permitted #"
279
 
        @echo "#             Warning: network hook \"*\" exited with status *      #"
 
252
        @echo "# From mandos-client: setuid: Operation not permitted             #"
 
253
        @echo "#                     seteuid: Operation not permitted            #"
 
254
        @echo "#                     klogctl: Operation not permitted            #"
280
255
        @echo "###################################################################"
281
 
# We set GNOME_KEYRING_CONTROL to block pam_gnome_keyring
282
256
        ./plugin-runner --plugin-dir=plugins.d \
283
 
                --plugin-helper-dir=plugin-helpers \
284
257
                --config-file=plugin-runner.conf \
285
258
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
286
 
                --env-for=mandos-client:GNOME_KEYRING_CONTROL= \
287
259
                $(CLIENTARGS)
288
260
 
289
261
# Used by run-client
292
264
        ./mandos-keygen --dir keydir --force
293
265
 
294
266
# Run the server with a local config
295
 
run-server: confdir/mandos.conf confdir/clients.conf statedir
 
267
run-server: confdir/mandos.conf confdir/clients.conf
296
268
        ./mandos --debug --no-dbus --configdir=confdir \
297
269
                --statedir=statedir $(SERVERARGS)
298
270
 
304
276
        install --directory confdir
305
277
        install --mode=u=rw $< $@
306
278
# Add a client password
307
 
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
 
279
        ./mandos-keygen --dir keydir --password >> $@
308
280
statedir:
309
281
        install --directory statedir
310
282
 
317
289
 
318
290
install-server: doc
319
291
        install --directory $(CONFDIR)
320
 
        if install --directory --mode=u=rwx --owner=$(USER) \
321
 
                --group=$(GROUP) $(STATEDIR); then \
322
 
                :; \
323
 
        elif install --directory --mode=u=rwx $(STATEDIR); then \
324
 
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
325
 
        fi
 
292
        install --directory --mode=u=rwx --owner=$(USER) \
 
293
                --group=$(GROUP) $(STATEDIR)
326
294
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
327
295
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
328
296
                mandos-ctl
336
304
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
337
305
        install --mode=u=rwx,go=rx init.d-mandos \
338
306
                $(DESTDIR)/etc/init.d/mandos
339
 
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
340
 
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
341
 
        fi
342
307
        install --mode=u=rw,go=r default-mandos \
343
308
                $(DESTDIR)/etc/default/mandos
344
309
        if [ -z $(DESTDIR) ]; then \
354
319
                > $(MANDIR)/man5/mandos.conf.5.gz
355
320
        gzip --best --to-stdout mandos-clients.conf.5 \
356
321
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
357
 
        gzip --best --to-stdout intro.8mandos \
358
 
                > $(MANDIR)/man8/intro.8mandos.gz
359
322
 
360
323
install-client-nokey: all doc
361
 
        install --directory $(LIBDIR)/mandos $(CONFDIR)
 
324
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
362
325
        install --directory --mode=u=rwx $(KEYDIR) \
363
 
                $(LIBDIR)/mandos/plugins.d \
364
 
                $(LIBDIR)/mandos/plugin-helpers
365
 
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
 
326
                $(PREFIX)/lib/mandos/plugins.d
 
327
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
366
328
                install --mode=u=rwx \
367
329
                        --directory "$(CONFDIR)/plugins.d"; \
368
 
                install --directory "$(CONFDIR)/plugin-helpers"; \
369
330
        fi
370
331
        install --mode=u=rwx,go=rx --directory \
371
332
                "$(CONFDIR)/network-hooks.d"
372
333
        install --mode=u=rwx,go=rx \
373
 
                --target-directory=$(LIBDIR)/mandos plugin-runner
 
334
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
374
335
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
375
336
                mandos-keygen
376
337
        install --mode=u=rwx,go=rx \
377
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
338
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
378
339
                plugins.d/password-prompt
379
340
        install --mode=u=rwxs,go=rx \
380
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
341
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
381
342
                plugins.d/mandos-client
382
343
        install --mode=u=rwxs,go=rx \
383
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
344
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
384
345
                plugins.d/usplash
385
346
        install --mode=u=rwxs,go=rx \
386
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
347
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
387
348
                plugins.d/splashy
388
349
        install --mode=u=rwxs,go=rx \
389
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
350
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
390
351
                plugins.d/askpass-fifo
391
352
        install --mode=u=rwxs,go=rx \
392
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
353
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
393
354
                plugins.d/plymouth
394
 
        install --mode=u=rwxs,go=rx \
395
 
                --target-directory=$(LIBDIR)/mandos/plugin-helpers \
396
 
                plugin-helpers/mandos-client-iprouteadddel
397
355
        install initramfs-tools-hook \
398
356
                $(INITRAMFSTOOLS)/hooks/mandos
399
357
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
444
402
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
445
403
                $(DESTDIR)/etc/crypttab
446
404
        -rm --force $(PREFIX)/sbin/mandos-keygen \
447
 
                $(LIBDIR)/mandos/plugin-runner \
448
 
                $(LIBDIR)/mandos/plugins.d/password-prompt \
449
 
                $(LIBDIR)/mandos/plugins.d/mandos-client \
450
 
                $(LIBDIR)/mandos/plugins.d/usplash \
451
 
                $(LIBDIR)/mandos/plugins.d/splashy \
452
 
                $(LIBDIR)/mandos/plugins.d/askpass-fifo \
453
 
                $(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 \
454
412
                $(INITRAMFSTOOLS)/hooks/mandos \
455
413
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
456
414
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
462
420
                $(MANDIR)/man8/splashy.8mandos.gz \
463
421
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
464
422
                $(MANDIR)/man8/plymouth.8mandos.gz \
465
 
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
466
 
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
 
423
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
 
424
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
467
425
        update-initramfs -k all -u
468
426
 
469
427
purge: purge-server purge-client
473
431
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
474
432
                $(DESTDIR)/etc/default/mandos \
475
433
                $(DESTDIR)/etc/init.d/mandos \
476
 
                $(SYSTEMD)/mandos.service \
477
 
                $(DESTDIR)/run/mandos.pid \
478
434
                $(DESTDIR)/var/run/mandos.pid
479
435
        -rmdir $(CONFDIR)
480
436