diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk --- a/share/mk/bsd.man.mk +++ b/share/mk/bsd.man.mk @@ -288,7 +288,7 @@ .endif .endfor -manlint: +manlint: checkmanlinks .if defined(${__group}) && !empty(${__group}) .for __page in ${${__group}} manlint: ${__page:S/:/\:/g}lint @@ -301,4 +301,21 @@ .endfor .endif +checkmanlinks: +.if defined(${__group}LINKS) +checkmanlinks: checkmlinks-${__group} +checkmanlinks-${__group}: + @(cd ${.CURDIR}; set ${${__group}LINKS}; err=0; \ + while [ $$# -ge 2 ]; do \ + page="$$1"; shift; link="$$1"; shift; \ + if ! [ -f "$${page}" ]; then \ + echo "$${page} does not exist"; \ + elif ! egrep -q "^\.Nm $${link%.[0-9]}\>" "$${page}"; then \ + echo "$${page} does not mention" \ + "$${link%.[0-9]}($${link##*.})"; \ + err=1; \ + fi \ + done >&2; exit $$((err))) +.endif # defined(${__group}LINKS) + .endfor # __group in ${MANGROUPS}