###############################################################################
##
##  makefile for documentation creation
##
##  INTPUT FILES (SOURCE/doc)
##      doc/
##          dox/            <-- generated API docs support files
##          doxygen/        <-- generated API docs support files
##          texi/           <-- hand-written project articles
##
##  OUTPUT FILES (BUILD/doc)
##      doc/
##      doc/
##          api/
##              html/   <-- API in html format
##              xml/    <-- API in xml format
##          articles/
##              html/   <-- articles in html format
##              txt/    <-- articles in txt format
##              wiki/   <-- articles in Google Code Wiki format
##              xml/    <-- articles in xml-texinfo format
##          man/
##              man1/   <-- man-pages for utilities
##
###############################################################################

# Conventional VPATH directive breaks too many things so we use vpath and its
# pattern-spec feature. If new files or extensions are introduced they may need
# to be added here.

VPATH =

vpath COPYING       $(top_srcdir)
vpath INSTALL       $(top_srcdir)
vpath README        $(top_srcdir)
vpath autoaux/%     $(top_srcdir)
vpath %.1           $(top_srcdir)
vpath %.cpp         $(top_srcdir)
vpath %.h           $(top_srcdir)
vpath %.m4          $(top_srcdir)
vpath %.tcc         $(top_srcdir)

###############################################################################

SOURCE/ = $(top_srcdir)/
BUILD/  = $(top_builddir)/

DOC.in/  = $(SOURCE/)doc/
DOC.out/ = $(BUILD/)doc/

DOC.out.api/      = $(DOC.out/)api/
DOC.out.articles/ = $(DOC.out/)articles/
DOC.out.site/     = $(DOC.out/)site/

###############################################################################

M4       = m4
M4.flags = -I$(BUILD/)project
M4.cmd   = $(M4) $(M4.flags) $(1) > $(2)
M4.deps  = $(BUILD/)project/project.m4

ifeq ($(FOUND_HELP2MAN),yes)
HELP2MAN       = help2man
HELP2MAN.flags = -m "$(PROJECT_name) Utilities" -N
HELP2MAN.cmd   = $(HELP2MAN) $(HELP2MAN.flags) ./$(1) -o $(2)
else
HELP2MAN.cmd = touch $(2)
endif

MAKEINFO.flags      = -I$(DOC.in/)texi -I$(DOC.out/)texi
MAKEINFO.flags.html = --html --no-headers --no-split
MAKEINFO.flags.txt  = --plaintext --no-headers
MAKEINFO.flags.xml  = --xml --output-indent=4
MAKEINFO.cmd        = makeinfo $(MAKEINFO.flags) $(MAKEINFO.flags.$(1)) $(2) -o $(3)

HTMLCOMBINE = $(SOURCE/)project/htmlcombine.py
HTMLCOMBINE.cmd   = $(HTMLCOMBINE) --header $(1) --footer $(2) --body $(3) > $(4)
HTMLCOMBINE.deps  = $(HTMLCOMBINE)

XML2WIKI       = $(SOURCE/)project/xml2wiki.py
XML2WIKI.flags = --date --toc
XML2WIKI.cmd   = $(XML2WIKI) $(XML2WIKI.flags) $(1) > $(2)
XML2WIKI.deps  = $(XML2WIKI)

DOXYGEN     = doxygen
DOXYGEN.cmd = $(DOXYGEN) $(1)

###############################################################################

DOC.m4.out = \
    doc/texi/base/project.texi \
    doc/doxygen/Doxyfile       \
    doc/doxygen/header.html    \
    doc/doxygen/footer.html    \
    doc/html/header.html       \
    doc/html/footer.html

DOC.man.utils = mp4art mp4file mp4subtitle mp4track
DOC.man.out   = $(DOC.man.utils:%=$(DOC.out/)man/man1/%.1)

