Remove redundancy: Start with defining a few variables for release series
[openssl-web.git] / Makefile
1 ##
2 ## Build procedure for www.openssl.org
3
4 ##  Checkouts.
5 CHECKOUTS = /var/cache/openssl/checkouts
6 ##  Snapshot directory
7 SNAP = $(CHECKOUTS)/openssl
8 ## Where releases are found.
9 RELEASEDIR = /var/www/openssl/source
10
11 ##  Current series
12 SERIES=1.1.1 1.1.0 1.0.2
13 ##  Older series
14 OLDSERIES=1.0.1 1.0.0 0.9.8 0.9.7 0.9.6
15
16 # All simple generated files.
17 SIMPLE = newsflash.inc sitemap.txt \
18          community/committers.inc \
19          community/omc.inc community/omc-alumni.inc \
20          docs/faq.inc docs/fips.inc \
21          docs/OpenSSLStrategicArchitecture.html \
22          docs/OpenSSL300Design.html \
23          news/changelog.inc news/changelog.txt \
24          news/cl102.txt news/cl110.txt news/cl111.txt \
25          news/openssl-1.0.2-notes.inc \
26          news/openssl-1.1.0-notes.inc \
27          news/openssl-1.1.1-notes.inc \
28          news/newsflash.inc \
29          news/vulnerabilities.inc \
30          news/vulnerabilities-1.1.1.inc \
31          news/vulnerabilities-1.1.0.inc \
32          news/vulnerabilities-1.0.2.inc \
33          news/vulnerabilities-1.0.1.inc \
34          news/vulnerabilities-1.0.0.inc \
35          news/vulnerabilities-0.9.8.inc \
36          news/vulnerabilities-0.9.7.inc \
37          news/vulnerabilities-0.9.6.inc \
38          source/.htaccess \
39          source/index.inc
40 SRCLISTS = \
41            source/old/0.9.x/index.inc \
42            source/old/1.0.0/index.inc \
43            source/old/1.0.1/index.inc \
44            source/old/1.0.2/index.inc \
45            source/old/1.1.0/index.inc \
46            source/old/1.1.1/index.inc \
47            source/old/fips/index.inc \
48
49
50 .SUFFIXES: .md .html
51
52 .md.html:
53         @rm -f $@
54         ./bin/md-to-html5 $<
55
56 all: suball manmaster mancross
57
58 suball: $(SIMPLE) $(SRCLISTS)
59
60 relupd: suball manpages mancross
61
62 clean:
63         rm -f $(SIMPLE) $(SRCLISTS)
64
65 # Legacy targets
66 hack-source_htaccess: all
67 simple: all
68 generated: all
69 rebuild: all
70
71 define makemanpages
72         ./bin/mk-manpages $(1)/doc $(2) docs/man$(2)
73         ./bin/mk-apropos docs/man$(2)/man1 > docs/man$(2)/man1/index.inc
74         ./bin/mk-apropos docs/man$(2)/man3 > docs/man$(2)/man3/index.inc
75         ./bin/mk-apropos docs/man$(2)/man5 > docs/man$(2)/man5/index.inc
76         ./bin/mk-apropos docs/man$(2)/man7 > docs/man$(2)/man7/index.inc
77 endef
78 define makemanmap
79         ./bin/mk-manmap docs/man$(1) > docs/man$(1)/.htaccess
80 endef
81 manpages: manmaster
82         $(call makemanpages,$(CHECKOUTS)/openssl-1.1.1-stable,1.1.1)
83         $(call makemanpages,$(CHECKOUTS)/openssl-1.1.0-stable,1.1.0)
84         $(call makemanmap,1.1.0)
85         $(call makemanpages,$(CHECKOUTS)/openssl-1.0.2-stable,1.0.2)
86         $(call makemanmap,1.0.2)
87
88 manmaster:
89         $(call makemanpages,$(CHECKOUTS)/openssl,master)
90
91 mancross:
92         ./bin/mk-mancross
93
94 ## $(SIMPLE) -- SIMPLE GENERATED FILES
95 .PHONY: sitemap community/committers.inc community/omc.inc community/omc-alumni.inc
96 newsflash.inc: news/newsflash.inc
97         @rm -f $@
98         head -7 $? >$@
99 sitemap sitemap.txt:
100         @rm -f sitemap.txt
101         ./bin/mk-sitemap > sitemap.txt
102
103 community/committers.inc:
104         @rm -f $@
105         wget -q https://api.openssl.org/0/Group/commit/Members
106         ./bin/mk-committers <Members >$@
107         @rm -f Members
108
109 community/omc.inc:
110         ./bin/mk-omc -n -e -l -p -t 'OMC Members' omc omc-inactive > $@
111 community/omc-alumni.inc:
112         ./bin/mk-omc -n -l -t 'OMC Alumni' omc-alumni omc-emeritus > $@
113
114 docs/faq.inc: $(wildcard docs/faq-[0-9]-*.txt) bin/mk-faq
115         @rm -f $@
116         ./bin/mk-faq docs/faq-[0-9]-*txt >$@
117 docs/fips.inc: $(wildcard docs/fips/*) bin/mk-filelist
118         @rm -f $@
119         ./bin/mk-filelist docs/fips fips/ '*' >$@
120
121 news/changelog.inc: news/changelog.txt bin/mk-changelog
122         @rm -f $@
123         ./bin/mk-changelog <news/changelog.txt >$@
124 news/changelog.txt: $(SNAP)/CHANGES
125         @rm -f $@
126         cp $? $@
127 news/cl102.txt: $(CHECKOUTS)/openssl-1.0.2-stable/CHANGES
128         @rm -f $@
129         cp $? $@
130 news/cl110.txt: $(CHECKOUTS)/openssl-1.1.0-stable/CHANGES
131         @rm -f $@
132         cp $? $@
133 news/cl111.txt: $(CHECKOUTS)/openssl-1.1.1-stable/CHANGES
134         @rm -f $@
135         cp $? $@
136 news/openssl-1.0.2-notes.html: news/openssl-notes.html.in
137         @rm -f $@
138         sed -e 's|@VERSION@|1.0.2|g' < $< > $@
139 news/openssl-1.1.0-notes.html: news/openssl-notes.html.in
140         @rm -f $@
141         sed -e 's|@VERSION@|1.1.0|g' < $< > $@
142 news/openssl-1.1.1-notes.html: news/openssl-notes.html.in
143         @rm -f $@
144         sed -e 's|@VERSION@|1.1.1|g' < $< > $@
145 news/openssl-1.0.2-notes.inc: $(CHECKOUTS)/openssl-1.0.2-stable/NEWS news/openssl-1.0.2-notes.html bin/mk-notes
146         @rm -f $@
147         ./bin/mk-notes 1.0.2 < $(CHECKOUTS)/openssl-1.0.2-stable/NEWS > $@
148 news/openssl-1.1.0-notes.inc: $(CHECKOUTS)/openssl-1.1.0-stable/NEWS news/openssl-1.1.0-notes.html bin/mk-notes
149         @rm -f $@
150         ./bin/mk-notes 1.1.0 < $(CHECKOUTS)/openssl-1.1.0-stable/NEWS > $@
151 news/openssl-1.1.1-notes.inc: $(CHECKOUTS)/openssl-1.1.1-stable/NEWS news/openssl-1.1.1-notes.html bin/mk-notes
152         @rm -f $@
153         ./bin/mk-notes 1.1.1 < $(CHECKOUTS)/openssl-1.1.1-stable/NEWS > $@
154 news/newsflash.inc: news/newsflash.txt
155         sed <$? >$@ \
156             -e '/^#/d' \
157             -e 's@^@<tr><td class="d">@' \
158             -e 's@: @</td><td class="t">@' \
159             -e 's@$$@</td></tr>@'
160 news/vulnerabilities.inc: bin/mk-cvepage news/vulnerabilities.xml
161         @rm -f $@
162         ./bin/mk-cvepage -i news/vulnerabilities.xml > $@
163 news/vulnerabilities-1.1.1.inc: bin/mk-cvepage news/vulnerabilities.xml
164         @rm -f $@
165         ./bin/mk-cvepage -i news/vulnerabilities.xml -b 1.1.1 > $@
166 news/vulnerabilities-1.1.0.inc: bin/mk-cvepage news/vulnerabilities.xml
167         @rm -f $@
168         ./bin/mk-cvepage -i news/vulnerabilities.xml -b 1.1.0 > $@
169 news/vulnerabilities-1.0.2.inc: bin/mk-cvepage news/vulnerabilities.xml
170         @rm -f $@
171         ./bin/mk-cvepage -i news/vulnerabilities.xml -b 1.0.2 > $@
172 news/vulnerabilities-1.0.1.inc: bin/mk-cvepage news/vulnerabilities.xml
173         @rm -f $@
174         ./bin/mk-cvepage -i news/vulnerabilities.xml -b 1.0.1 > $@
175 news/vulnerabilities-1.0.0.inc: bin/mk-cvepage news/vulnerabilities.xml
176         @rm -f $@
177         ./bin/mk-cvepage -i news/vulnerabilities.xml -b 1.0.0 > $@
178 news/vulnerabilities-0.9.8.inc: bin/mk-cvepage news/vulnerabilities.xml
179         @rm -f $@
180         ./bin/mk-cvepage -i news/vulnerabilities.xml -b 0.9.8 > $@
181 news/vulnerabilities-0.9.7.inc: bin/mk-cvepage news/vulnerabilities.xml
182         @rm -f $@
183         ./bin/mk-cvepage -i news/vulnerabilities.xml -b 0.9.7 > $@
184 news/vulnerabilities-0.9.6.inc: bin/mk-cvepage news/vulnerabilities.xml
185         @rm -f $@
186         ./bin/mk-cvepage -i news/vulnerabilities.xml -b 0.9.6 > $@
187 source/.htaccess: $(wildcard source/openssl-*.tar.gz) bin/mk-latest
188         @rm -f @?
189         ./bin/mk-latest source >$@
190 source/index.inc: $(wildcard $(RELEASEDIR)/openssl-*.tar.gz) bin/mk-filelist
191         @rm -f $@
192         ./bin/mk-filelist $(RELEASEDIR) '' 'openssl-*.tar.gz' >$@
193
194 ## $(SRCLISTS) -- LISTS OF SOURCES
195 source/old/0.9.x/index.inc: $(wildcard source/old/0.9.x/*.gz) bin/mk-filelist
196         @rm -f $@
197         ./bin/mk-filelist source/old/0.9.x '' '*.gz' >$@
198 source/old/1.0.0/index.inc: $(wildcard source/old/1.0.0/*.gz) bin/mk-filelist
199         @rm -f $@
200         ./bin/mk-filelist source/old/1.0.0 '' '*.gz' >$@
201 source/old/1.0.1/index.inc: $(wildcard source/old/1.0.1/*.gz) bin/mk-filelist
202         @rm -f $@
203         ./bin/mk-filelist source/old/1.0.1 '' '*.gz' >$@
204 source/old/1.0.2/index.inc: $(wildcard source/old/1.0.2/*.gz) bin/mk-filelist
205         @rm -f $@
206         ./bin/mk-filelist source/old/1.0.2 '' '*.gz' >$@
207 source/old/1.1.0/index.inc: $(wildcard source/old/1.1.0/*.gz) bin/mk-filelist
208         @rm -f $@
209         ./bin/mk-filelist source/old/1.1.0 '' '*.gz' >$@
210 source/old/1.1.1/index.inc: $(wildcard source/old/1.1.1/*.gz) bin/mk-filelist
211         @rm -f $@
212         ./bin/mk-filelist source/old/1.1.1 '' '*.gz' >$@
213 source/old/fips/index.inc: $(wildcard source/old/fips/*.gz) bin/mk-filelist
214         @rm -f $@
215         ./bin/mk-filelist source/old/fips '' '*.gz' >$@
216
217 # Because these the indexes of old tarballs will inevitably be newer
218 # than the tarballs that are moved into their respective directory,
219 # we must declare them phony, or they will not be regenerated when
220 # they should.
221 .PHONY : \
222          source/old/1.0.1/index.inc source/old/1.0.2/index.inc \
223          source/old/1.1.0/index.inc source/old/1.1.1/index.inc \
224          source/old/fips/index.inc