mk-conf.sh, mk-mk.in: diversify..
[s-mailx.git] / makefile
blobd853750fc291eb10c8f137b9bdf0446baae5b387
1 #@ Makefile for S-nail.
2 #@ Adjustments have to be made in "make.rc" -- or on the command line.
3 #@ See the file "INSTALL" if you need help.
5 .PHONY: ohno tangerine all config build install uninstall clean distclean test \
6 devel odevel
8 ohno: build
9 tangerine: config build test install
10 all: config build
12 config:
13 @$(_prego)
14 build:
15 @$(_prestop) && LC_ALL=C $(MAKE) -f ./mk.mk $(MAILJOBS) all
16 install packager-install: build
17 @$(_prestop) && LC_ALL=C $(MAKE) -f ./mk.mk DESTDIR="$(DESTDIR)" install
18 uninstall:
19 @$(_prestop) && LC_ALL=C $(MAKE) -f ./mk.mk uninstall
21 clean:
22 @$(_prestop) && LC_ALL=C $(MAKE) -f ./mk.mk clean
23 distclean:
24 @$(_prestop) && LC_ALL=C $(MAKE) -f ./mk.mk distclean
26 test:
27 @$(_prestop) && LC_ALL=C $(MAKE) -f ./mk.mk test
29 devel:
30 @CONFIG=DEVEL; export CONFIG;\
31 $(_prego) && LC_ALL=C $(MAKE) -f ./mk.mk _update-version &&\
32 LC_ALL=C $(MAKE) -f ./mk.mk $(MAILJOBS) all
33 odevel:
34 @CONFIG=ODEVEL; export CONFIG;\
35 $(_prego) && LC_ALL=C $(MAKE) -f ./mk.mk _update-version &&\
36 LC_ALL=C $(MAKE) -f ./mk.mk $(MAILJOBS) all
37 d-b:
38 @$(_prestop) && LC_ALL=C $(MAKE) -f ./mk.mk _update-version &&\
39 LC_ALL=C $(MAKE) -f ./mk.mk $(MAILJOBS) all
41 d-gettext:
42 LC_ALL=C xgettext --sort-by-file --strict --add-location \
43 --from-code=UTF-8 --keyword --keyword=_ --keyword=N_ \
44 --add-comments=I18N --foreign-user \
45 -o messages.pot *.c *.h
47 _prego = SHELL="$(SHELL)" MAKE="$(MAKE)" \
48 CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
49 $(SHELL) ./mk-conf.sh
50 _prestop = if [ -f ./mk.mk ]; then :; else \
51 echo 'Program not configured, nothing to do';\
52 echo 'Use one of the targets: config, all, tangerine';\
53 exit 1;\
56 # Corresponds to same thing in mk-mk.in! (Except it is sed not $(sed))
57 _version_from_header = VERSION="`< version.h sed \
58 -e '/ VERSION /b X' -e d -e ':X' \
59 -e 's/[^\"]*\"v\([^\"]\{1,\}\)\"/\1/'`"
61 # This is pretty specific
62 _update-release:
63 @ORIG_LC_ALL=${LC_ALL};\
64 LC_ALL=C; export LC_ALL;\
65 : $${UAGENT:=s-nail};\
66 : $${UUAGENT:=S-nail};\
67 : $${UPLOAD:=steffen@sdaoden.eu:/var/www/localhost/downloads};\
68 : $${ACCOUNT:=ich};\
69 DATE_MAN="`date -u +'%b %d, %Y'`";\
70 DATE_ISO="`date -u +%Y-%m-%d`";\
71 if [ "`git rev-parse --verify HEAD`" != \
72 "`git rev-parse --verify master`" ]; then \
73 echo >&2 'Not on the [master] branch';\
74 exit 1;\
75 fi;\
76 if [ "`git status --porcelain --ignored |\
77 awk 'BEGIN{no=0}{++no}END{print no}'`" -ne 0 ]; then\
78 echo >&2 'Directory not clean, see git status --ignored';\
79 exit 2;\
80 fi;\
81 echo 'Name of release tag:';\
82 read REL;\
83 echo "Is $${UAGENT} <v$${REL}> correct? ENTER continues";\
84 read i;\
86 git show announce > "$${TMPDIR}/$${UAGENT}-$${REL}.ann.mail" &&\
88 grep=grep sed=sed cmp=cmp mv=mv \
89 VERSION="$${REL}" $(MAKE) -f mk-mk.in _update-version &&\
90 $(_version_from_header);\
91 REL="$${VERSION}";\
93 < nail.1 > nail.1x awk '\
94 BEGIN { written = 0 }\
95 /\.\\"--MKREL-START--/, /\.\\"--MKREL-END--/ {\
96 if (written++ != 0)\
97 next;\
98 print ".\\\"--MKREL-START--";\
99 print ".\\\" '"$${UUAGENT}"'(1): v'"$${REL}"'" \
100 " / '"$${DATE_ISO}"'";\
101 print ".Dd '"$${DATE_MAN}"'";\
102 print ".ds VV \\\\%v'"$${REL}"'";\
103 print ".\\\"--MKREL-END--";\
104 next\
106 {print}\
107 ' &&\
108 mv -f nail.1x nail.1 &&\
110 < nail.rc > nail.rcx awk '\
111 BEGIN { written = 0 }\
112 /^#--MKREL-START--/, /^#--MKREL-END--/ {\
113 if (written++ != 0)\
114 next;\
115 print "#--MKREL-START--";\
116 print \
117 "# '"$${UUAGENT}"'(1): v'"$${REL}"' / '"$${DATE_ISO}"'";\
118 print "#--MKREL-END--";\
119 next\
121 {print}\
122 ' && \
123 mv -f nail.rcx nail.rc &&\
125 ./mk-okey-map.pl&&\
126 ./mk-tcap-map.pl&&\
128 git add version.h nail.1 nail.rc okeys.h tcaps.h&&\
129 LC_ALL=${ORIG_LC_ALL} git commit -S -m "Bump $${UUAGENT} v$${REL}" &&\
130 LC_ALL=${ORIG_LC_ALL} git tag -s -f "v$${REL}" &&\
132 git update-ref refs/heads/next master &&\
134 git checkout timeline &&\
135 git rm -rf '*' &&\
136 git archive --format=tar "v$${REL}" | tar -x -f - &&\
139 rm -f .gitignore .mailmap TODO &&\
140 sed -E -e '/^\.\\"--MKREL-(START|END)--/d' \
141 -e '/--BEGINSTRIP--/,$$ {' \
142 -e '/^\.[[:space:]]*$$/d' -e '/^\.[[:space:]]*\\"/d' \
143 -e '}' \
144 -e '/^\.$$/d' < nail.1 > nail.1x &&\
145 mv -f nail.1x nail.1 &&\
146 if command -v mdocmx.sh >/dev/null 2>&1; then \
147 mdocmx.sh < nail.1 > nail.1x &&\
148 mv -f nail.1x nail.1;\
149 fi; \
150 sed -Ee '/^#--MKREL-(START|END)--/d' \
151 < nail.rc > nail.rcx &&\
152 mv -f nail.rcx nail.rc \
153 ) &&\
155 ./mk-okey-map.pl noverbose &&\
156 ./mk-tcap-map.pl noverbose &&\
158 git add --all &&\
159 LC_ALL=${ORIG_LC_ALL} \
160 git commit -S -m "$${UUAGENT} v$${REL}, $${DATE_ISO}" &&\
161 LC_ALL=${ORIG_LC_ALL} git tag -s -f "v$${REL}.ar" &&\
163 git checkout master &&\
164 git log --no-walk --decorate --oneline --branches --remotes &&\
165 git branch &&\
166 echo "Push git(1) repo? ENTER continues";\
167 read i;\
168 git push &&\
170 git archive --format=tar --prefix="$${UAGENT}-$${REL}/" "v$${REL}.ar" |\
171 ( cd "$${TMPDIR}" && tar -x -f - ) &&\
172 cd "$${TMPDIR}" &&\
173 tar -c -f "$${UAGENT}-$${REL}.tar" "$${UAGENT}-$${REL}" &&\
175 openssl sha1 "$${UAGENT}-$${REL}.tar" >> \
176 "$${UAGENT}-$${REL}.cksum" 2>&1 &&\
177 openssl sha256 "$${UAGENT}-$${REL}.tar" >> \
178 "$${UAGENT}-$${REL}.cksum" 2>&1 &&\
179 openssl sha512 "$${UAGENT}-$${REL}.tar" >> \
180 "$${UAGENT}-$${REL}.cksum" 2>&1 &&\
181 gpg --detach-sign --armor "$${UAGENT}-$${REL}.tar" 2>&1 &&\
182 cat "$${UAGENT}-$${REL}.tar.asc" >> \
183 "$${UAGENT}-$${REL}.cksum" 2>&1 &&\
185 < "$${UAGENT}-$${REL}.tar" gzip > "$${UAGENT}-$${REL}.tar.gz" &&\
186 < "$${UAGENT}-$${REL}.tar" xz -e -C sha256 > \
187 "$${UAGENT}-$${REL}.tar.xz" &&\
189 rm -f "$${UAGENT}-$${REL}.tar" &&\
192 echo "-put $${UAGENT}-$${REL}.tar.gz";\
193 echo "-rm $${UAGENT}-latest.tar.gz";\
194 echo "-ln $${UAGENT}-$${REL}.tar.gz $${UAGENT}-latest.tar.gz";\
195 echo "-put $${UAGENT}-$${REL}.tar.xz";\
196 echo "-rm $${UAGENT}-latest.tar.xz";\
197 echo "-ln $${UAGENT}-$${REL}.tar.xz $${UAGENT}-latest.tar.xz";\
198 echo "-put $${UAGENT}-$${REL}.tar.asc";\
199 echo "-rm $${UAGENT}-latest.tar.asc";\
200 echo "-ln $${UAGENT}-$${REL}.tar.asc $${UAGENT}-latest.tar.asc";\
201 echo "-chmod 0644 $${UAGENT}-$${REL}.tar.*";\
202 ) | \
203 sftp -b - $${UPLOAD} &&\
204 echo 'All seems fine';\
206 echo 'Really send announcement mail? ENTER continues';\
207 read i;\
208 cd "$${UAGENT}-$${REL}" &&\
209 make CONFIG=MAXIMAL all &&\
210 < "$${TMPDIR}/$${UAGENT}-$${REL}.ann.mail" \
211 LC_ALL=${ORIG_LC_ALL} ./$${UAGENT} -A $${ACCOUNT} \
212 -Snofollowup-to \
213 -s "[ANN]ouncing $${UUAGENT} v$${REL}" \
214 -t &&\
215 echo 'Uff.'
217 # s-mk-mode