DOC.texi.articles = $(wildcard $(DOC.in/)texi/*.texi $(DOC.out/)texi/*.texi)

DOC.texi.includes = \
    doc/texi/base/project.texi \
    $(wildcard $(DOC.in/)texi/*/*.texi $(DOC.out/)texi/*/*.texi)

DOC.texi2html.out = $(DOC.texi.articles:$(DOC.in/)texi/%.texi=$(DOC.out.articles/)html/%.html)
DOC.texi2txt.out  = $(DOC.texi.articles:$(DOC.in/)texi/%.texi=$(DOC.out.articles/)txt/%.txt)
DOC.texi2xml.out  = $(DOC.texi.articles:$(DOC.in/)texi/%.texi=$(DOC.out.articles/)xml/%.xml)

DOC.xml2wiki.out  = $(DOC.texi2xml.out:$(DOC.out.articles/)xml/%.xml=$(DOC.out.articles/)wiki/%.wiki)

DOC.api.out = $(DOC.out.api/).stamp

DOC.site.out       = $(DOC.out.site/).stamp
DOC.site.out.copy  = $(patsubst $(DOC.in/)html/%,$(DOC.out.site/)%, \
    $(filter-out %.in,$(wildcard $(DOC.in/)html/*)))
DOC.site.out.index = $(DOC.out.site/)index.html
DOC.site.out.html  = $(patsubst $(DOC.out.articles/)html/%,$(DOC.out.site/)%, \
    $(filter-out %/Documentation.html,$(DOC.texi2html.out)))

###############################################################################

MKDIRS += $(dir $(DOC.m4.out))
MKDIRS += $(DOC.out/)man/man1/
MKDIRS += $(foreach n,html man texi txt wiki xml,$(DOC.out.articles/)$n)
MKDIRS += $(DOC.out.api/)
MKDIRS += $(DOC.out.site/)

###############################################################################

EXTRA_DIST += \
    $(SOURCE/)vstudio9.0/include/mp4v2/project.h \
    $(SOURCE/)vstudio9.0/mp4v2.sln \
    $(wildcard $(SOURCE/)vstudio9.0/*/*.vcproj)

###############################################################################

dist-hook: $(DOC.texi2txt.out) $(DOC.man.out)
	rm -fr $(distdir)/doc
	$(mkdir_p) $(distdir)/doc
	$(INSTALL_DATA) $(DOC.in/)GNUmakefile.mk $(distdir)/doc/.
ifneq (,$(DOC.texi2txt.out))
	$(INSTALL_DATA) $(DOC.texi2txt.out) $(distdir)/doc/.
endif
ifneq (,$(DOC.man.out))
	$(mkdir_p) $(distdir)/doc/man/man1
	$(INSTALL_DATA) $(DOC.man.out) $(distdir)/doc/man/man1
endif

distclean-local: docclean

###############################################################################

$(DOC.m4.out): %: %.m4 $(M4.deps) | $(dir $(DOC.m4.out))
	$(call M4.cmd,$<,$@)

###############################################################################

.PHONY: articles doc
articles: html txt xml wiki
doc: man articles api site

.PHONY: articlesclean apiclean docclean
articlesclean: htmlclean txtclean xmlclean wikiclean
docclean: manclean articlesclean apiclean siteclean

.PHONY: man html txt xml wiki api
man: $(DOC.man.out)
html: $(DOC.texi2html.out)
txt: $(DOC.texi2txt.out)
xml: $(DOC.texi2xml.out)
wiki: $(DOC.xml2wiki.out)
api: $(DOC.api.out)
site: $(DOC.site.out)

.PHONY: manclean htmlclean txtclean xmlclean wikiclean apiclean
manclean:
	rm -f $(DOC.man.out)

htmlclean:
	rm -f $(DOC.texi2html.out)

txtclean:
	rm -f $(DOC.texi2txt.out)

xmlclean:
	rm -f $(DOC.texi2xml.out)

wikiclean:
	rm -f $(DOC.xml2wiki.out)

apiclean:
	rm -f $(DOC.api.out)
	rm -fr $(DOC.out.api/)html/ $(DOC.out.api/)xml/

siteclean:
	rm -fr $(DOC.out.site/)

###############################################################################

$(DOC.man.out): | $(dir $(DOC.man.out))
$(DOC.man.out): $(DOC.out/)man/man1/%.1: $(BUILD/)%
	$(call HELP2MAN.cmd,$<,$@)

$(DOC.texi2html.out): $(DOC.texi.includes) | $(dir $(DOC.texi2html.out))
$(DOC.texi2html.out): $(DOC.out.articles/)html/%.html: $(DOC.in/)texi/%.texi
	$(call MAKEINFO.cmd,html,$<,$@)

$(DOC.texi2txt.out): $(DOC.texi.includes) | $(dir $(DOC.texi2txt.out))
$(DOC.texi2txt.out): $(DOC.out.articles/)txt/%.txt: $(DOC.in/)texi/%.texi
	$(call MAKEINFO.cmd,txt,$<,$@)

