Commit | Line | Data |
---|---|---|
a2916c06 MW |
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 | |
a6af9c27 | 35 | SOURCES += agpl.py |
a2916c06 MW |
36 | SOURCES += backend.py |
37 | SOURCES += cgi.py | |
38 | SOURCES += cmdutil.py | |
39 | SOURCES += config.py | |
40 | SOURCES += crypto.py | |
41 | SOURCES += dbmaint.py | |
42 | SOURCES += format.py | |
a6af9c27 | 43 | SOURCES += hash.py |
a2916c06 MW |
44 | SOURCES += httpauth.py |
45 | SOURCES += operation.py | |
46 | SOURCES += output.py | |
47 | SOURCES += service.py | |
48 | SOURCES += subcommand.py | |
49 | SOURCES += util.py | |
50 | ||
51 | ## The command implementations. | |
52 | SOURCES += cmd-admin.py | |
53 | SOURCES += cmd-cgi.py | |
54 | SOURCES += cmd-remote.py | |
55 | SOURCES += cmd-user.py | |
56 | ||
57 | ## Template HTML files. | |
58 | SOURCES += about.fhtml | |
59 | SOURCES += cookies.fhtml | |
60 | SOURCES += error.fhtml | |
61 | SOURCES += exception.fhtml | |
62 | SOURCES += list.fhtml | |
63 | SOURCES += login.fhtml | |
64 | SOURCES += operate.fhtml | |
65 | SOURCES += wrapper.fhtml | |
66 | ||
67 | ## Other static files. | |
68 | SOURCES += chpwd.css | |
69 | SOURCES += chpwd.js | |
70 | ||
71 | ###-------------------------------------------------------------------------- | |
72 | ### Default rules. | |
73 | ||
74 | all:: | |
75 | .PHONY: all | |
76 | ||
77 | CLEANFILES = *.pyc | |
78 | ||
79 | ###-------------------------------------------------------------------------- | |
80 | ### The automatically-generated installation module. | |
81 | ||
82 | TARGETS += auto.py auto-$(VERSION).py | |
83 | ||
ffd791da | 84 | auto-$(VERSION).py: Makefile get-version $(SOURCES) $(wildcard RELEASE) |
a2916c06 MW |
85 | { echo "### -*-python-*-"; \ |
86 | echo "PACKAGE = '$(PACKAGE)'"; \ | |
87 | echo "VERSION = '$(VERSION)'"; \ | |
88 | echo "HOME = '$$(pwd)'"; \ | |
89 | } >$@.new | |
90 | mv $@.new $@ | |
a2916c06 MW |
91 | |
92 | auto.py: auto-$(VERSION).py | |
ffd791da | 93 | rm -f auto.py.new && ln -s $^ auto.py.new && mv auto.py.new auto.py |
a2916c06 MW |
94 | for i in auto-*.py; do \ |
95 | case $$i in auto-$(VERSION).py) ;; *) rm -f $$i ;; esac; \ | |
96 | done | |
97 | ||
98 | ###-------------------------------------------------------------------------- | |
99 | ### Generate the static files. | |
100 | ||
101 | TARGETS += static/stamp | |
102 | ||
103 | static/stamp: $(SOURCES) auto.py | |
104 | rm -rf static.new | |
105 | ./chpwd static static.new | |
106 | touch static.new/stamp | |
107 | rm -rf static && mv static.new static | |
108 | ||
109 | clean::; rm -rf static | |
110 | ||
111 | ###-------------------------------------------------------------------------- | |
112 | ### The standard rules. | |
113 | ||
114 | all:: $(TARGETS) | |
115 | ||
116 | CLEANFILES += $(TARGETS) | |
117 | clean::; rm -f $(CLEANFILES) | |
118 | .PHONY: clean | |
119 | ||
a4a97b6b MW |
120 | ###-------------------------------------------------------------------------- |
121 | ### Distributions. | |
122 | ||
123 | distdir = $(PACKAGE)-$(VERSION) | |
124 | ||
125 | DISTFILES = $(SOURCES) | |
126 | DISTFILES += AGPLv3 | |
127 | DISTFILES += Makefile get-version | |
128 | DISTFILES += userv.rc | |
129 | ||
130 | dist: | |
131 | rm -rf $(distdir) | |
132 | mkdir $(distdir) | |
133 | cp $(DISTFILES) $(distdir) | |
134 | echo $(VERSION) >$(distdir)/RELEASE | |
135 | tar cvfz $(distdir).tar.gz $(distdir) | |
136 | rm -rf $(distdir) | |
137 | .PHONY: dist | |
138 | ||
a2916c06 | 139 | ###----- That's all, folks -------------------------------------------------- |