chiark / gitweb /
cgi.py, operation.py, list.fhtml: Request-level policy switch.
[chopwood] / Makefile
1 ### -*-makefile-*-
2 ###
3 ### Build and setup script
4 ###
5 ### (c) 2013 Mark Wooding
6 ###
7
8 ###----- Licensing notice ---------------------------------------------------
9 ###
10 ### This file is part of Chopwood: a password-changing service.
11 ###
12 ### Chopwood is free software; you can redistribute it and/or modify
13 ### it under the terms of the GNU Affero General Public License as
14 ### published by the Free Software Foundation; either version 3 of the
15 ### License, or (at your option) any later version.
16 ###
17 ### Chopwood is distributed in the hope that it will be useful,
18 ### but WITHOUT ANY WARRANTY; without even the implied warranty of
19 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 ### GNU Affero General Public License for more details.
21 ###
22 ### You should have received a copy of the GNU Affero General Public
23 ### License along with Chopwood; if not, see
24 ### <http://www.gnu.org/licenses/>.
25
26 ## Basic naming stuff.
27 PACKAGE                  = chopwood
28 VERSION                  = $(shell ./get-version)
29
30 ###--------------------------------------------------------------------------
31 ### The big list of source files.
32
33 ## The main source files.
34 SOURCES                 += chpwd
35 SOURCES                 += backend.py
36 SOURCES                 += cgi.py
37 SOURCES                 += cmdutil.py
38 SOURCES                 += config.py
39 SOURCES                 += crypto.py
40 SOURCES                 += dbmaint.py
41 SOURCES                 += format.py
42 SOURCES                 += httpauth.py
43 SOURCES                 += operation.py
44 SOURCES                 += output.py
45 SOURCES                 += service.py
46 SOURCES                 += subcommand.py
47 SOURCES                 += util.py
48
49 ## The command implementations.
50 SOURCES                 += cmd-admin.py
51 SOURCES                 += cmd-cgi.py
52 SOURCES                 += cmd-remote.py
53 SOURCES                 += cmd-user.py
54
55 ## Template HTML files.
56 SOURCES                 += about.fhtml
57 SOURCES                 += cookies.fhtml
58 SOURCES                 += error.fhtml
59 SOURCES                 += exception.fhtml
60 SOURCES                 += list.fhtml
61 SOURCES                 += login.fhtml
62 SOURCES                 += operate.fhtml
63 SOURCES                 += wrapper.fhtml
64
65 ## Other static files.
66 SOURCES                 += chpwd.css
67 SOURCES                 += chpwd.js
68
69 ###--------------------------------------------------------------------------
70 ### Default rules.
71
72 all::
73 .PHONY: all
74
75 CLEANFILES               = *.pyc
76
77 ###--------------------------------------------------------------------------
78 ### The automatically-generated installation module.
79
80 TARGETS                 += auto.py auto-$(VERSION).py
81
82 auto-$(VERSION).py: Makefile get-version $(SOURCES) $(wildcard RELEASE)
83         { echo "### -*-python-*-"; \
84           echo "PACKAGE = '$(PACKAGE)'"; \
85           echo "VERSION = '$(VERSION)'"; \
86           echo "HOME = '$$(pwd)'"; \
87         } >$@.new
88         mv $@.new $@
89
90 auto.py: auto-$(VERSION).py
91         rm -f auto.py.new && ln -s $^ auto.py.new && mv auto.py.new auto.py
92         for i in auto-*.py; do \
93           case $$i in auto-$(VERSION).py) ;; *) rm -f $$i ;; esac; \
94         done
95
96 ###--------------------------------------------------------------------------
97 ### Generate the static files.
98
99 TARGETS                 += static/stamp
100
101 static/stamp: $(SOURCES) auto.py
102         rm -rf static.new
103         ./chpwd static static.new
104         touch static.new/stamp
105         rm -rf static && mv static.new static
106
107 clean::; rm -rf static
108
109 ###--------------------------------------------------------------------------
110 ### The standard rules.
111
112 all:: $(TARGETS)
113
114 CLEANFILES += $(TARGETS)
115 clean::; rm -f $(CLEANFILES)
116 .PHONY: clean
117
118 ###----- That's all, folks --------------------------------------------------