Praefix her mit '|'.
[wortliste.git] / Makefile
blobf9f944513821493e99377167896d95c27929e10a
1 # This Makefile creates German hyphenation patterns in subdirectories
2 # $(TRAD) and $(REFO) for traditional and new ortography, respectively.
3 # Hyphenation patterns for traditional Swiss German are generated in
4 # directory $(SWISS).
6 # The input data is in $(SRCDIR); the possible targets are `pattern-trad',
7 # `pattern-refo', and `pattern-swiss'. If no target (or target `all') is
8 # given, all patterns for all three targets are built.
10 # SRCDIR (and the other variables) can be easily modified as parameters
11 # while calling `make', e.g.
13 # make pattern-trad SRCDIR=~/git/wortliste
15 # If you add the (phony) target `major', patterns which only use major
16 # hyphenation points (`Haupttrennstellen') are created. Example:
18 # make major pattern-refo
20 # The used directories names are the same as above but with `-major'
21 # appended to the names.
25 # Dieses Makefile erzeugt deutsche Trennmuster in den
26 # Unterverzeichnissen $(TRAD) und $(REFO) für die traditionelle
27 # bzw. reformierte Rechtschreibung. Trennmuster für tradionelles
28 # deutschschweizerisches Deutsch werden Verzeichnis $(SWISS) erzeugt.
30 # Die Eingabedaten werden im Verzeichnis $(SRCDIR) erwartet; die möglichen
31 # Make-Ziele sind `pattern-trad', `pattern-refo' und `pattern-swiss'. Wenn
32 # kein Ziel angegeben ist (oder man das Ziel `all' verwendet), werden alle
33 # drei Trennmuster erzeugt.
35 # SRCDIR (und die anderen Variablen) kann man leicht beim Aufruf von
36 # `make' als Parameter modifizieren, z.B.
38 # make pattern-trad SRCDIR=~/git/wortliste
40 # Wird zusätzlich das zusätzliche (künstliche) Ziel `major' angegeben,
41 # werden Haupttrennstellmuster erzeugt.
43 # Beispiel:
45 # make major pattern-refo
47 # Die verwendeten Verzeichnisnamen sind die gleichen wie oben,
48 # allerdings mit einem angehängten `-major'.
51 SRCDIR = .
52 DATADIR = $(SRCDIR)/daten
53 SCRIPTDIR = $(SRCDIR)/skripte
54 WORDLIST = wortliste
56 ifneq ($(findstring major,$(MAKECMDGOALS)),)
57 MAJOR = -major
58 SEDMAJOR = $(SED) -e '/[=-]/!n' \
59 -e 's/-//g' \
60 -e 's/=/-/g' \
61 -e '/-/!d'
62 PERLMAJOR = -g
64 ifeq ($(words $(MAKECMDGOALS)),1)
65 major: all
66 else
67 # This is to suppress the `nothing to be done' warning.
68 major:
70 endif
71 else
72 MAJOR =
73 SEDMAJOR = cat
74 PERLMAJOR =
75 endif
77 TRAD = dehypht-x$(MAJOR)
78 REFO = dehyphn-x$(MAJOR)
79 SWISS = dehyphts-x$(MAJOR)
81 LC_ENVVARS = LC_COLLATE=de_DE.ISO8859-1 \
82 LC_CTYPE=de_DE.ISO8859-1
84 CAT = cat
85 CHDIR = cd
86 COPY = cp
87 DATE = $(shell date '+%Y-%m-%d')
88 ECHO = echo
89 GIT = git
90 ICONV = iconv -f latin1 -t utf-8
91 MKDIR = mkdir -p
92 PERL = perl
93 PWD = pwd
94 SED = sed
95 SH = sh
96 SORT = $(LC_ENVVARS) sort -d \
97 | $(LC_ENVVARS) uniq -i
99 GIT_VERSION := `$(CHDIR) $(SRCDIR); \
100 $(GIT) log --pretty=oneline -1 $(WORDLIST) \
101 | $(SED) 's/ .*//'`
102 TRADFILES = $(TRAD)/$(TRAD)-$(DATE).pat $(TRAD)/$(TRAD)-$(DATE).tex
103 REFOFILES = $(REFO)/$(REFO)-$(DATE).pat $(REFO)/$(REFO)-$(DATE).tex
104 SWISSFILES = $(SWISS)/$(SWISS)-$(DATE).pat $(SWISS)/$(SWISS)-$(DATE).tex
107 override SRCDIR := $(shell cd $(SRCDIR); $(PWD))
110 all: pattern-trad pattern-refo pattern-swiss
112 .PHONY: pattern-trad pattern-refo pattern-swiss major
113 pattern-trad: $(TRADFILES)
114 pattern-refo: $(REFOFILES)
115 pattern-swiss: $(SWISSFILES)
117 # auxiliary targets
119 .PHONY: words-trad words-refo
120 words-trad: $(TRAD)/words.hyphenated.trad
121 words-refo: $(REFO)/words.hyphenated.refo
124 .PHONY: pre-trad pre-refo pre-swiss
125 pre-trad:
126 $(MKDIR) $(TRAD)
127 pre-refo:
128 $(MKDIR) $(REFO)
129 pre-swiss:
130 $(MKDIR) $(SWISS)
132 $(TRADFILES) $(TRAD)/words.hyphenated.trad: pre-trad
133 $(REFOFILES) $(REFO)/words.hyphenated.refo: pre-refo
134 $(SWISSFILES) $(SWISS)/words.hyphenated.swiss: pre-swiss
137 # GNU make supports creation of multiple targets by a single
138 # invocation of a recipe only for pattern rules, thus we have
139 # to use a `sentinel file' (using `echo' for the time stamp).
142 $(TRAD)/pattern.8 $(TRAD)/pattern.rules: $(TRAD)/make-full-pattern-trad
144 $(TRAD)/make-full-pattern-trad: $(TRAD)/words.hyphenated.trad
145 $(CHDIR) $(TRAD); \
146 $(SH) $(SCRIPTDIR)/make-full-pattern.sh $(<F) $(DATADIR)/german.tr
147 $(ECHO) done > $@
149 $(TRAD)/$(TRAD)-$(DATE).pat: $(TRAD)/pattern.8 $(TRAD)/pattern.rules
150 $(CAT) $(DATADIR)/$(TRAD).1 \
151 | $(SED) -e "s/@DATE@/$(DATE)/" \
152 -e "s/@GIT_VERSION@/$(GIT_VERSION)/" > $@; \
153 $(CAT) $(TRAD)/pattern.rules >> $@; \
154 $(CAT) $(DATADIR)/$(TRAD).2 >> $@; \
155 $(CAT) $(TRAD)/pattern.8 \
156 | $(ICONV) >> $@; \
157 $(CAT) $(DATADIR)/$(TRAD).3 >> $@
160 $(REFO)/pattern.8 $(REFO)/pattern.rules: $(REFO)/make-full-pattern-refo
162 $(REFO)/make-full-pattern-refo: $(REFO)/words.hyphenated.refo
163 $(CHDIR) $(REFO); \
164 $(SH) $(SCRIPTDIR)/make-full-pattern.sh $(<F) $(DATADIR)/german.tr
165 $(ECHO) done > $@
167 $(REFO)/$(REFO)-$(DATE).pat: $(REFO)/pattern.8 $(REFO)/pattern.rules
168 $(CAT) $(DATADIR)/$(REFO).1 \
169 | $(SED) -e "s/@DATE@/$(DATE)/" \
170 -e "s/@GIT_VERSION@/$(GIT_VERSION)/" > $@; \
171 $(CAT) $(REFO)/pattern.rules >> $@; \
172 $(CAT) $(DATADIR)/$(REFO).2 >> $@; \
173 $(CAT) $(REFO)/pattern.8 \
174 | $(ICONV) >> $@; \
175 $(CAT) $(DATADIR)/$(REFO).3 >> $@
178 $(SWISS)/pattern.8 $(SWISS)/pattern.rules: $(SWISS)/make-full-pattern-swiss
180 $(SWISS)/make-full-pattern-swiss: $(SWISS)/words.hyphenated.swiss
181 $(CHDIR) $(SWISS); \
182 $(SH) $(SCRIPTDIR)/make-full-pattern.sh $(<F) $(DATADIR)/german.tr
183 $(ECHO) done > $@
185 $(SWISS)/$(SWISS)-$(DATE).pat: $(SWISS)/pattern.8 $(SWISS)/pattern.rules
186 $(CAT) $(DATADIR)/$(SWISS).1 \
187 | $(SED) -e "s/@DATE@/$(DATE)/" \
188 -e "s/@GIT_VERSION@/$(GIT_VERSION)/" > $@; \
189 $(CAT) $(SWISS)/pattern.rules >> $@; \
190 $(CAT) $(DATADIR)/$(SWISS).2 >> $@; \
191 $(CAT) $(SWISS)/pattern.8 \
192 | $(ICONV) >> $@; \
193 $(CAT) $(DATADIR)/$(SWISS).3 >> $@
196 $(TRAD)/words.hyphenated.trad: $(SRCDIR)/$(WORDLIST)
197 $(CAT) $< \
198 | $(PERL) $(SCRIPTDIR)/extract-tex-trad.pl $(PERLMAJOR) \
199 | $(SEDMAJOR) \
200 | $(SORT) > $@
202 $(REFO)/words.hyphenated.refo: $(SRCDIR)/$(WORDLIST)
203 $(CAT) $< \
204 | $(PERL) $(SCRIPTDIR)/extract-tex-refo.pl $(PERLMAJOR) \
205 | $(SEDMAJOR) \
206 | $(SORT) > $@
208 $(SWISS)/words.hyphenated.swiss: $(SRCDIR)/$(WORDLIST)
209 $(CAT) $< \
210 | $(PERL) $(SCRIPTDIR)/extract-tex-swisstrad.pl $(PERLMAJOR) \
211 | $(SEDMAJOR) \
212 | $(SORT) > $@
215 $(TRAD)/$(TRAD)-$(DATE).tex: $(DATADIR)/$(TRAD).tex.in
216 $(CAT) $< \
217 | $(SED) -e "s/@DATE@/$(DATE)/" > $@
219 $(REFO)/$(REFO)-$(DATE).tex: $(DATADIR)/$(REFO).tex.in
220 $(CAT) $< \
221 | $(SED) -e "s/@DATE@/$(DATE)/" > $@
223 $(SWISS)/$(SWISS)-$(DATE).tex: $(DATADIR)/$(SWISS).tex.in
224 $(CAT) $< \
225 | $(SED) -e "s/@DATE@/$(DATE)/" > $@
227 # EOF