jw-pkg/make/tex.mk

273 lines
8.1 KiB
Makefile
Raw Normal View History

2001-07-09 12:41:53 +00:00
# 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 = "\
<!--\n\
+---------------------------------------------------+\n\
| DO NOT EDIT THIS FILE! |\n\
| It was automatically created during the build |\n\
| process! |\n\
+---------------------------------------------------+\n\
-->"
2001-07-09 12:41:53 +00:00
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/<2F>/\"a/g; \
s/<2F>/\"A/g; \
s/<2F>/\"o/g; \
s/<2F>/\"O/g; \
s/<2F>/\"u/g; \
s/<2F>/\"<EFBFBD>/g; \
s/<2F>/\"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
first_target: dirs $(ALL)
2001-07-09 12:41:53 +00:00
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
2001-07-09 12:41:53 +00:00
# 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)
2001-07-09 12:41:53 +00:00
cfgtest.done:
test -n "$(OUTPUT)" # OUTPUT
2001-07-09 12:41:53 +00:00
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
2001-07-09 12:41:53 +00:00
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)
2001-07-09 12:41:53 +00:00
cfgtest: cfgtest.done
#%.clean:
# rm -rf $(OUT).%.zip
2001-07-09 12:41:53 +00:00
dirs.done:
mkdir -p $(NEWDIRS)
touch dirs.done
dirs: dirs.done
arch:
2001-07-09 12:41:53 +00:00
test $(shell uname -s) = Linux
xdvi: $(LATEX_INPUT)
2001-07-09 12:41:53 +00:00
@echo "-- running latex just once ..."
latex $(MAIN).tex
xdvi $(MAIN).dvi
$(OUT).tex.zip: cfgtest $(LATEX_INPUT)
2001-07-09 12:41:53 +00:00
@echo "-- creating zipfile with tex source files"
zip $@ $(LATEX_INPUT) 2>/dev/null
2001-07-09 12:41:53 +00:00
$(OUTPUT).dvi: $(LATEX_INPUT)
2001-07-09 12:41:53 +00:00
@echo "-- creating dvi file"
latex $(MAIN).tex; latex $(MAIN).tex; latex $(MAIN).tex;
cp $(MAIN).dvi $@
$(OUT).dvi.zip: $(OUTPUT).dvi
2001-07-09 12:41:53 +00:00
zip $@ $^
$(OUTPUT).txt: $(OUTPUT).dvi
2001-07-09 12:41:53 +00:00
@echo "-- creating plain ascii file"
dvi2tty $< -w100 -o $@
$(OUT).txt.zip: $(OUTPUT).txt
2001-07-09 12:41:53 +00:00
zip $@ $<
$(HTMLDIR): $(LATEX_INPUT) $(HTML_INPUT) tex dvi ps txt pdf
2001-07-09 12:41:53 +00:00
test $(MAIN) != index
rm -rf $@
mkdir -p $@
latex2html -split 4 -show_section_numbers -dir $(HTMLDIR) $(MAIN).tex
2001-07-11 15:39:35 +00:00
for OLD in $(HTMLDIR)/*.html; do \
sed "s/file:\/usr\/lib\/latex2html\/icons\///g; s/$(MAIN).html/index.html/g;" $$OLD>$$OLD.new; \
2001-07-11 15:39:35 +00:00
mv $$OLD.new $$OLD; \
done
2001-07-09 12:41:53 +00:00
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 \<CENTER\>\<A HREF="download/`basename $$FILE`"\>`basename $$FILE`\
\(size = $$SIZE Bytes\)\</A\>\</CENTER\> >> $(HTMLDIR)/index.html ;\
2001-07-09 12:41:53 +00:00
echo >> $(HTMLDIR)/index.html ;\
done
cat index_tail.html >> $(HTMLDIR)/index.html
cp $(IMAGES) $(HTMLDIR)
2001-07-09 12:41:53 +00:00
touch $@
$(OUT).html.zip: $(HTMLDIR)
2001-07-09 12:41:53 +00:00
@echo "-- creating zipfile with html source files"
zip -r $@ $(HTMLDIR)
$(OUTPUT).ps: $(OUTPUT).dvi
2001-07-09 12:41:53 +00:00
@echo "-- creating postscript file"
dvips -f $< > $(OUTPUT).ps
2001-07-09 12:41:53 +00:00
$(OUT).ps.zip: $(OUTPUT).ps
2001-07-09 12:41:53 +00:00
zip $@ $<
$(OUTPUT).pdf: $(OUTPUT).ps
2001-07-09 12:41:53 +00:00
@echo "-- creating pdf file"
ps2pdf $<
$(OUT).pdf.zip: $(OUTPUT).pdf
2001-07-09 12:41:53 +00:00
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)
2001-07-09 12:41:53 +00:00
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)
2001-07-09 12:41:53 +00:00