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