make-config.in: complete path (leftover of [807f64e2], 2015-12-26!)
[s-mailx.git] / make-config.in
blobbe606ea97c841539ab4713afdd4b33fa120f629b
1 #@ make-config.in -- mk-config.mk template, completed by make-config.sh.
2 #@ Please see INSTALL and make.rc instead.
4 .PHONY: all test install uninstall clean distclean
6 SIZE_CHECK = @if ( command -v size ) > /dev/null 2>&1; then size $(@); fi
8 _version_from_header = VERSION="`< $(CWDDIR)gen-version.h $(sed) \
9                 -e '/ n_VERSION /b X' -e d -e ':X' \
10                 -e 's/[^\"]*\"v\([^\"]\{1,\}\)\"/\1/'`"
12 all: $(VAL_UAGENT) $(OPTIONAL_PRIVSEP)
14 $(VAL_UAGENT): $(OBJ) uman.1 urc.rc
15         $(ECHO_LINK)$(CC) $(LDFLAGS) -o $(@) $(OBJ) $(LIBS)
16         $(SIZE_CHECK)
18 $(OBJ): mk-config.h $(CWDDIR)config.h $(SRCDIR)nail.h $(SRCDIR)nailfuns.h \
19                 $(AMALGAM_DEP)
20 $(AMALGAM_TARGET) auxlily.o: $(SRCDIR)gen-errors.h
21 $(AMALGAM_TARGET) accmacvar.o: $(SRCDIR)gen-okeys.h $(CWDDIR)gen-version.h
22 $(AMALGAM_TARGET) cmd-tab.o: $(SRCDIR)cmd-tab.h
23 $(AMALGAM_TARGET) dotlock.o: $(SRCDIR)dotlock.h
24 $(AMALGAM_TARGET) obs-imap.o: $(SRCDIR)obs-imap-gssapi.h
25 $(AMALGAM_TARGET) mime-types.o: gen-mime-types.h
26 $(AMALGAM_TARGET) obs-imap.o pop3.o smtp.o urlcrecry.o: $(SRCDIR)rfc1321.h
27 $(AMALGAM_TARGET) smtp.o: $(SRCDIR)smtp-gssapi.h
28 $(AMALGAM_TARGET) termcap.o: $(SRCDIR)gen-tcaps.h
30 $(VAL_PRIVSEP): privsep.o
31         $(ECHO_LINK)$(CC) $(LDFLAGS) -o $(@) privsep.o $(BASE_LIBS)
32         $(SIZE_CHECK)
34 privsep.o: $(SRCDIR)privsep.c mk-config.h $(CWDDIR)config.h \
35                 $(SRCDIR)nail.h $(SRCDIR)dotlock.h
36         $(ECHO_CC)$(CC) $(CFLAGS) $(BASE_INCS) -c $(SRCDIR)privsep.c
38 gen-mime-types.h: $(SRCDIR)mime.types
39         $(ECHO_GEN)\
40         LC_ALL=C < $(SRCDIR)mime.types > $(@) $(awk) '\
41         function add(mt, ln){\
42                 gsub(/[[:space:]]+/, " ", ln);\
43                 i = split(ln, i_a);\
44                 e = "";\
45                 for(j = 1; j <= i; ++j){\
46                         k = i_a[j];\
47                         e = (e ? e " " : "") k\
48                 }\
49                 if(e){\
50                         if(e_a[mt])\
51                                 e_a[mt] = e_a[mt] " ";\
52                         e_a[mt] = e_a[mt] e\
53                 }\
54         }\
55         /^[[:space:]]*#/{next}\
56         /^[[:space:]]*$$/{ltype = ""; next}\
57         /^[[:space:]]/{\
58                 if(!ltype)\
59                         print "FAULTY CONTINUATION: " $$0 >> "/dev/stderr";\
60                 add(ltype, $$0);\
61                 next\
62         }\
63         /^(@([thHq]@)? )?[[:alpha:]]/{\
64                 if($$1 ~ /^@([thHq]@)?$$/){\
65                         pa = $$1;\
66                         $$1 = $$2;\
67                         $$2 = ""\
68                 }else\
69                         pa = "";\
70                 if($$1 !~ /^([[:alnum:]]+)\/([[:alnum:]_+-]+)$$/)\
71                         print "FAULTY MIME TYPE: <" $$1 ">" >> "/dev/stderr";\
72                 ltype = $$1; $$1 = "";\
73                 if(pa)\
74                         p_a[ltype] = pa;\
75                 if(!nt_a[ltype])\
76                         no_a[++no_ai] = nt_a[ltype] = ltype;\
77                 add(ltype, $$0)\
78         }\
79         END{\
80                 for(z = 1; z <= no_ai; ++z){\
81                         t = no_a[z];\
82                         j = index(t, "/");\
83                         mt = toupper(substr(t, 1, j - 1));\
84                         j = substr(t, j + 1);\
85                         l = length(j);\
86                         if(!p_a[t])\
87                                 mt = "_MT_" mt;\
88                         else{\
89                                 tm = p_a[t];\
90                                 if(tm == "@" || tm == "@t@")\
91                                         mt = "_MT_" mt " | a_MT_TM_PLAIN";\
92                                 else if(tm == "@h@")\
93                                         mt = "_MT_" mt " | a_MT_TM_SOUP_h";\
94                                 else if(tm == "@H@")\
95                                         mt = "_MT_" mt " | a_MT_TM_SOUP_H";\
96                                 else if(tm == "@q@")\
97                                         mt = "_MT_" mt " | a_MT_TM_QUIET";\
98                         }\
99                         print "   {" mt ", " l ", \"" j e_a[t] "\"},"\
100                 }\
101         }\
102         '
104 uman.1: $(SRCDIR)nail.1
105         $(ECHO_GEN)\
106         LC_ALL=C \
107                 _UAGENT="$(VAL_UAGENT)" \
108                 _SYSCONFRC="$(VAL_SYSCONFDIR)/$(VAL_SYSCONFRC)" \
109                 _MAILRC="$(VAL_MAILRC)" \
110                         _DEAD="$(VAL_DEAD)" \
111                         _MBOX="$(VAL_MBOX)" \
112                         _NETRC="$(VAL_NETRC)" \
113                         _TMPDIR="$(VAL_TMPDIR)" \
114                                 _MT_S="$(VAL_MIME_TYPES_SYS)" \
115                                 _MT_U="$(VAL_MIME_TYPES_USR)" \
116                 $(_version_from_header) \
117         < $(SRCDIR)nail.1 > $(@) $(awk) '\
118         BEGIN { written = 0 }\
119         /\.\\"--MKMAN-START--/, /\.\\"--MKMAN-END--/ {\
120                 if (written++ != 0)\
121                         next;\
122                 OFS = "";\
123                 print ".ds VV \\\\%v", ENVIRON["VERSION"];\
124                 \
125                 un = toupper(ENVIRON["_UAGENT"]);\
126                         ln = tolower(un);\
127                         cn = toupper(substr(ln, 1, 1)) substr(ln, 2);\
128                         print ".ds UU \\\\%", un;\
129                         print ".ds UA \\\\%", cn;\
130                         print ".ds uA \\\\%", ln;\
131                 path = ENVIRON["_SYSCONFRC"];\
132                         gsub("/", "/\\:", path);\
133                         print ".ds UR \\\\%", path;\
134                 path = ENVIRON["_MAILRC"];\
135                         gsub("/", "/\\:", path);\
136                         print ".ds ur \\\\%", path;\
137                 \
138                 path = ENVIRON["_DEAD"];\
139                         gsub("/", "/\\:", path);\
140                         print ".ds VD \\\\%", path;\
141                 path = ENVIRON["_MBOX"];\
142                         gsub("/", "/\\:", path);\
143                         print ".ds VM \\\\%", path;\
144                 path = ENVIRON["_NETRC"];\
145                         gsub("/", "/\\:", path);\
146                         print ".ds VN \\\\%", path;\
147                 path = ENVIRON["_TMPDIR"];\
148                         gsub("/", "/\\:", path);\
149                         print ".ds VT \\\\%", path;\
150                 \
151                 path = ENVIRON["_MT_S"];\
152                         gsub("/", "/\\:", path);\
153                         print ".ds vS \\\\%", path;\
154                 path = ENVIRON["_MT_U"];\
155                         gsub("/", "/\\:", path);\
156                         print ".ds vU \\\\%", path;\
157                 \
158                 OFS = " ";\
159                 next\
160         }\
161         {print}\
162         '
164 urc.rc: $(SRCDIR)nail.rc
165         $(ECHO_GEN)\
166         LC_ALL=C \
167                 _UAGENT="$(VAL_UAGENT)" \
168                 _SYSCONFRC="$(VAL_SYSCONFDIR)/$(VAL_SYSCONFRC)" \
169                 $(_version_from_header) \
170         < $(SRCDIR)nail.rc > $(@) $(awk) 'BEGIN {written = 0}\
171         /^#--MKRC-START--/, /^#--MKRC-END--/ {\
172                 if (written == 1)\
173                         next;\
174                 written = 1;\
175                 OFS = "";\
176                 ln = tolower(ENVIRON["_UAGENT"]);\
177                 cn = toupper(substr(ln, 1, 1)) substr(ln, 2);\
178                 print "#@ ", ENVIRON["_SYSCONFRC"];\
179                 print "#@ Configuration file for ", cn, " v",\
180                         ENVIRON["VERSION"], ".";\
181                 OFS = " ";\
182                 next\
183         }\
184         {print}\
185         '
187 install:
188         $(ECHO_BLOCK_BEGIN)\
189         __mkdir() {\
190                 _dir="$(DESTDIR)$${1}";\
191                 if [ -d "$${_dir}" ]; then :; else \
192                         $(mkdir) -m 0755 -p "$${_dir}";\
193                 fi;\
194         };\
195         __copyfile() {\
196                 _mode=$${1} _src=$${2} _xdst=$${3} _dst="$(DESTDIR)$${3}";\
197                 $(cp) -f "$${_src}" "$${_dst}";\
198                 echo "rm -f \"\$${DESTDIR}$${_xdst}\"" >> \
199                         "$(VAL_UAGENT)-uninstall.sh";\
200                 $(chmod) $${_mode} "$${_dst}";\
201                 \
202         };\
203         __copychownfile() {\
204                 _mode=$${1} _ident=$${2} _src=$${3} \
205                         _xdst=$${4} _dst="$(DESTDIR)$${4}";\
206                 $(cp) -f "$${_src}" "$${_dst}";\
207                 echo "rm -f \"\$${DESTDIR}$${_xdst}\"" >> \
208                         "$(VAL_UAGENT)-uninstall.sh";\
209                 $(chown) $${_ident} "$${_dst}" || true;\
210                 $(chmod) $${_mode} "$${_dst}";\
211                 \
212         };\
213         __stripfile() {\
214                 _file=$${1};\
215                 if [ "$(OPT_DEBUG)" != 0 ]; then :;\
216                 elif [ -n "$(HAVE_STRIP)" ]; then \
217                         $(strip) "$${_file}";\
218                 fi;\
219         };\
220         \
221         cd "$(CWDDIR)" || exit 11;\
222         echo '#!/bin/sh -' > "$(VAL_UAGENT)-uninstall.sh";\
223         echo '#@ Uninstall script for $(VAL_UAGENT)' >> \
224                 "$(VAL_UAGENT)-uninstall.sh";\
225         echo >> "$(VAL_UAGENT)-uninstall.sh";\
226         echo 'DESTDIR="$(DESTDIR)"' >> "$(VAL_UAGENT)-uninstall.sh";\
227         echo 'DESTDIR=' >> "$(VAL_UAGENT)-uninstall.sh";\
228         echo >> "$(VAL_UAGENT)-uninstall.sh";\
229         \
230         if [ -n "$(DESTDIR)" ]; then __mkdir ''; fi;\
231         __mkdir "$(VAL_BINDIR)";\
232         __mkdir "$(VAL_MANDIR)/man1";\
233         __mkdir "$(VAL_SYSCONFDIR)";\
234         \
235         __stripfile .obj/"$(VAL_UAGENT)";\
236         __copyfile 0555 .obj/"$(VAL_UAGENT)" "$(VAL_BINDIR)/$(VAL_UAGENT)";\
237         __copyfile 0444 .obj/uman.1 "$(VAL_MANDIR)/man1/$(VAL_UAGENT).1";\
238         if [ -f "$(DESTDIR)$(VAL_SYSCONFDIR)/$(VAL_SYSCONFRC)" ]; then :; else \
239                 __copyfile 0444 .obj/urc.rc \
240                         "$(VAL_SYSCONFDIR)/$(VAL_SYSCONFRC)";\
241         fi;\
242         \
243         if [ -n "$(OPTIONAL_PRIVSEP)" ]; then \
244                 __mkdir "$(VAL_LIBEXECDIR)";\
245                 \
246                 __stripfile .obj/"$(VAL_PRIVSEP)";\
247                 m='o=rx' o=;\
248                 if [ -n "$(_____PRIVSEP_GROUP)" ]; then \
249                         m="g=rxs,$${m}" o=":$(VAL_PRIVSEP_GROUP)";\
250                 else \
251                         m="g=rx,$${m}";\
252                 fi;\
253                 if [ -n "$(VAL_PRIVSEP_USER)" ]; then \
254                         m="u=rxs,$${m}" o="$(VAL_PRIVSEP_USER)$${o}";\
255                 else \
256                         m="u=rx,$${m}";\
257                 fi;\
258                 __copychownfile "$${m}" "$${o}" .obj/"$(VAL_PRIVSEP)" \
259                         "$(VAL_LIBEXECDIR)/$(VAL_PRIVSEP)";\
260         fi;\
261         \
262         if [ -z "$(DESTDIR)" ]; then \
263                 __copyfile 0555 "$(VAL_UAGENT)-uninstall.sh" \
264                         "$(VAL_BINDIR)/$(VAL_UAGENT)-uninstall.sh";\
265         fi;\
266         $(ECHO_BLOCK_END)
268 uninstall:
269         @echo 'Invoke $(VAL_UAGENT)-uninstall.sh to uninstall $(VAL_UAGENT)'
271 clean:
272         $(ECHO_CMD)\
273         $(rm) -f $(OBJ) "$(VAL_UAGENT)" ./gen-mime-types.h ./uman.1 ./urc.rc;\
274         if [ -n "$(OPTIONAL_PRIVSEP)" ]; then \
275                 $(rm) -f ./privsep.o ./"$(VAL_PRIVSEP)";\
276         fi
278 distclean: clean
279         $(ECHO_CMD)\
280         cd .. && $(rm) -rf .obj;\
281         \
282         if [ -f "$(CWDDIR)/$(VAL_UAGENT)-uninstall.sh" ]; then \
283                 $(rm) -f "$(CWDDIR)/$(VAL_UAGENT)-uninstall.sh";\
284         fi
286 # MUST work with "grep=grep sed=sed cmp=cmp mv=mv", otherwise need to change
287 # make-release.inc
288 _echo-version:
289         @LC_ALL=C; export LC_ALL; $(_version_from_header); echo "$${VERSION}"
290 _update-version:
291         @LC_ALL=C; export LC_ALL;\
292         if [ -z "$(VERSION)" ]; then \
293                 eval VERSION="`(cd \"$(SRCDIR)\";\
294                         [ -d .git ] && git describe --tags) 2>/dev/null`";\
295                 if [ -n "$${VERSION}" ]; then \
296                         VERSION="`echo $${VERSION} |\
297                                 $(sed) -e 's/^v\{0,1\}\(.*\)/\1/'`";\
298                         [ "`(cd \"$(SRCDIR)\" && git status --porcelain) |\
299                                 $(awk) '\
300                                         BEGIN {n=0}\
301                                         /gen-version\.h/ {next}\
302                                         /^\?\?/ {next}\
303                                         {++n}\
304                                         END {print n}\
305                                 '`" -ne 0 ] &&\
306                                 VERSION="$${VERSION}-dirty";\
307                 else \
308                         $(_version_from_header);\
309                         echo "$${VERSION}" | $(grep) -q -F dirty ||\
310                                 VERSION="$${VERSION}-dirty";\
311                 fi;\
312         fi;\
313         vmaj="`echo \"$${VERSION}\" |\
314                 $(sed) -e 's/^\([^.]\{1,\}\).*/\1/'`";\
315         vmin="`echo \"$${VERSION}\" |\
316                 $(sed) -e 's/^[^.]\{1,\}\.\([^.]\{1,\}\).*/\1/'`";\
317         [ "$${vmin}" = "$${VERSION}" ] && VERSION="$${VERSION}.0" vmin=0;\
318         vupd="`echo \"$${VERSION}\" |\
319                 $(sed) -e 's/^[^.]\{1,\}\.[^.]\{1,\}\.\([^.-]\{1,\}\).*/\1/'`";\
320         [ "$${vupd}" = "$${VERSION}" ] && VERSION="$${VERSION}.0" vupd=0;\
321         trap "$(rm) -f ./version.tmp" 0 1 2 15;\
322         printf > ./version.tmp "#define n_VERSION \"v$${VERSION}\"\n";\
323         printf >> ./version.tmp \
324                 "#define n_VERSION_DATE \"`date -u +'%Y-%m-%d'`\"\n";\
325         printf >> ./version.tmp "#define n_VERSION_MAJOR \"$${vmaj}\"\n";\
326         printf >> ./version.tmp "#define n_VERSION_MINOR \"$${vmin}\"\n";\
327         printf >> ./version.tmp "#define n_VERSION_UPDATE \"$${vupd}\"\n";\
328         printf >> ./version.tmp \
329                 "#define n_VERSION_HEXNUM \"0x%02X%03X%03X\"\n" \
330                 "$${vmaj}" "$${vmin}" "$${vupd}";\
331         $(cmp) ./version.tmp $(CWDDIR)gen-version.h >/dev/null 2>&1 && exit;\
332         $(mv) ./version.tmp $(CWDDIR)gen-version.h;\
333         trap : 0 1 2 15
335 # s-mk-mode