mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 12:03:31 +01:00
293 lines
8.9 KiB
Makefile
293 lines
8.9 KiB
Makefile
# 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 = "\
|
||
<!--\n\
|
||
+---------------------------------------------------+\n\
|
||
| DO NOT EDIT THIS FILE! |\n\
|
||
| It was automatically created during the build |\n\
|
||
| process! |\n\
|
||
+---------------------------------------------------+\n\
|
||
-->"
|
||
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%<EFBFBD>%\"a%g; \
|
||
s%<25>%\"A%g; \
|
||
s%<25>%\"o%g; \
|
||
s%<25>%\"O%g; \
|
||
s%<25>%\"u%g; \
|
||
s%<25>%\"U%g; \
|
||
s%<25>%\"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
|
||
|
||
# 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 \<CENTER\>\<A HREF="download/`basename $$FILE`"\>`basename $$FILE`\
|
||
\(size = $$SIZE Bytes\)\</A\>\</CENTER\> >> $(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 $@ $<
|
||
|
||
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 \
|
||
*.lol *.bak *.idx *.ilg *.ind *.out *.brf .\#* \#* \
|
||
$(NEWDIRS) $(OUTPUT).txt \
|
||
$(GENERATED) \
|
||
$(CLEAN)
|