/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: Björn Påhlsson
  • Date: 2008-07-20 02:52:20 UTC
  • Revision ID: belorn@braxen-20080720025220-r5u0388uy9iu23h6
Added following support:
Pluginbased client handler
rewritten Mandos client
       Avahi instead of udp server discovery
       openpgp encrypted key support
Passprompt stand alone application for direct console input
Added logging for Mandos server

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
WARN=-O -Wall -Wformat=2 -Winit-self -Wmissing-include-dirs \
2
 
        -Wswitch-default -Wswitch-enum -Wunused-parameter \
3
 
        -Wstrict-aliasing=2 -Wextra -Wfloat-equal -Wundef -Wshadow \
4
 
        -Wunsafe-loop-optimizations -Wpointer-arith \
5
 
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
6
 
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
7
 
        -Wpacked -Wnested-externs -Wunreachable-code -Winline \
8
 
        -Wvolatile-register-var
9
 
DEBUG=-ggdb3
10
 
# For info about _FORTIFY_SOURCE, see
11
 
# <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>
12
 
FORTIFY=-D_FORTIFY_SOURCE=2 # -fstack-protector-all
13
 
#COVERAGE=--coverage
14
 
OPTIMIZE=-Os
15
 
LANGUAGE=-std=gnu99
16
 
# PREFIX=/usr/local
17
 
PREFIX=$(DESTDIR)/usr
18
 
# CONFDIR=/usr/local/lib/mandos
19
 
CONFDIR=$(DESTDIR)/etc/mandos
20
 
# MANDIR=/usr/local/man
21
 
MANDIR=$(DESTDIR)/usr/share/man
22
 
 
23
 
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
24
 
GNUTLS_LIBS=$(shell libgnutls-config --libs)
25
 
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
26
 
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
27
 
GPGME_CFLAGS=$(shell gpgme-config --cflags)
28
 
GPGME_LIBS=$(shell gpgme-config --libs)
29
 
 
30
 
# Do not change these two
31
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
32
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
33
 
LDFLAGS=$(COVERAGE)
34
 
 
35
 
# Commands to format a DocBook refentry document into a manual page
36
 
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
37
 
        --param man.charmap.use.subset          0 \
38
 
        --param make.year.ranges                1 \
39
 
        --param make.single.year.ranges         1 \
40
 
        --param man.output.quietly              1 \
41
 
        --param man.authors.section.enabled     0 \
42
 
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
43
 
        $(notdir $<); \
44
 
        $(MANPOST) $(notdir $@)
45
 
# DocBook-to-man post-processing to fix a \n escape bug
46
 
MANPOST=sed --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
47
 
 
48
 
PLUGINS=plugins.d/password-prompt plugins.d/password-request
49
 
PROGS=plugin-runner $(PLUGINS)
50
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
51
 
        plugins.d/password-request.8mandos \
52
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
53
 
        mandos-clients.conf.5
54
 
 
55
 
objects=$(addsuffix .o,$(PROGS))
56
 
 
57
 
all: $(PROGS)
58
 
 
59
 
doc: $(DOCS)
60
 
 
61
 
%.5: %.xml legalnotice.xml
62
 
        $(DOCBOOKTOMAN)
63
 
 
64
 
%.8: %.xml legalnotice.xml
65
 
        $(DOCBOOKTOMAN)
66
 
 
67
 
%.8mandos: %.xml legalnotice.xml
68
 
        $(DOCBOOKTOMAN)
69
 
 
70
 
mandos.8: mandos.xml mandos-options.xml overview.xml legalnotice.xml
71
 
        $(DOCBOOKTOMAN)
72
 
 
73
 
mandos-keygen.8: mandos-keygen.xml overview.xml legalnotice.xml
74
 
        $(DOCBOOKTOMAN)
75
 
 
76
 
mandos.conf.5: mandos.conf.xml mandos-options.xml legalnotice.xml
77
 
        $(DOCBOOKTOMAN)
78
 
 
79
 
plugin-runner.8mandos: plugin-runner.xml overview.xml legalnotice.xml
80
 
        $(DOCBOOKTOMAN)
81
 
 
82
 
plugins.d/password-request.8mandos: plugins.d/password-request.xml \
83
 
                                        mandos-options.xml \
84
 
                                        overview.xml legalnotice.xml
85
 
        $(DOCBOOKTOMAN)
86
 
 
87
 
plugins.d/password-request: plugins.d/password-request.o
88
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
89
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
90
 
 
91
 
.PHONY : all doc clean distclean run-client run-server install \
92
 
        install-server install-client uninstall uninstall-server \
93
 
        uninstall-client purge purge-server purge-client
 
1
CFLAGS="-Wall -std=gnu99"
 
2
LDFLAGS=-lgnutls
 
3
 
 
4
all: plugbasedclient
94
5
 
95
6
clean:
96
 
        -rm --force $(PROGS) $(objects) $(DOCS) core
97
 
 
98
 
distclean: clean
99
 
mostlyclean: clean
100
 
maintainer-clean: clean
101
 
        -rm --force --recursive keydir confdir
102
 
 
103
 
check:
104
 
        ./mandos --check
105
 
 
106
 
# Run the client with a local config and key
107
 
run-client: all keydir/seckey.txt keydir/pubkey.txt
108
 
        ./plugin-runner --plugin-dir=plugins.d \
109
 
                --config-file=plugin-runner.conf \
110
 
                --options-for=password-request:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
