/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>
23
23
OPTIMIZE=-Os
24
24
LANGUAGE=-std=gnu99
25
25
htmldir=man
26
 
version=1.0.14
 
26
version=1.4.1
27
27
SED=sed
28
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
 
29
32
## Use these settings for a traditional /usr/local install
30
33
# PREFIX=$(DESTDIR)/usr/local
31
34
# CONFDIR=$(DESTDIR)/etc/mandos
32
35
# KEYDIR=$(DESTDIR)/etc/mandos/keys
33
36
# MANDIR=$(PREFIX)/man
34
37
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
 
38
# STATEDIR=$(DESTDIR)/var/lib/mandos
35
39
##
36
40
 
37
41
## These settings are for a package-type install
40
44
KEYDIR=$(DESTDIR)/etc/keys/mandos
41
45
MANDIR=$(PREFIX)/share/man
42
46
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
 
47
STATEDIR=$(DESTDIR)/var/lib/mandos
43
48
##
44
49
 
45
50
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
54
59
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
55
60
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
56
61
        -DVERSION='"$(version)"'
57
 
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))
58
63
 
59
64
# Commands to format a DocBook <refentry> document into a manual page
60
65
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
65
70
        --param man.authors.section.enabled     0 \
66
71
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
67
72
        $(notdir $<); \
68
 
        $(MANPOST) $(notdir $@))
 
73
        $(MANPOST) $(notdir $@);\
 
74
        LANG=en_US.UTF-8 MANWIDTH=80 man --warnings --encoding=UTF-8 \
 
75
        --local-file $(notdir $@) >/dev/null)
69
76
# DocBook-to-man post-processing to fix a '\n' escape bug
70
77
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
71
78
 
86
93
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo \
87
94
        plugins.d/plymouth
88
95
CPROGS=plugin-runner $(PLUGINS)
89
 
PROGS=mandos mandos-keygen mandos-ctl $(CPROGS)
90
 
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 \
91
99
        plugins.d/mandos-client.8mandos \
92
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
93
 
        plugins.d/usplash.8mandos plugins.d/splashy.8mandos \
94
 
        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
95
103
 
96
104
htmldocs=$(addsuffix .xhtml,$(DOCS))
97
105
 
118
126
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
119
127
        $(DOCBOOKTOHTML)
120
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
 
121
134
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
122
135
                legalnotice.xml
123
136
        $(DOCBOOKTOMAN)
132
145
                 legalnotice.xml
133
146
        $(DOCBOOKTOHTML)
134
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
 
135
162
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
136
163
                legalnotice.xml
137
164
        $(DOCBOOKTOMAN)
178
205
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
179
206
                $@)
180
207
 
 
208
mandos-monitor: Makefile
 
209
        $(strip $(SED) --in-place \
 
210
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
211
                $@)
 
212
 
181
213
mandos.lsm: Makefile
182
214
        $(strip $(SED) --in-place \
183
215
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
190
222
                $@)
191
223
 
192
224
plugins.d/mandos-client: plugins.d/mandos-client.c
193
 
        $(LINK.c) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) $(strip\
194
 
                ) $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
225
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
 
226
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
195
227
 
196
228
.PHONY : all doc html clean distclean run-client run-server install \
197
229
        install-server install-client uninstall uninstall-server \
203
235
distclean: clean
204
236
mostlyclean: clean
205
237
maintainer-clean: clean
206
 
        -rm --force --recursive keydir confdir
 
238
        -rm --force --recursive keydir confdir statedir
207
239
 
208
240
check:  all
209
241
        ./mandos --check
223
255
        @echo "###################################################################"
224
256
        ./plugin-runner --plugin-dir=plugins.d \
225
257
                --config-file=plugin-runner.conf \
226
 
                --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 \
227
259
                $(CLIENTARGS)
228
260
 
229
261
# Used by run-client
233
265
 
234
266
# Run the server with a local config
235
267
run-server: confdir/mandos.conf confdir/clients.conf
236
 
        @echo "#################################################################"
237
 
        @echo "# NOTE: Please IGNORE the error about \"Could not open file      #"
238
 
        @echo "# u'/var/run/mandos.pid'\" -  it is harmless and is caused by    #"
