1 #@ "mk-mk.in" -- mk.mk template, completed by mk-conf.sh.
2 #@ Please see "INSTALL" and "make.rc" instead.
4 SIZE_CHECK = @if ( command -v size ) > /dev/null 2>&1; then size $(@); fi
6 # Corresponds to same thing in makefile!
7 _version_from_header = VERSION="`< version.h $(sed) \
8 -e '/ VERSION /b X' -e d -e ':X' \
9 -e 's/[^\"]*\"v\([^\"]\{1,\}\)\"/\1/'`"
11 OBJ = $(OBJ_SRC:.c=.o)
14 $(ECHO_CC)$(CC) $(CFLAGS) $(INCS) -c $(<)
17 all: $(UAGENT) $(OPTIONAL_PRIVSEP)
20 $(ECHO_LINK)$(CC) $(LDFLAGS) -o $(@) $(OBJ) $(LIBS)
23 $(OBJ): config.h nail.h nailfuns.h $(AMALGAM_DEP)
24 $(AMALGAM_TARGET) accmacvar.o: okeys.h version.h
25 $(AMALGAM_TARGET) dotlock.o: dotlock.h
26 $(AMALGAM_TARGET) lex_input.o: cmd_tab.h
27 $(AMALGAM_TARGET) mime_types.o: mime_types.h
28 $(AMALGAM_TARGET) pop3.o smtp.o urlcrecry.o: rfc1321.h
29 $(AMALGAM_TARGET) smtp.o: smtp_gssapi.h
30 $(AMALGAM_TARGET) termcap.o: tcaps.h
33 $(ECHO_LINK)$(CC) $(LDFLAGS) -o $(@) privsep.o $(BASE_LIBS)
36 privsep.o: privsep.c config.h nail.h dotlock.h
37 $(ECHO_CC)$(CC) $(CFLAGS) $(BASE_INCS) -c privsep.c
42 awk=$(awk) cat=$(cat) cksum=$(cksum) rm=$(rm) sed=$(sed) grep=$(grep) \
43 $(SHELL) ./cc-test.sh --check-only ./$(UAGENT)
45 mime_types.h: mime.types
47 LC_ALL=C < ./mime.types > $(@) $(awk) '\
48 function add(mt, ln) {\
49 gsub(/[[:space:]]+/, " ", ln);\
52 for (j = 1; j <= i; ++j) {\
54 e = (e ? e " " : "") k\
58 e_a[mt] = e_a[mt] " ";\
62 /^[[:space:]]*#/ {next}\
63 /^[[:space:]]*$$/ {ltype = ""; next}\
66 print "FAULTY CONTINUATION: " $$0 >> "/dev/stderr";\
70 /^(@([thH]@)? )?[[:alpha:]]/ {\
71 if ($$1 ~ /^@([thH]@)?$$/) {\
77 if ($$1 !~ /^([[:alnum:]]+)\/([[:alnum:]_+-]+)$$/)\
78 print "FAULTY MIME TYPE: <" $$1 ">" >> "/dev/stderr";\
79 ltype = $$1; $$1 = "";\
83 no_a[++no_ai] = nt_a[ltype] = ltype;\
87 for (z = 1; z <= no_ai; ++z) {\
90 mt = toupper(substr(t, 1, j - 1));\
91 j = substr(t, j + 1);\
97 if (tm == "@" || tm == "@t@")\
98 mt = "_MT_" mt " | _MT_PLAIN";\
99 else if (tm == "@h@")\
100 mt = "_MT_" mt " | _MT_SOUP_h";\
101 else if (tm == "@H@")\
102 mt = "_MT_" mt " | _MT_SOUP_H";\
104 print " {" mt ", " l ", \"" j e_a[t] "\"},"\
111 LC_ALL=C _SYSCONFRC="$(SYSCONFRC)" _UAGENT="$(UAGENT)" \
112 $(_version_from_header) \
113 < ./nail.1 > $(@) $(awk) '\
114 BEGIN { written = 0 }\
115 /\.\\"--MKMAN-START--/, /\.\\"--MKMAN-END--/ {\
119 un = toupper(ENVIRON["_UAGENT"]);\
121 cn = toupper(substr(ln, 1, 1)) substr(ln, 2);\
122 print ".ds UU \\\\%", un;\
123 print ".ds UA \\\\%", cn;\
124 print ".ds ua \\\\%", ln;\
125 print ".ds VV \\\\%v", ENVIRON["VERSION"];\
126 path = ENVIRON["_SYSCONFRC"];\
127 gsub("/", "/\\:", path);\
128 print ".ds UR \\\\%", path;\
137 LC_ALL=C _SYSCONFRC="$(SYSCONFRC)" _UAGENT="$(UAGENT)" \
138 $(_version_from_header) \
139 < ./nail.rc > $(@) $(awk) 'BEGIN {written = 0}\
140 /^#--MKRC-START--/, /^#--MKRC-END--/ {\
145 ln = tolower(ENVIRON["_UAGENT"]);\
146 cn = toupper(substr(ln, 1, 1)) substr(ln, 2);\
147 print "#@ ", ENVIRON["_SYSCONFRC"];\
148 print "#@ Configuration file for ", cn, "(1) v",\
156 install: mkman.1 mkrc.rc
160 if [ -d "$${_dir}" ]; then :; else\
161 $(mkdir) -m 0755 -p "$${_dir}";\
165 _mode=$${1} _src=$${2} _dst=$${3};\
166 $(cp) -f "$${_src}" "$${_dst}";\
167 $(chmod) $${_mode} "$${_dst}";\
170 _mode=$${1} _ident=$${2} _src=$${3} _dst=$${4};\
171 $(cp) -f "$${_src}" "$${_dst}";\
172 $(chown) $${_ident} "$${_dst}";\
173 $(chmod) $${_mode} "$${_dst}";\
177 if [ "$(WANT_DEBUG)" != 0 ]; then :;\
178 elif [ -n "$(HAVE_STRIP)" ]; then \
179 $(strip) "$${_file}";\
182 if [ -n "$(DESTDIR)" ]; then __mkdir "$(DESTDIR)"; fi;\
183 __mkdir "$(DESTDIR)$(BINDIR)";\
184 __stripfile "$(UAGENT)";\
185 __copyfile 0555 "$(UAGENT)" "$(DESTDIR)$(BINDIR)/$(UAGENT)";\
186 if [ -n "$(OPTIONAL_PRIVSEP)" ]; then \
187 __mkdir "$(DESTDIR)$(LIBEXECDIR)";\
188 __stripfile "$(PRIVSEP)";\
190 if [ -n "$(_____PRIVSEP_GROUP)" ]; then \
191 m="g=rxs,$${m}" o=":$(PRIVSEP_GROUP)";\
195 if [ -n "$(PRIVSEP_USER)" ]; then \
196 m="u=rxs,$${m}" o="$(PRIVSEP_USER)$${o}";\
200 __copychownfile "$${m}" "$${o}" "$(PRIVSEP)" \
201 "$(DESTDIR)$(LIBEXECDIR)/$(PRIVSEP)";\
203 __mkdir "$(DESTDIR)$(MANDIR)/man1";\
204 __copyfile 0444 ./mkman.1 "$(DESTDIR)$(MANDIR)/man1/$(UAGENT).1";\
205 __mkdir "$(DESTDIR)$(SYSCONFDIR)";\
206 if [ -f "$(DESTDIR)$(SYSCONFDIR)/$(SYSCONFRC)" ]; then :; else\
207 __copyfile 0444 ./mkrc.rc \
208 "$(DESTDIR)$(SYSCONFDIR)/$(SYSCONFRC)";\
214 echo 'Uninstalling..';\
215 $(rm) -f "$(DESTDIR)$(BINDIR)/$(UAGENT)" \
216 "$(DESTDIR)$(MANDIR)/man1/$(UAGENT).1";\
217 if [ -n "$(OPTIONAL_PRIVSEP)" ]; then \
218 $(rm) -f "$(DESTDIR)$(LIBEXECDIR)/$(PRIVSEP)";\
220 if [ -n "$(VERBOSE)" ] && [ -f "$(DESTDIR)$(SYSCONFRC)" ]; then \
221 echo ' NOTE: not removing "$(DESTDIR)$(SYSCONFRC)"';\
227 $(rm) -f $(OBJ) $(UAGENT) ./mime_types.h ./mkman.1 ./mkrc.rc;\
228 if [ -n "$(OPTIONAL_PRIVSEP)" ]; then \
229 $(rm) -f ./privsep.o $(PRIVSEP);\
234 $(rm) -f ./config.* ./*.mk
236 # MUST work with "grep=grep sed=sed cmp=cmp mv=mv", otherwise modify makefile
238 @LC_ALL=C; export LC_ALL;\
239 if [ -z "$(VERSION)" ]; then \
240 eval VERSION="`(git describe --tags) 2>/dev/null`";\
241 if [ -n "$${VERSION}" ]; then \
242 VERSION="`echo $${VERSION} |\
243 $(sed) -e 's/^v\{0,1\}\(.*\)/\1/'`";\
244 [ "`git status --porcelain |\
252 VERSION="$${VERSION}-dirty";\
254 $(_version_from_header);\
255 echo "$${VERSION}" | $(grep) -q -F dirty ||\
256 VERSION="$${VERSION}-dirty";\
259 vmaj="`echo \"$${VERSION}\" |\
260 $(sed) -e 's/^\([^.]\{1,\}\).*/\1/'`";\
261 vmin="`echo \"$${VERSION}\" |\
262 $(sed) -e 's/^[^.]\{1,\}\.\([^.]\{1,\}\).*/\1/'`";\
263 [ "$${vmin}" = "$${VERSION}" ] && VERSION="$${VERSION}.0" vmin=0;\
264 vupd="`echo \"$${VERSION}\" |\
265 $(sed) -e 's/^[^.]\{1,\}\.[^.]\{1,\}\.\([^.-]\{1,\}\).*/\1/'`";\
266 [ "$${vupd}" = "$${VERSION}" ] && VERSION="$${VERSION}.0" vupd=0;\
267 trap "$(rm) ./version.tmp" 0 1 2 15;\
268 printf > ./version.tmp "#define VERSION \"v$${VERSION}\"\n";\
269 printf >> ./version.tmp "#define VERSION_MAJOR \"$${vmaj}\"\n";\
270 printf >> ./version.tmp "#define VERSION_MINOR \"$${vmin}\"\n";\
271 printf >> ./version.tmp "#define VERSION_UPDATE \"$${vupd}\"\n";\
272 $(cmp) ./version.tmp ./version.h >/dev/null 2>&1 && exit;\
273 $(mv) ./version.tmp ./version.h;\