SHELL := /bin/bash webpages := $(addprefix www/, $(addsuffix .html, index news documentation gallery downloads related_projects legal)) process_version := $(addprefix tmp/, $(addsuffix .md, downloads readme_head)) tmptexfiles := $(addprefix tmp/, $(addsuffix .tex, overview changelog compilation api examples)) images_jpg := $(addprefix images/, $(addsuffix .jpg, moana_16spp_input moana_16spp_oidn moana_palms_16spp_input moana_palms_16spp_oidn bistro_64spp_input bistro_64spp_oidn bistro2_64spp_input bistro2_64spp_oidn sponza_16spp_input sponza_16spp_oidn mazda_64spp_input mazda_64spp_oidn mazda_512spp_color mazda_512spp_oidn mazda_512spp_albedo_firsthit mazda_512spp_albedo_nondeltahit mazda_512spp_normal_firsthit mazda_512spp_normal_nondeltahit villa_64spp_input villa_64spp_oidn villa2_64spp_input villa2_64spp_oidn artdeco_2048spp_input artdeco_2048spp_oidn)) images_png := $(addprefix images/, $(addsuffix .png, blacktocat)) images_fig := images_svg := images_fig2pdf := $(addprefix tmp/, $(addsuffix .pdf, $(images_fig))) images_fig2png := $(addprefix images/, $(addsuffix .png, $(images_fig))) webimages := $(addprefix www/, $(images_jpg) $(images_png) $(images_fig2png) $(addprefix images/, $(addsuffix .svg, $(images_svg)))) pdfimages := $(images_jpg) $(images_png) $(images_fig2pdf) PANDOC := pandoc PDMINVERSION := 2000000 PDOK := $(shell expr `$(PANDOC) --version|head -n 1|cut -d' ' -f 2| sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$$/&00/' -e 's/^[0-9]\{5,6\}$$/&00/'` \>= $(PDMINVERSION)) ifneq "$(PDOK)" "1" $(error You need at least pandoc v2.0) endif all: www doc pdf www: $(webpages) www/stylesheet.css $(webimages) doc: ../README.md pdf: ../readme.pdf .PHONY: all www doc pdf clean realclean if_is_devel_then = if [[ "${CI_BUILD_REF_NAME}" == "devel" || (-d ../.git && "`git rev-parse --abbrev-ref HEAD`" == "devel") ]] ; then tmp/version: ../CMakeLists.txt $(wildcard ../.git/HEAD) sed -n $< -e "s/^SET(OIDN_VERSION_MAJOR \([0-9]\+\))/\1./ip" | tr -d '\n' > $@ sed -n $< -e "s/^SET(OIDN_VERSION_MINOR \([0-9]\+\))/\1./ip" | tr -d '\n' >> $@ sed -n $< -e "s/^SET(OIDN_VERSION_PATCH \([0-9]\+\))/\1/ip" | tr -d '\n' >> $@ #$(if_is_devel_then) echo " (devel)"; else echo; fi >> $@ replace_version = sed -e "s//`cat tmp/version`/g" $< > $@ tmp/%.md: %.md tmp/version $(replace_version) tmp/links.md: links.md tmp/images_web.md: images.md sed -e "s/\.fig/.png/" -e "s@: @: https://openimagedenoise.github.io/images/@" $< > $@ tmp/images_local_png.md: images.md sed -e "s@: @: images/@" -e "s/\.fig/.png/" $< > $@ tmp/images_local_pdf.md: images.md sed -e "s@: @: images/@" -e "s@images/\(.*\)\.fig@tmp/\1.pdf@" $< > $@ changelog.md: ln -s ../CHANGELOG.md $@ ## ---------------------------------------------------------------------------- ## Directories ## ---------------------------------------------------------------------------- $(webpages) www/stylesheet.css: | wwwdir wwwdir: @mkdir -p www $(webimages): | wwwimgdir wwwimgdir: @mkdir -p www/images $(process_version) tmp/version ../readme.pdf $(tmptexfiles) tmp/api.md tmp/api_html.md tmp/links.md tmp/images_web.md tmp/images_local_pdf.md tmp/images_local_png.md: | tmpdir tmpdir: @mkdir -p tmp ## ---------------------------------------------------------------------------- ## Webpages ## ---------------------------------------------------------------------------- markdown2web = $(PANDOC) --email-obfuscation=none -f markdown $(filter-out webtemplate.html,$+) --template webtemplate -V select_$(basename $(@F)) -o $@ $(webpages): tmp/links.md tmp/images_local_png.md webtemplate.html www/%.html: $(markdown2web) www/stylesheet.css: stylesheet.css cp $< $@ tmp/api_html.md: api.md tmp/links.md tmp/images_local_png.md $(PANDOC) $+ --indented-code-classes=cpp -t markdown-fenced_code_attributes -o $@ www/index.html: teaser.html overview.md changelog.md www/news.html: news.md www/gallery.html: gallery.md www/downloads.html: tmp/downloads.md compilation.md www/related_projects.html: related_projects.md www/legal.html: legal.md www/documentation.html: documentation.md tmp/api_html.md examples.md ## ---------------------------------------------------------------------------- ## Images ## ---------------------------------------------------------------------------- www/images/%.png: %.fig fig2dev -L png -S 4 $+ $@ www/images/%.svg: %.svg cp $+ $@ tmp/%.pdf: %.fig fig2dev -L pdf $+ $@ www/images/%: images/% cp $< $@ # try to download images if not linked; images may not be up to date images/%: if [[ -d oidn-doc/images ]] ; then \ ln -fs oidn-doc/images ;\ else \ if [[ -x "`which wget 2> /dev/null`" ]] ; then \ mkdir -p images ;\ wget https://openimagedenoise.github.io/$@ -O $@ ;\ else \ curl https://openimagedenoise.github.io/$@ --create-dirs -Lo $@ ;\ fi \ fi ## ---------------------------------------------------------------------------- ## Markdown ## ---------------------------------------------------------------------------- # Pandoc doesn't convert the alt text of an image to a caption in markdown, so we need to do it manually convert_image_alt_to_caption = perl -0pe 's/!\[((?:\[.*?\]|.)+?)\]\((.*?)\)/![]\(\2)\n\1/sg' tmp/api.md: api.md tmp/links.md tmp/images_web.md $(PANDOC) $+ --indented-code-classes=cpp -t markdown-fenced_code_attributes -o $@ ../README.md: tmp/readme_head.md overview.md compilation.md documentation.md tmp/api.md examples.md tmp/links.md tmp/images_web.md $(PANDOC) $+ -t gfm | $(convert_image_alt_to_caption) > $@ ## ---------------------------------------------------------------------------- ## PDF ## ---------------------------------------------------------------------------- markdown2tex = $(PANDOC) --columns=72 --top-level-division=chapter --filter $+ -o $@ tmp/%.tex: filter-latex.py %.md tmp/links.md tmp/images_local_pdf.md $(markdown2tex) tmp/api.tex: filter-latex.py api.md tmp/links.md tmp/images_local_pdf.md $(markdown2tex) --indented-code-classes=cpp ../readme.pdf: readme.tex $(tmptexfiles) $(wildcard oidn-doc/intel-spec.cls) preamble.tex tmp/version $(pdfimages) md5s=0;\ auxf="tmp/`basename $< tex`aux";\ newmd5s=`md5sum $$auxf 2> /dev/null`;\ until [[ $$md5s == $$newmd5s ]]; do \ md5s=$$newmd5s;\ xelatex -output-directory=tmp $<;\ newmd5s=`md5sum $$auxf`;\ done cp tmp/$(basename $<).pdf $@ ## ---------------------------------------------------------------------------- ## Clean ## ---------------------------------------------------------------------------- clean: rm -rf www tmp changelog.md __pycache__ realclean: clean rm -irf images