
obj := $(obj)/Documentation
src := $(src)/Documentation

ifeq ($(VERBOSE),1)
  Q =
  print_asciidoc =
  print_xsltproc =
  print_install =
  hide_xsltproc_output =
else
  Q = @
  print_asciidoc =		echo '      ASCIIDOC            '`basename $@`;
  print_xsltproc =		echo '      XSLTPROC            '`basename $@`;
  print_install =		echo '      INSTALL             '`basename $1`'	to	$(DESTDIR_SQ)'$2;
  hide_xsltproc_output = 2> /dev/null
endif

define manpage.xsl
	if [ -z ${MANPAGE_DOCBOOK_XSL} ]; then 			\
		echo "*********************************";	\
		echo "** No docbook.xsl is installed **";	\
		echo "** Can't make man pages        **";	\
		echo "*********************************";	\
		exit 1;						\
	fi
endef

do_asciidoc_build =				\
	($(print_asciidoc)			\
	 asciidoc -d manpage -b docbook -o $@ $<)

do_xsltproc_build =				\
	($(print_xsltproc)			\
	 xsltproc --nonet -o $@ ${MANPAGE_DOCBOOK_XSL} $< $(hide_xsltproc_output))

#
# asciidoc requires a synopsis, but file format man pages (5) do
# not require them. This removes it from the file in the final step.
define remove_synopsis
	(sed -e '/^\.SH "SYNOPSIS"/,/ignore/d' $1 > $1.tmp;\
	 mv $1.tmp $1)
endef

#
# Most likely a docbook.xsl is already installed on the users system
# instead of creating a new wheel, lets reuse what's already there.
#
FIND_MANPAGE_DOCBOOK_XSL :=  $(shell find /usr -name docbook.xsl 2>/dev/null | grep manpages | head -1)

MANPAGE_DOCBOOK_XSL ?= ${FIND_MANPAGE_DOCBOOK_XSL}

$(obj)/%.xsl: $(src)/%.txt
	$(Q)mkdir -p $(obj)
	$(Q)$(do_asciidoc_build)


$(obj)/%.1: $(obj)/%.1.xsl
	@$(call manpage.xsl)
	$(Q)$(do_xsltproc_build)

$(obj)/%.5: $(obj)/%.5.xsl
	@$(call manpage.xsl)
	$(Q)$(do_xsltproc_build)
	$(Q)$(call remove_synopsis, $@)

TEXT1 = $(wildcard *.1.txt)
MAN1 = $(patsubst %.1.txt,$(obj)/%.1, ${TEXT1})
TEXT5 = $(wildcard *.5.txt)
MAN5 = $(patsubst %.5.txt,$(obj)/%.5, ${TEXT5})

all: $(MAN1) $(MAN5)

# Need to find out how to export a macro instead of
# copying this from the main Makefile.
define do_install_data
	$(print_install)				\
	if [ ! -d '$(DESTDIR_SQ)$2' ]; then		\
		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2';	\
	fi;						\
	$(INSTALL) -m 644 $1 '$(DESTDIR_SQ)$2'
endef


MAN1_INSTALL = $(MAN1:%.1=%.1.install)
MAN5_INSTALL = $(MAN5:%.5=%.5.install)

$(MAN1_INSTALL): %.1.install : %.1 force
	$(Q)$(call do_install_data,$<,$(man_dir_SQ)/man1)
$(MAN5_INSTALL): %.5.install : %.5 force
	$(Q)$(call do_install_data,$<,$(man_dir_SQ)/man5)

html_dir = $(src)/HTML
image_dir = $(html_dir)/images

HTML = $(wildcard $(html_dir)/*.html)
IMGS = $(wildcard $(image_dir)/*.png)

HTML_INSTALL = $(subst .html,.html.install,$(HTML))
IMGS_INSTALL = $(subst .png,.png.install,$(IMGS))

$(HTML_INSTALL): %.html.install : %.html force
	$(Q)$(call do_install_data,$<,'$(html_install_SQ)')

$(IMGS_INSTALL): %.png.install : %.png force
	$(Q)$(call do_install_data,$<,'$(img_install_SQ)')


GUI_INSTALL = $(HTML_INSTALL) $(IMGS_INSTALL)

install: $(MAN1_INSTALL) $(MAN5_INSTALL) $(GUI_INSTALL)

clean:
	(cd $(obj); \
	 $(RM) *.xml *.xsl *.1 *.5)

.PHONE: force
force:
