# generic utility modules # (c) 2001 jannet it services # contact@jannet.de # $Id$ ifeq ($(TEX_TMPL_DIR), "") TEX_TMPL_DIR = thisisnotadirectory endif # 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,%.eps,$(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 %.eps,$(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 := $(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 = $(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) 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 TMPIMAGEDIR="`echo $(IMAGEDIR) | sed -e 's/\//\\\\\//g;'`" ;\ cat $< | sed -e "\ s/ä/\"a/g; \ s/Ä/\"A/g; \ s/ö/\"o/g; \ s/Ö/\"O/g; \ s/ü/\"u/g; \ s/Ü/\"Ü/g; \ s/ß/\"s/g; \ " | sed -e "\ s/__DATE__/$(DATE)/g; \ s/__AUTHORS__/$(AUTHORS)/g; \ s/__TITLE__/$(TITLE)/g; \ s/__VERSION__/$(VERSION)/g; \ s/__SUBTITLE__/$(SUBTITLE)/g; \ s/__HEADER__/$(HEADER)/g; \ s/__FRONTPAGE__/$(FRONTPAGE)/g; \ s/__FRONTLOGO_EPS__/$$TMPIMAGEDIR\/$(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; \ " | 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 all: 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 # generate from remote rules %.eps: $(TEX_TMPL_DIR)/%.fig fig2dev -L eps $< $@ %.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 %.eps: %.fig fig2dev -L eps $< $@ %.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 $(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 dvi ps txt pdf 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: $(OUTPUT).ps @echo "-- creating pdf file" ps2pdf $< $(OUT).pdf.zip: $(OUTPUT).pdf zip $@ $< html_install: $(HTMLDIR) @echo "-- installing html to $(TARGET_HOST):$(TARGET_DIR) as user $(TARGET_USER)" ssh -l $(TARGET_USER) $(TARGET_HOST) -C "\ mkdir -p $(TARGET_DIR); chmod $(TARGET_DIR_MODE) $(TARGET_DIR)" /usr/bin/rsync -az --delete -v --links -e /usr/bin/ssh $(HTMLDIR)/* $(TARGET_USER)@$(TARGET_HOST):$(TARGET_DIR) ssh -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 \ *.lol *.bak \ $(NEWDIRS) $(OUTPUT).txt \ $(GENERATED)