111
 
 
112
 
# Used by run-client
113
 
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
114
 
        install --directory keydir
115
 
        ./mandos-keygen --dir keydir --force
116
 
 
117
 
# Run the server with a local config
118
 
run-server: confdir/mandos.conf confdir/clients.conf
119
 
        ./mandos --debug --configdir=confdir
120
 
 
121
 
# Used by run-server
122
 
confdir/mandos.conf: mandos.conf
123
 
        install --directory confdir
124
 
        install --mode=0644 $^ $@
125
 
confdir/clients.conf: clients.conf keydir/seckey.txt
126
 
        install --directory confdir
127
 
        install --mode=0640 $< $@
128
 
# Add a client password
129
 
        ./mandos-keygen --dir keydir --password >> $@
130
 
 
131
 
install: install-server install-client
132
 
 
133
 
install-server: doc
134
 
        install --directory --parents $(CONFDIR) $(MANDIR)/man5 \
135
 
                $(MANDIR)/man8
136
 
        install --mode=0755 mandos $(PREFIX)/sbin/mandos
137
 
        install --mode=0644 --target-directory=$(CONFDIR) mandos.conf
138
 
        install --mode=0640 --target-directory=$(CONFDIR) \
139
 
                clients.conf
140
 
        gzip --best --to-stdout mandos.8 \
141
 
                > $(MANDIR)/man8/mandos.8.gz
142
 
        gzip --best --to-stdout mandos.conf.5 \
143
 
                > $(MANDIR)/man5/mandos.conf.5.gz
144
 
        gzip --best --to-stdout mandos-clients.conf.5 \
145
 
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
146
 
 
147
 
install-client: all doc /usr/share/initramfs-tools/hooks/.
148
 
        install --directory --parents $(PREFIX)/lib/mandos \
149
 
                $(CONFDIR) $(MANDIR)/man8
150
 
        install --directory --mode=0700 $(PREFIX)/lib/mandos/plugins.d
151
 
        chmod u=rwx,g=,o= $(PREFIX)/lib/mandos/plugins.d
152
 
        install --mode=0755 --target-directory=$(PREFIX)/lib/mandos \
153
 
                plugin-runner
154
 
        install --mode=0755 --target-directory=$(PREFIX)/sbin \
155
 
                mandos-keygen
156
 
        install --mode=0755 \
157
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
158
 
                plugins.d/password-prompt
159
 
        install --mode=4755 \
160
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
161
 
                plugins.d/password-request
162
 
        install initramfs-tools-hook \
163
 
                /usr/share/initramfs-tools/hooks/mandos
164
 
        install initramfs-tools-hook-conf \
165
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos
166
 
        install initramfs-tools-script \
167
 
                /usr/share/initramfs-tools/scripts/local-top/mandos
168
 
        gzip --best --to-stdout mandos-keygen.8 \
169
 
                > $(MANDIR)/man8/mandos-keygen.8.gz
170
 
        gzip --best --to-stdout plugin-runner.8mandos \
171
 
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
172
 
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
173
 
                > $(MANDIR)/man8/password-prompt.8mandos.gz
174
 
        gzip --best --to-stdout plugins.d/password-request.8mandos \
175
 
                > $(MANDIR)/man8/password-request.8mandos.gz
176
 
        -$(PREFIX)/sbin/mandos-keygen
177
 
        update-initramfs -k all -u
178
 
 
179
 
uninstall: uninstall-server uninstall-client
180
 
 
181
 
uninstall-server: $(PREFIX)/sbin/mandos
182
 
        -rm --force $(PREFIX)/sbin/mandos \
183
 
                $(MANDIR)/man8/mandos.8.gz \
184
 
                $(MANDIR)/man5/mandos.conf.5.gz \
185
 
                $(MANDIR)/man5/mandos-clients.conf.5.gz
186
 
        -rmdir $(CONFDIR)
187
 
 
188
 
uninstall-client:
189
 
# Refuse to uninstall client if /etc/crypttab is explicitly configured
190
 
# to use it.
191
 
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
192
 
                /etc/crypttab
193
 
        -rm --force $(PREFIX)/sbin/mandos-keygen \
194
 
                $(PREFIX)/lib/mandos/plugin-runner \
195
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
196
 
                $(PREFIX)/lib/mandos/plugins.d/password-request \
197
 
                /usr/share/initramfs-tools/hooks/mandos \
198
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos \
199
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
200
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
201
 
                $(MANDIR)/man8/password-prompt.8mandos.gz \
202
 
                $(MANDIR)/man8/password-request.8mandos.gz
203
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
204
 
                 $(PREFIX)/lib/mandos $(CONFDIR)
205
 
        update-initramfs -k all -u
206
 
 
207
 
purge: purge-server purge-client
208
 
 
209
 
purge-server: uninstall-server
210
 
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf
211
 
        -rmdir $(CONFDIR)
212
 
 
213
 
purge-client: uninstall-client
214
 
        -rm --force $(CONFDIR)/seckey.txt $(CONFDIR)/pubkey.txt
215
 
        -rmdir $(CONFDIR) $(CONFDIR)/plugins.d
 
7
        rm -f plugbasedclient
 
8
 
 
9
client_debug: client
 
10
        mv -f client client.tmp
 
11
        $(MAKE) client CXXFLAGS="$(CXXFLAGS) -DDEBUG -DCERT_ROOT=\\\"./\\\""
 
12
        mv client client_debug
 
13
        mv client.tmp client