# Makefile zum Erzeugen von regulaeren html-Dateien und Sitemap-html-Dateien
# Mit !! versehene Definitionen bitte anpassen!
# Encoding der Dateien
encoding = UTF-8
# dir = Directory unterhalb von base (siehe unten), in das der Stamm der
# Dateihierarchie geschrieben werden soll. Normalerweise leer. Andere Werte
# nur sinnvoll zum Testen einer Hierarchie bevor diese an die richtige Stelle
# geschrieben wird.
# dir = franz/test4/
dir =
# !! subdir = Directory unterhalb von base, in das die generierten Dateien
# geschrieben werden sollen. Beginnt immer mit $(dir).
# subdir = $(dir)franz/
subdir = $(dir)
# !! prefix = Prefix, der vor generierte Dateinamen aus "sitemap" gestellt wird
# (vor allem im linken Menue). Sollte leer sein, wenn "sitemap" im selben
# Directory wie "Makefile" und gen-Dateien steht. Steht "sitemap" weiter
# aussen in der Hierarchie, sollte hier ein relativer Pfad stehen (mit
# absoluten URIs nicht getestet).
# prefix = ../
prefix =
# !! base = Basis des Dateisystems mit den Web-Seiten erweitert um $(subdir)
# und moeglicherweise weiteren Pfad. $(base)$(prefix) sollte jenen Teil von
# $(base) ergeben, der mit $(subdir) endet.
# base = /usr/ftp/pub/$(subdir)directory/
base = /usr/ftp/pub/$(subdir)
# home = absolute URI des Directories mit den generierten Seiten.
# Sollte nicht geaendert werden.
home = http://www.complang.tuwien.ac.at/$(subdir)
# site = absolute URI der Basis der Webseiten. Hier werden allgemeine
# Resourcen wie css-Dateien gesucht. Sollte nicht geaendert werden.
site = http://www.complang.tuwien.ac.at/$(dir)
# !! gresp = deutsche Beschreibung des Verantwortlichen fuer das gesamte
# Directory. Wird in deutschsprachiger Sitemap verwendet (Web-Seiten werden
# von ... betreut).
# gresp = Franz Puntigam
gresp = der Complang-Gruppe
# !! eresp = wie gresp, aber fuer englischsprachige Sitemap
eresp = the Complang Group
# !! gsign = Verantwortlicher fuer deutschsprachige Seiten. Verwendet in
#
... letzte Aenderung: () ...
gsign = Puntigam
# !! esign = wie gsign, aber fuer englischsprachige Seiten
esign = Puntigam
# date = Datum der letzten Aenderung. Format sollte nicht geaendert werden,
# damit bis auf Datum unveraenderte Seiten richtig als solche erkannt werden.
date = `date +%Y-%m-%d`
# map = Pfad und Name der Datei mit Sitemap-Informationen wie im linken Menue.
map = $(prefix)sitemap
# nomap = Pfad und Name der Datei mit Sitemap-Informationen, die nicht im
# linken Menue aufscheinen sollen. Kann leer bleiben, wenn nicht benoetigt.
nomap = $(prefix)nomaps
# gmap = Name der generierten deutschsprachigen Sitemap-Datei. Sollte nicht
# geaendert werden, damit Verweise auf andere Sitemaps funktionieren.
gmap = $(prefix)sitemap
# emap = wie gmap, aber fuer generierte englischsprachige Sitemap-Datei.
emap = $(prefix)sitemap-e
# !! gstate = Statement (Text rechts oben auf jeder Seite), das zur
# deutschsprachigen Sitemap dazugefuegt wird. Kann leer bleiben.
gstate = Institut für Computersprachen
Programmiersprachen und Übersetzer
# !! estate = wie gstate, aber fuer englischsprachige Sitemap.
estate = Institute of Computer Languages
Compilers and Languages Group
# iflag = Flag fuer "install". Kann "-n" enthalten, wenn geaenderte Seiten
# nicht tatsaechlich an die richtige Stelle kopiert werden sondern nur
# entsprechende Informationen ausgegeben werden sollen. Aenderung im
# Makefile wenig sinnvoll. Verwendung: "make install iflag=-n". Auch
# sinnvoll: "make install iflag=-f" (forced installation).
iflag =
# !! subsys = Liste von Namen von Directories, die gen-Dateien fuer zu
# generierende Seiten und Makefiles enthalten. Make wird rekursiv in diesen
# Directories aufgerufen.
subsys = lehre
# subinst = Liste von Directories, in denen die in $(subsys) erzeugten Dateien
# installiert werden sollen. Sollte nicht geaendert werden.
subinst = $(subsys:%=$(base)%)
# gens = Liste der gen-Dateien aus denen html-Dateien erzeugt werden sollen.
# Braucht nicht geaendert werden.
gens = $(wildcard *.gen)
# locals = Liste der aus gen-Dateien erzeugten noch nicht installierten
# html-Dateien. Sollte nicht geaendert werden.
locals = $(gmap).html $(emap).html $(gens:%.gen=%.html)
# installed = Liste der zu installierenden html-Dateien.
#Sollte nicht geaendert werden.
installed = $(locals:%=$(base)%)
# genindex = awk-Script zum Erzeugen einer html-Sitemap-Datei aus "sitemap".
genindex = /usr/ftp/pub/franz/genhtml/genindex.awk
# genpage = awk-Script zum Erzeugen einer html-Datei aus "sitemap" und einer
# gen-Datei.
genpage = /usr/ftp/pub/franz/genhtml/genpage.awk
# stdflags = Flags fuer den Aufruf von awk mit $(genindex) bzw. $(genpage)
# (vor der ersten zu verarbeitenden Datei)
stdflags = -v date=$(date) -v "gsign=$(gsign)" -v "esign=$(esign)" -v "prefix=$(prefix)"
# stdfiles = Dateien (und "hintere" Flags) zur Bearbeitung mittels $(genindex)
# bzw. $(genpage) durch awk
stdfiles = "home=$(home)" "site=$(site)" $(map)
# awk = Aufruf von awk mit $(stdflags)
awk = gawk $(stdflags)
# inst = Aufruf eines Scripts zum Installieren einer erzeugten html-Datei
inst = /usr/ftp/pub/franz/genhtml/install $(iflag) $(base)
# "make [all]" generiert alle html-Dateien, aber ohne automatische Installation
.PHONY: all
all: $(locals) $(subsys)
# "make install" generiert und installiert alle html-Dateien
.PHONY: install
install: $(installed) $(subinst)
# "make clean" loescht lokal generierte html-Dateien, aber keine installierten
.PHONY: clean
clean:
rm $(locals)
for i in $(subsys); do $(MAKE) -C $$i clean; done
# Installation einer html-Datei
$(base)%.html: %.html
@$(inst) $<
# Erzeugung deutschsprachiger Sitemap-html-Datei
$(gmap).html: $(map) $(nomap) $(genindex)
@echo generating: $@
@$(awk) -v "encoding=$(encoding)" -v "responsible=$(gresp)" -v "lang=de" -v "sitemap=$(gmap)" -v "othersitemap=$(emap)" -f $(genindex) "statement=$(gstate)" $(stdfiles) $(nomap) >$@
# Erzeugung englischsprachiger Sitemap-html-Datei
$(emap).html: $(map) $(nomap) $(genindex)
@echo generating: $@
@$(awk) -v "encoding=$(encoding)" -v "responsible=$(eresp)" -v "lang=en" -v "sitemap=$(emap)" -v "othersitemap=$(gmap)" -f $(genindex) "statement=$(estate)" $(stdfiles) $(nomap) >$@
# Erzeugung einer html-Datei aus gen-Datei
%.html: %.gen $(map) $(genpage)
@echo generating: $@
@$(awk) -v "encoding=$(encoding)" -v "me=$*" -f $(genpage) $(stdfiles) $< >$@
genrss = $(genhtmlbase)/genrss.awk
# Erzeugung einer rss-Datei aus gen-Datei
%.xml: %.gen $(map) $(genrss)
@echo generating: $@
@$(awk) -v "encoding=$(encoding)" -v "me=$*" -f $(genrss) $(stdfiles) $< >$@
# rekursiver Aufruf von "make install" fuer Untersysteme
.PHONY: $(subinst)
$(subinst):
$(MAKE) -C $(patsubst $(base)%,%,$@) "iflag=$(iflag)" install
# rekursiver Aufruf von "make" fuer Untersysteme
.PHONY: $(subsys)
$(subsys):
$(MAKE) -C $@