$(DOC.texi2xml.out): $(DOC.texi.includes) | $(dir $(DOC.texi2xml.out))
$(DOC.texi2xml.out): $(DOC.out.articles/)xml/%.xml: $(DOC.in/)texi/%.texi
	$(call MAKEINFO.cmd,xml,$<,$@)

$(DOC.xml2wiki.out): $(XML2WIKI.deps) | $(dir $(DOC.xml2wiki.out))
$(DOC.xml2wiki.out): $(DOC.out.articles/)wiki/%.wiki: $(DOC.out.articles/)xml/%.xml
	$(call XML2WIKI.cmd,$<,$@)

$(DOC.api.out): | $(dir $(DOC.api.out))
$(DOC.api.out): $(DOC.in/)doxygen/banner.png
$(DOC.api.out): $(DOC.in/)doxygen/project.css
$(DOC.api.out): $(DOC.out/)doxygen/header.html
$(DOC.api.out): $(DOC.out/)doxygen/footer.html
$(DOC.api.out): $(DOC.out/)doxygen/Doxyfile
	$(call DOXYGEN.cmd,$<)
	$(INSTALL_DATA) $(DOC.in/)doxygen/banner.png $(DOC.out.api/)html/
	touch $@

###############################################################################

$(DOC.site.out): | $(DOC.out.site/)articles
$(DOC.site.out): | $(DOC.out.site/)api
$(DOC.site.out): $(DOC.site.out.copy)
$(DOC.site.out): $(DOC.site.out.index)
$(DOC.site.out): $(DOC.site.out.html)

$(DOC.out.site/)articles: | html $(DOC.out.site/)
	rm -f $@
	ln -s ../articles/html $@

$(DOC.out.site/)api: | api $(DOC.out.site/)
	rm -f $@
	ln -s ../api/html $@

$(DOC.site.out.copy): $(DOC.out.site/)%: $(DOC.in/)html/%
	$(INSTALL_DATA) $^ $(@D)/.

$(DOC.site.out.index): $(DOC.out/)html/header.html $(DOC.out/)html/footer.html
$(DOC.site.out.index): $(HTMLCOMBINE.deps)
$(DOC.site.out.index): $(DOC.out.articles/)html/Documentation.html
	$(call HTMLCOMBINE.cmd,$(word 2,$^),$(word 3,$^),$<,$@)

$(DOC.site.out.html): $(DOC.out/)html/header.html $(DOC.out/)html/footer.html
$(DOC.site.out.html): $(HTMLCOMBINE.deps)
$(DOC.site.out.html): $(DOC.out.site/)%: $(DOC.out.articles/)html/%
	$(call HTMLCOMBINE.cmd,$(word 2,$^),$(word 3,$^),$<,$@)

###############################################################################

GOOGLE.out/      = $(top_builddir)/google/
GOOGLE.repo.doc  = $(if $(filter stable,$(PROJECT_repo_type)),$(PROJECT_version),trunk)

google.clean:
	rm -fr $(GOOGLE.out/)

google.post: site wiki
google.post: | $(GOOGLE.out/)
google.post: google.rsync google.rm google.add google.propset

$(GOOGLE.out/):
	svn co --depth immediates $(PROJECT_repo_root) $(GOOGLE.out/)
	svn update --set-depth immediates google/wiki
	svn update --set-depth infinity google/doc/$(GOOGLE.repo.doc)

google.rsync:
	rsync -vrptPL --delete \
	    --exclude=".svn/*" --exclude=".svn" \
	    --exclude="*/.svn/*" --exclude="*/.svn" \
	    --exclude=".stamp" --exclude="*/.stamp" \
	    --exclude="*.m4" --exclude="*/*.m4" \
	    $(DOC.out.site/). $(GOOGLE.out/)doc/$(GOOGLE.repo.doc)/.
	$(INSTALL_DATA) $(DOC.out.articles/)wiki/BuildRepository.wiki $(GOOGLE.out/)wiki/.
	$(INSTALL_DATA) $(DOC.out.articles/)wiki/BuildSource.wiki $(GOOGLE.out/)wiki/.

google.rm:
	@files=`svn status $(GOOGLE.out/) | grep '^!' | awk '{ print $$2 }'`; \
	if [ -n "$$files" ]; then \
	    svn rm $$files; \
	fi

