lastword = $(if $(firstword $1),$(word $(words $1),$1)) SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) utildir := SELF_DIR # # Makefile # Adrian Perez, 2009-05-15 11:20 # RST_HTML_FLAGS = --link-stylesheet --stylesheet=html/lsr.css RST_TEX_FLAGS = --documentclass=igaliabk --font-encoding=OT1 --output-encoding=utf-8 OUTPUT_BASE = output rst_srcs := $(filter-out index.rst,$(wildcard *.rst)) html_pages := $(patsubst %.rst,html/%.html,$(rst_srcs)) html/index.html svg_images := $(wildcard images/*.svg) png_images := $(patsubst %.svg,%.png,$(svg_images)) $(wildcard images/*.png) utildir := ../../../tools/ # Main targets # all: html pdf pdf: pdf/$(OUTPUT_BASE).pdf ebook: pdf/$(OUTPUT_BASE).ebook.pdf html: $(html_pages) png: $(png_images) .PHONY: html pdf ebook png ### Xavi all_img := $(wildcard images/*) build_images := src_images := $(wildcard images/*) html_images := $(patsubst %,html/%,$(src_images)) $(html_images): html/images/%: images/% $P copy-img $@ $Q mkdir -p $(@D) $Q cp $< $@ ### End Xavi # Cleanup targets # clean: $P clean pdf $Q $(RM) -r pdf/ $P clean html $Q $(RM) -r html/ $Q $(RM) index.rst # Copy CSS file # html/lsr.css: lsr.css $P copy $@ $Q mkdir -p $(@D) $Q cp $< $@ $(html_pages): html/lsr.css $(html_images) # Top-level RST creation for the PDF # pdf/$(OUTPUT_BASE).rst: $(rst_srcs) docinfo $P toplevel $@ $Q mkdir -p $(@D) $Q $(utildir)/doctool toplevel --info=docinfo $(rst_srcs) > $@ pdf/$(OUTPUT_BASE).pdf pdf/$(OUTPUT_BASE).ebook.pdf: $(png_images) # Index page creation for the HTML output # index.rst: $(rst_srcs) docinfo $P htmlindex $@ $Q mkdir -p $(@D) $Q $(utildir)/doctool htmlindex --info=docinfo $(rst_srcs) > $@ # Implicit rules # html/%.html: %.rst $P rst2html $@ $Q mkdir -p $(@D) $Q $(utildir)/doctool rst2html $(RST_HTML_FLAGS) $< $@ %.tex: %.rst $P rst2latex $@ $Q mkdir -p $(@D) $Q $(utildir)/doctool rst2latex $(RST_TEX_FLAGS) $< $@ %.ebook.tex: %.rst $P rst2ebook $@ $Q mkdir -p $(@D) $Q $(utildir)/doctool rst2ebook $(RST_TEX_FLAGS) $< $@ %.pdf: %.tex $P pdflatex $@ $Q cd $(@D) && TEXINPUTS=.:$(CURDIR): pdflatex $(PDFLATEX_FLAGS) $(CURDIR)/$< $Q cd $(@D) && TEXINPUTS=.:$(CURDIR): pdflatex $(PDFLATEX_FLAGS) $(CURDIR)/$< %.trim.png: %.svg $P svg2png $@ $Q inkscape --without-gui --export-png=$@ --export-area-canvas --export-dpi=150 $< %.png: %.trim.png $P png-trim $@ $Q convert -trim $< $@ # Avoid removing intermediate .tex files and similar things. # .SECONDARY: # Control operation verboseness # ifeq ($(origin V),command line) verbose := $(V) endif ifndef verbose verbose := 0 endif ifeq ($(verbose),0) P = @printf ' * %-10s %s\n' Q = @ PDFLATEX_FLAGS += -interaction batchmode else P = @: endif # Check for the U= command line argument # ifeq ($(origin U),command line) utildir := $(U) endif ifndef utildir utildir := $(CURDIR) endif # vim:ft=make #