# generic utility modules # (c) 2001 jannet it services # contact@jannet.de # $Id$ ifeq ($(TEX_TMPL_DIR), "") TEX_TMPL_DIR = thisisnotadirectory endif latex = latex # this is what is there already PRE_FIG_LOCAL = $(wildcard *.fig) PRE_TEX_LOCAL = $(wildcard *.tex) PRE_TMPL_LOCAL = $(wildcard *.tmpl *.ger) PRE_HTML_LOCAL = $(wildcard *.html) PRE_FIG_REMOTE = $(foreach dir,$(TEX_TMPL_DIR),$(wildcard $(dir)/*.fig)) PRE_TEX_REMOTE = $(foreach dir,$(TEX_TMPL_DIR),$(wildcard $(dir)/*.tex)) PRE_TMPL_REMOTE = $(foreach dir,$(TEX_TMPL_DIR),$(wildcard $(dir)/*.tmpl $(dir)/*.ger)) PRE_HTML_REMOTE = $(foreach dir,$(TEX_TMPL_DIR),$(wildcard $(dir)/*.html)) # this is what should be there FILES_FROM_TMPL = $(notdir $(patsubst %.ger,%.tex,$(patsubst %.tmpl,%,$(PRE_TMPL_REMOTE) $(PRE_TMPL_LOCAL)))) EPS_FROM_FIG = $(notdir $(patsubst %.fig,%.png,$(PRE_FIG_REMOTE) $(PRE_FIG_LOCAL))) FILES_COPIED = $(notdir $(wildcard $(TEX_TMPL_DIR)/*.html $(TEX_TMPL_DIR)/*.tex)) GENERATED = $(FILES_FROM_TMPL) $(EPS_FROM_FIG) $(FILES_COPIED) GENERATED_TEX = $(filter %.tex,$(GENERATED)) GENERATED_EPS = $(filter %.png,$(GENERATED)) GENERATED_HTML = $(filter %.html,$(GENERATED)) # all TEX = $(PRE_TEX_LOCAL) $(GENERATED_TEX) EPS = $(GENERATED_EPS) HTML = $(PRE_HTML_LOCAL) $(GENERATED_HTML) LATEX_INPUT = $(TEX) $(EPS) HTML_INPUT = $(HTML) $(IMAGES) # this comes in handy DATE := $(if $(DATE),$(DATE),$(shell date +'%b, %d, %Y')) TEX_WARN_DONT_EDIT = "\ %+---------------------------------------------------+\n\ %| DO NOT EDIT THIS FILE! |\n\ %| It was automatically created during the build |\n\ %| process! |\n\ %+---------------------------------------------------+\n" HTML_WARN_DONT_EDIT = "\ " WD = `pwd` IMAGES = $(patsubst %,$(IMAGEDIR)/%,$(FRONTLOGO_EPS) $(FRONTLOGO_WEB) \ $(ICON_UP) $(ICON_PREV) $(ICON_NEXT) $(ICON_INDEX) $(ICON_CONTENTS)) \ #LOCAL_IMPORTED_TEMPLATES = $(notdir $(IMPORTED_TEMPLATES)) #FMT_OFFLINE = tex dvi ps pdf txt FMT_OFFLINE = tex pdf # txt FMT = $(FMT_OFFLINE) html OUT = $(DISTDIR)/$(OUTPUT) FMT_OUT = $(patsubst %,$(OUT).%.zip,$(FMT)) FMT_OFFLINE_OUT = $(patsubst %,$(OUT).%.zip,$(FMT_OFFLINE)) ALL = $(FMT_OUT) html_install #PRE_HTML = $(patsubst %.tmpl,%,$(wildcard *.html.tmpl)) #LINETMPL=$(wildcard *.linetmpl) #TEXFROMGER=$(patsubst %.ger,%.tex,$(wildcard *.ger)) #TMPL=$(wildcard *.tmpl) #FILEFROMTMPL = $(patsubst %.tmpl,%,$(TMPL)) #GERFROMLINETMPL=$(patsubst %.linetmpl,%,$(wildcard *.linetmpl)) #PRE_TEX = $(patsubst %.ger,%.tex,\ # $(patsubst %.tmpl,%,$(wildcard *.tex.tmpl *.ger.tmpl) $(LOCAL_IMPORTED_TEMPLATES)) \ # $(GERFROMLINETMPL)) $(TEXFROMGER) NEWDIRS = $(DISTDIR) $(HTMLDIR) $(DVIDIR) ifeq ($(DOCUMENT_CLASS),) DOCUMENT_CLASS = article endif define mangle_tmpl @echo $< \-\> $@ @if [ $(suffix $@) = tex ]; then echo -e $(TEX_WARN_DONT_EDIT) > $@; fi @if [ $(suffix $@) = html ]; then echo -e $(HTML_WARN_DONT_EDIT) > $@; fi cat $< | sed -e "\ s%__DATE__%$(DATE)%g; \ s%__AUTHORS__%$(AUTHORS)%g; \ s%__TITLE__%$(TITLE)%g; \ s%__VERSION__%$(VERSION)%g; \ s%__SUBTITLE__%$(SUBTITLE)%g; \ s%__CONFIDENTIAL_REMARK__%$(CONFIDENTIAL_REMARK)%g; \ s%__HEADER__%$(HEADER)%g; \ s%__FRONTPAGE__%$(FRONTPAGE)%g; \ s%__FRONTLOGO_EPS__%$(IMAGEDIR)/$(FRONTLOGO_EPS)%g; \ s%__FRONTLOGO_WEB__%$(FRONTLOGO_WEB)%g; \ s%__ICON_UP__%$(ICON_UP)%g; \ s%__ICON_INDEX__%$(ICON_INDEX)%g; \ s%__ICON_CONTENTS__%$(ICON_CONTENTS)%g; \ s%__ICON_PREV__%$(ICON_PREV)%g; \ s%__ICON_NEXT__%$(ICON_NEXT)%g; \ s%__DOCUMENT_CLASS__%$(DOCUMENT_CLASS)%g; \ s%ä%\"a%g; \ s%Ä%\"A%g; \ s%ö%\"o%g; \ s%Ö%\"O%g; \ s%ü%\"u%g; \ s%Ü%\"U%g; \ s%ß%\"s%g; \ s%\xc3\xa4%\"a%g; \ s%\xc3\x84%\"A%g; \ s%\xc3\xb6%\"o%g; \ s%\xc3\x96%\"O%g; \ s%\xc3\xbc%\"u%g; \ s%\xc3\x9c%\"U%g; \ s%\xc3\x9f%\"s%g; \ " | awk ' \ BEGIN { FS=":" } { \ if ($$0 ~ /SUBST_LINE_NUM/) { \ start=$$1; patt=$$2; file=$$3; \ regex=$$4; offset=$$5; rest=$$6; \ grepcmd="grep -n \042" regex "\042 " file; \ grepcmd | getline; \ linenum=$$1; \ print start linenum rest \ } else { print $$0 } } \ ' >> $@ endef first_target: dirs $(ALL) tex: dirs $(OUT).tex.zip dvi: dirs $(OUT).dvi.zip ps: dirs $(OUT).ps.zip txt: dirs $(OUT).txt.zip html: dirs $(OUT).html.zip pdf: dirs $(OUT).pdf.zip odt: dirs $(OUT).odt # generate from remote rules %.png: $(TEX_TMPL_DIR)/%.fig fig2dev -L png $< $@ %.html: $(TEX_TMPL_DIR)/%.html cp $< $@ %.tex: $(TEX_TMPL_DIR)/%.tex cp $< $@ %.tex: %.tex.tmpl $(mangle_tmpl) %.tex: $(TEX_TMPL_DIR)/%.tex.tmpl $(mangle_tmpl) %.html: $(TEX_TMPL_DIR)/%.html.tmpl $(mangle_tmpl) # generate from local rules %.png: %.fig fig2dev -L png $< $@ %.tex: %.ger $(mangle_tmpl) %: %.tmpl $(mangle_tmpl) cfgtest.done: test -n "$(OUTPUT)" # OUTPUT test -n "$(DISTDIR)" # DISTDIR test -n "$(HTMLDIR)" # HTMLDIR test -n "$(TARGET_HOST)" # TARGET_HOST test -n "$(TARGET_DIR)" # TARGET_DIR test -n "$(TARGET_DIR_MODE)" # TARGET_DIR_MODE test -n "$(TARGET_FILE_MODE)" # TARGET_FILE_MODE test -n "$(TARGET_USER)" # TARGET_USER test -n "$(MAIN)" # MAIN test -n "$(FRONTPAGE)" # FRONTPAGE test -n "$(IMAGES)" # IMAGES test -n "$(AUTHORS)" # AUTHORS test -n "$(TITLE)" # TITLE test -n "$(SUBTITLE)" # SUBTITLE test -d $(IMAGEDIR) # IMAGEDIR @for IMG in $(IMAGES); do if [ ! -f $$IMG ]; then echo "$$IMG is missing"; exit 1; fi; done test -n "$(VERSION)" # VERSION touch $@ test: @echo TEX_TMPL_DIR = $(TEX_TMPL_DIR) @echo GENERATED = $(GENERATED) @echo FILES_FROM_TMPL = $(FILES_FROM_TMPL) @echo EPS_FROM_FIG = $(EPS_FROM_FIG) cfgtest: cfgtest.done #%.clean: # rm -rf $(OUT).%.zip dirs.done: mkdir -p $(NEWDIRS) touch dirs.done dirs: dirs.done arch: test $(shell uname -s) = Linux xdvi: $(LATEX_INPUT) @echo "-- running latex just once ..." $(latex) $(MAIN).tex xdvi $(MAIN).dvi xpdf: $(LATEX_INPUT) @echo "-- running latex just once ..." pdflatex $(MAIN).tex kpdf $(MAIN).pdf $(OUT).tex.zip: cfgtest $(LATEX_INPUT) @echo "-- creating zipfile with tex source files" zip $@ $(LATEX_INPUT) 2>/dev/null #$(OUTPUT).dvi: $(LATEX_INPUT) # @echo "-- creating dvi file" # $(latex) $(MAIN).tex; $(latex) $(MAIN).tex; $(latex) $(MAIN).tex; # cp $(MAIN).dvi $@ #$(OUT).dvi.zip: $(OUTPUT).dvi # zip $@ $^ #$(OUTPUT).txt: $(OUTPUT).dvi # @echo "-- creating plain ascii file" # dvi2tty $< -w100 -o $@ #$(OUT).txt.zip: $(OUTPUT).txt # zip $@ $< $(HTMLDIR): $(LATEX_INPUT) $(HTML_INPUT) tex pdf # txt ps dvi test $(MAIN) != index rm -rf $@ mkdir -p $@ latex2html -split 4 -show_section_numbers -dir $(HTMLDIR) $(MAIN).tex for OLD in $(HTMLDIR)/*.html; do \ sed "s/file:\/usr\/lib\/latex2html\/icons\///g; s/$(MAIN).html/index.html/g;" $$OLD>$$OLD.new; \ mv $$OLD.new $$OLD; \ done rm $(HTMLDIR)/$(MAIN).html cp -r $(DISTDIR) $@/download cat index_head.html > $(HTMLDIR)/index.html for FILE in $(wildcard $(DISTDIR)/*); do SIZE=`ls -lk $$FILE | awk '{print $$5}'`;\ echo \\`basename $$FILE`\ \(size = $$SIZE Bytes\)\\ >> $(HTMLDIR)/index.html ;\ echo >> $(HTMLDIR)/index.html ;\ done cat index_tail.html >> $(HTMLDIR)/index.html cp $(IMAGES) $(HTMLDIR) touch $@ $(OUT).html.zip: $(HTMLDIR) @echo "-- creating zipfile with html source files" zip -r $@ $(HTMLDIR) #$(OUTPUT).ps: $(OUTPUT).dvi # @echo "-- creating postscript file" # dvips -f $< > $(OUTPUT).ps #$(OUT).ps.zip: $(OUTPUT).ps # zip $@ $< $(OUTPUT).pdf: $(GENERATED) @echo "-- creating pdf file" # for i in 1 2 3 ; do echo "============================ pass $$i"; pdflatex $(MAIN).tex 2>&1 | grep -ve "Underfull\|Overfull"| grep .; done for i in 1 2 3 ; do echo "============================ pass $$i"; pdflatex $(MAIN).tex; done mv $(MAIN).pdf $(OUTPUT).pdf $(OUT).pdf.zip: $(OUTPUT).pdf zip $@ $< $(OUTPUT).odt: $(GENERATED) @echo "-- creating odt file" htlatex $(MAIN).tex "xhtml,ooffice" "ooffice/! -cmozhtf" "-coo" "-cvalidate" mv $(MAIN).odt $(OUTPUT).odt html_install: $(HTMLDIR) @echo "-- installing html to $(TARGET_HOST):$(TARGET_DIR) as user $(TARGET_USER)" $(CVS_RSH) -l $(TARGET_USER) $(TARGET_HOST) -C "\ mkdir -p $(TARGET_DIR); chmod $(TARGET_DIR_MODE) $(TARGET_DIR)" /usr/bin/rsync -az --delete -v --links -e $(CVS_RSH) $(HTMLDIR)/* $(TARGET_USER)@$(TARGET_HOST):$(TARGET_DIR) $(CVS_RSH) -l $(TARGET_USER) $(TARGET_HOST) -C "\ cd $(TARGET_DIR); find . -type d | xargs chmod $(TARGET_DIR_MODE); find . -type f | xargs chmod $(TARGET_FILE_MODE)" clean: @echo "-- cleaning up ..." rm -rf *.aux *.toc *.dvi *.pdf *.ps *~ *.log *.done *.rep \ *.4ct *.4tc *.4of *.4oo *.4os *.4og */*.4og *.css *.html *.idv *.lg *.xref *.odt \ *.lol *.bak *.idx *.ilg *.ind *.out *.brf .\#* \#* \ $(NEWDIRS) $(OUTPUT).txt \ $(GENERATED) \ $(CLEAN)