google.add:
	@files=`svn status $(GOOGLE.out/) | grep '^?' | awk '{ print $$2 }'`; \
	if [ -n "$$files" ]; then \
	    svn add $$files; \
	fi

google.propset:
	find $(GOOGLE.out/)doc/$(GOOGLE.repo.doc) -type f -a \( -name "*.html" -o -name "*.css" \) -print0 \
	    | xargs -0 svn propset svn:eol-style native
	find $(GOOGLE.out/)doc/$(GOOGLE.repo.doc) -type f -a -name "*.html" -print0 \
	    | xargs -0 svn propset svn:mime-type "text/html"

###############################################################################

dist-hb: distdir=lib$(PACKAGE)
dist-hb: distdir
	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >lib$(PACKAGE)-$(VERSION).tar.gz
	$(am__remove_distdir)

###############################################################################

## Precompiled header support is tricky given libtool's complexity and its
## historical aversion to supporting it.
##
## What we do is add rules to precompile. Unfortunately, we cannot
## automatically determine what flags libtool adds for compilation variants;
## ie: PIC or non-PIC compilation. So instead we will hardcode the flags
## to match. The reason for this is the precompiled-header will not be used if
## (relevent) compilation flags differ.

CXX.gch.static.flags = $(X_GCH_STATIC_FLAGS)
CXX.gch.static.in    = libplatform/impl.h src/impl.h libutil/impl.h
CXX.gch.static.out   = $(CXX.gch.static.in:%=$(BUILD/)%.gch/static)

CXX.gch.shared.flags = $(X_GCH_SHARED_FLAGS)
CXX.gch.shared.in    = libplatform/impl.h src/impl.h libutil/impl.h
CXX.gch.shared.out   = $(CXX.gch.shared.in:%=$(BUILD/)%.gch/shared)

CXX.gch.exe.flags = $(X_GCH_FLAGS)
CXX.gch.exe.in    = util/impl.h
CXX.gch.exe.out   = $(CXX.gch.exe.in:%=$(BUILD/)%.gch/exe)

CXX.gch.static.dependents = $(libmp4v2_la_OBJECTS)
CXX.gch.shared.dependents = $(libmp4v2_la_OBJECTS)

CXX.gch.exe.dependents = \
    $(mp4art_OBJECTS)        \
    $(mp4chaps_OBJECTS)      \
    $(mp4extract_OBJECTS)    \
    $(mp4file_OBJECTS)       \
    $(mp4info_OBJECTS)       \
    $(mp4subtitle_OBJECTS)   \
    $(mp4syncfiles_OBJECTS)  \
    $(mp4tags_OBJECTS)       \
    $(mp4track_OBJECTS)      \
    $(mp4trackdump_OBJECTS)

ifeq ($(X_GCH_STATIC),1)
$(CXX.gch.static.dependents): $(CXX.gch.static.out)
endif

ifeq ($(X_GCH_SHARED),1)
$(CXX.gch.shared.dependents): $(CXX.gch.shared.out)
endif

ifeq ($(X_GCH),1)
$(CXX.gch.exe.dependents): $(CXX.gch.exe.out)
endif

$(CXX.gch.static.out): | $(sort $(dir $(CXX.gch.static.out)))
$(CXX.gch.static.out): $(BUILD/)%.gch/static: %
	$(CXXCOMPILE) $(CXX.gch.static.flags) -c $< -o $@

$(CXX.gch.shared.out): | $(sort $(dir $(CXX.gch.shared.out)))
$(CXX.gch.shared.out): $(BUILD/)%.gch/shared: %
	$(CXXCOMPILE) $(CXX.gch.shared.flags) -c $< -o $@

$(CXX.gch.exe.out): | $(sort $(dir $(CXX.gch.exe.out)))
$(CXX.gch.exe.out): $(BUILD/)%.gch/exe: %
	$(CXXCOMPILE) $(CXX.gch.exe.flags) -c $< -o $@

MKDIRS += $(dir $(CXX.gch.static.out))
MKDIRS += $(dir $(CXX.gch.shared.out))
MKDIRS += $(dir $(CXX.gch.exe.out))

clean-local:
	rm -f $(CXX.gch.static.out)
	rm -f $(CXX.gch.shared.out)
	rm -f $(CXX.gch.exe.out)

###############################################################################

$(sort $(MKDIRS)):
	$(mkdir_p) $@
