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
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.
45 # make major pattern-refo
47 # Die verwendeten Verzeichnisnamen sind die gleichen wie oben,
48 # allerdings mit einem angehängten `-major'.
52 DATADIR
= $(SRCDIR
)/daten
53 SCRIPTDIR
= $(SRCDIR
)/skripte
56 ifneq ($(findstring major
,$(MAKECMDGOALS
)),)
58 SEDMAJOR
= $(SED
) -e
'/[=-]/!n' \
64 ifeq ($(words $(MAKECMDGOALS
)),1)
67 # This is to suppress the `nothing to be done' warning.
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
87 DATE
= $(shell date
'+%Y-%m-%d')
90 ICONV
= iconv
-f latin1
-t utf-8
96 SORT
= $(LC_ENVVARS
) sort -d \
97 |
$(LC_ENVVARS
) uniq
-i
99 GIT_VERSION
:= `$(CHDIR) $(SRCDIR); \
100 $(GIT) log --pretty=oneline -1 $(WORDLIST) \
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
)
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
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
146 $(SH
) $(SCRIPTDIR
)/make-full-pattern.sh
$(<F
) $(DATADIR
)/german.tr
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 \
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
164 $(SH
) $(SCRIPTDIR
)/make-full-pattern.sh
$(<F
) $(DATADIR
)/german.tr
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 \
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
182 $(SH
) $(SCRIPTDIR
)/make-full-pattern.sh
$(<F
) $(DATADIR
)/german.tr
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 \
193 $(CAT
) $(DATADIR
)/$(SWISS
).3 >> $@
196 $(TRAD
)/words.hyphenated.trad
: $(SRCDIR
)/$(WORDLIST
)
198 |
$(PERL
) $(SCRIPTDIR
)/extract-tex-trad.pl
$(PERLMAJOR
) \
202 $(REFO
)/words.hyphenated.refo
: $(SRCDIR
)/$(WORDLIST
)
204 |
$(PERL
) $(SCRIPTDIR
)/extract-tex-refo.pl
$(PERLMAJOR
) \
208 $(SWISS
)/words.hyphenated.swiss
: $(SRCDIR
)/$(WORDLIST
)
210 |
$(PERL
) $(SCRIPTDIR
)/extract-tex-swisstrad.pl
$(PERLMAJOR
) \
215 $(TRAD
)/$(TRAD
)-$(DATE
).
tex: $(DATADIR
)/$(TRAD
).
tex.in
217 |
$(SED
) -e
"s/@DATE@/$(DATE)/" > $@
219 $(REFO
)/$(REFO
)-$(DATE
).
tex: $(DATADIR
)/$(REFO
).
tex.in
221 |
$(SED
) -e
"s/@DATE@/$(DATE)/" > $@
223 $(SWISS
)/$(SWISS
)-$(DATE
).
tex: $(DATADIR
)/$(SWISS
).
tex.in
225 |
$(SED
) -e
"s/@DATE@/$(DATE)/" > $@