239
 
        @echo "# the server not running as root.  Do NOT run \"make run-server\" #"
240
 
        @echo "# server as root if you didn't also unpack and compile it thus. #"
241
 
        @echo "#################################################################"
242
 
        ./mandos --debug --no-dbus --configdir=confdir $(SERVERARGS)
 
268
        ./mandos --debug --no-dbus --configdir=confdir \
 
269
                --statedir=statedir $(SERVERARGS)
243
270
 
244
271
# Used by run-server
245
272
confdir/mandos.conf: mandos.conf
250
277
        install --mode=u=rw $< $@
251
278
# Add a client password
252
279
        ./mandos-keygen --dir keydir --password >> $@
 
280
statedir:
 
281
        install --directory statedir
253
282
 
254
283
install: install-server install-client-nokey
255
284
 
260
289
 
261
290
install-server: doc
262
291
        install --directory $(CONFDIR)
 
292
        install --directory --mode=u=rwx --owner=$(USER) \
 
293
                --group=$(GROUP) $(STATEDIR)
263
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
264
299
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
265
300
                mandos.conf
266
301
        install --mode=u=rw --target-directory=$(CONFDIR) \
276
311
        fi
277
312
        gzip --best --to-stdout mandos.8 \
278
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
279
318
        gzip --best --to-stdout mandos.conf.5 \
280
319
                > $(MANDIR)/man5/mandos.conf.5.gz
281
320
        gzip --best --to-stdout mandos-clients.conf.5 \
289
328
                install --mode=u=rwx \
290
329
                        --directory "$(CONFDIR)/plugins.d"; \
291
330
        fi
 
331
        install --mode=u=rwx,go=rx --directory \
 
332
                "$(CONFDIR)/network-hooks.d"
292
333
        install --mode=u=rwx,go=rx \
293
334
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
294
335
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
322
363
                > $(MANDIR)/man8/mandos-keygen.8.gz
323
364
        gzip --best --to-stdout plugin-runner.8mandos \
324
365
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
 
366
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
 
367
                > $(MANDIR)/man8/mandos-client.8mandos.gz
325
368
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
326
369
                > $(MANDIR)/man8/password-prompt.8mandos.gz
327
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
328
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
329
370
        gzip --best --to-stdout plugins.d/usplash.8mandos \
330
371
                > $(MANDIR)/man8/usplash.8mandos.gz
331
372
        gzip --best --to-stdout plugins.d/splashy.8mandos \
332
373
                > $(MANDIR)/man8/splashy.8mandos.gz
333
374
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
334
375
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
 
376
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
 
377
                > $(MANDIR)/man8/plymouth.8mandos.gz
335
378
 
336
379
install-client: install-client-nokey
337
380
# Post-installation stuff
343
386
 
344
387
uninstall-server:
345
388
        -rm --force $(PREFIX)/sbin/mandos \
 
389
                $(PREFIX)/sbin/mandos-ctl \
 
390
                $(PREFIX)/sbin/mandos-monitor \
346
391
                $(MANDIR)/man8/mandos.8.gz \
 
392
                $(MANDIR)/man8/mandos-monitor.8.gz \
 
393
                $(MANDIR)/man8/mandos-ctl.8.gz \
347
394
                $(MANDIR)/man5/mandos.conf.5.gz \
348
395
                $(MANDIR)/man5/mandos-clients.conf.5.gz
349
396
        update-rc.d -f mandos remove
365
412
                $(INITRAMFSTOOLS)/hooks/mandos \
366
413
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
367
414
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
415
                $(MANDIR)/man8/mandos-keygen.8.gz \
368
416
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
369
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
 
417
                $(MANDIR)/man8/mandos-client.8mandos.gz
370
418
                $(MANDIR)/man8/password-prompt.8mandos.gz \
371
419
                $(MANDIR)/man8/usplash.8mandos.gz \
372
420
                $(MANDIR)/man8/splashy.8mandos.gz \
373
421
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
374
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
 
422
                $(MANDIR)/man8/plymouth.8mandos.gz \
375
423
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
376
424
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
377
425
        update-initramfs -k all -u