File: Makefile

package info (click to toggle)
br.ispell 3.0~beta4-19
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 1,124 kB
  • sloc: awk: 2,425; perl: 2,337; makefile: 420
file content (284 lines) | stat: -rw-r--r-- 7,079 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
#
# Makefile para o br.ispell
#

#
#   targets principais:
#   -------------------
#
#   make br.base     produz o dicionrio base
#
#   targets especficos para o ispell:
#   ----------------------------------
#
#   make br.ispell   produz o arquivo de razes para o ispell
#   make br.aff      produz o arquivo de afixos para o ispell
#   make br.hash     produz o arquivo de afixos para o ispell
#
#   targets para os outros verificadores:
#   -------------------------------------
#
#   make aspell      gera o arquivo pt_BR para o aspell
#   make myspell     gera arquivos pt_BR.dic e pt_BR.aff
#
#   Obs. no h target para instalar esses arquivos. Eles
#   tero que ser manualmente copiados para os diretrios onde o
#   aspell e o myspell esperam encontr-los.
#
#   outros:
#   -------
#
#   make formas      gera a lista de todas as palavras (formas)
#   make silabas     cria o silabrio
#   make paradigmas  mostra os paradigmas em ordem de uso
#   make testes      roda todos os testes
#   make install     instala o hash do ispell e o conjugue
#   make FAQ         constri o ndice do FAQ
#

#
# SEO DE CONFIGURAO
# ---------------------
#

#
# Escolha os paths que sero utilizados para instalar os arquivos
# e configurar as ferramentas.
#
#   HASHDIR - aqui ser colocado o br.hash
#   BINDIR  - aqui ser colocado o conjugue
#   VDIR    - aqui ser colocado o banco de verbos
#   MANDIR  - aqui ser colocada a man page do conjugue
#
prefix=/usr/local
BINDIR=$(prefix)/bin
HASHDIR=/usr/lib/ispell
VDIR=$(prefix)/lib
MANDIR=$(prefix)/man

#
# Escolha o interpretador awk a ser utilizado.
#
# OBS. Muito provavelmente o conjugador de verbos no operar
# corretamente se o interpretador no for o gawk. A partir da
# verso 3.0 do br.ispell, o conjugador assume que a funo
# toupper do interpretador  compatvel com ISO-8859-1.
#
AWK=/usr/bin/gawk

#
# Daqui para baixo procure no mexer mais em nada
#

all: br.aff br.base br.ispell br.hash aspell myspell

#
# Constri o dicionrio base
#
br.base: E-2.5 E-Raul E-Rodrigo E-Osmar E-outras conjugue verbos fl br.aff
	echo origens >br.base.tmp
	echo 1 br.ispell 2.5 >>br.base.tmp
	echo >>br.base.tmp
	echo paradigmas verbais >>br.base.tmp
	$(AWK) -f ./conjugue -v BANCO=verbos -v FORMATO=b >>br.base.tmp
	echo >>br.base.tmp
	./fl -E E-2.5 >>br.base.tmp
	mv -f br.base.tmp br.base
	./fl -E E-Raul >br.base.tmp
	mv -f br.base.tmp br.base
	./fl -E E-Osmar >br.base.tmp
	mv -f br.base.tmp br.base
	./fl -E E-Rodrigo >br.base.tmp
	mv -f br.base.tmp br.base
	./fl -E E-outras >br.base.tmp
	mv -f br.base.tmp br.base
	$(AWK) -f ./conjugue -v BANCO=verbos -v FORMATO=b -v CMD=T >>br.base

#
# Flexiona a lista do Rodrigo
#
E-Rodrigo: L-Rodrigo
	./fl -F <L-Rodrigo >E-Rodrigo

#
# Constri o arquivo de afixos
#
br.aff: br.aff.nv conjugue verbos
	$(AWK) -f ./conjugue -v BANCO=verbos -v FORMATO=aa -v CMD=T >v.rules
	cat br.aff.nv v.rules >br.aff
	rm -f v.rules

#
# Gera as conjugaes de todos os verbos, com o resultado
# fatorado pelas flags do br.aff.
#
v.ispell: conjugue verbos
	$(AWK) -f ./conjugue -v BANCO=verbos -v FORMATO=ci -v CMD=T >v.ispell

#
# Constri o vocabulrio total fatorado com as flags do br.aff.
#
# Acrescenta as formas que o ispell no consegue obter atravs
# da tabela de afixos.
#
# H um bug no fl que produz nenhum/A ao invs de nenhum/H. No
# sabemos ainda resolver ao nvel do fl.
#
br.ispell: v.ispell br.base fl br.aff
	./fl -l >br.ispell.tmp
	cat v.ispell >>br.ispell.tmp
	sort br.ispell.tmp | uniq >br.ispell
	./fl -I >>br.ispell.tmp
	echo "os" >>br.ispell.tmp
	echo "as" >>br.ispell.tmp
	sort br.ispell.tmp | sed 's/^nenhum\/A/nenhum\/H/' | uniq >br.ispell
	rm -f br.ispell.tmp

#
# Gera o vocabulario total, flexionado com as flags do br.aff.
#
br.hash: br.aff br.ispell
	buildhash br.ispell br.aff br.hash

#
# Instala o br.hash
#
install-hash: br.ispell
	install -d $(HASHDIR)
	install --mode=644 br.hash br.aff $(HASHDIR)

#
# Instala o conjugue, substituindo antes os paths default pelos
# que tiverem sido especificados acima.
#
install-conjugue:
	sed -e 's|/usr/bin/gawk|$(AWK)|g' -e \
	's|/usr/local/lib/verbos|$(VDIR)/verbos|g' conjugue >conjugue.tmp
	chmod 755 conjugue.tmp
	mv -f conjugue.tmp conjugue
	sed -e 's|/usr/local/lib|$(VDIR)|g' conjugue.1 >conjugue.1.tmp
	chmod 644 conjugue.1.tmp
	mv -f conjugue.1.tmp conjugue.1
	touch conjugue-stamp
	install -d $(BINDIR)
	install --mode=755 conjugue $(BINDIR)/conjugue
	install -d $(DESTDIR)$(VDIR)
	install --mode=644 verbos $(DESTDIR)$(VDIR)/verbos
	install -d $(MANDIR)/man1
	install --mode=644 conjugue.1 $(MANDIR)/man1/conjugue.1

#
# instala o conjugue e o hash do ispell
#
install: install-hash install-conjugue

#
# Gera o vocabulrio flexionado a partir do br.hash.
#
formas: br.hash
	cat br.ispell | ispell -e -d ./br.hash | tr " " "\n" |sort|\
            uniq >formas

#
# Constri o silabrio. Isso exige uma mquina com bastante
# memria. Numa mquina mais simples pode ser possvel a construo
# utilizando-se arquivos intermedirios ao invs de pipes.
#
silabas: fl formas
	./fl -s - <formas | tr '\-' "\n"| sort | uniq >silabas

#
# Constri o ndice do FAQ.
#
FAQ-stamp:
	rm -f FAQ
FAQ: FAQ-stamp
	grep '^@ ' FAQ.i | sed 's/^@ //' > FAQ
	echo >>FAQ
	echo NDICE >>FAQ
	egrep "^(SEO|[1-9]+\.[1-9]+)" FAQ.i | \
	$(AWK) '{ if (/^S/) { print ""; print } else print "  " $$0 }' >>FAQ
	grep -v '^@ ' FAQ.i >>FAQ

#
# SUPORTE A OUTROS VERIFICADORES
# ------------------------------
#
aspell: formas
	aspell --lang=pt_BR create master ./pt_BR <formas 

myspell: br.base br.aff br.ispell
	./afftoOOo >pt_BR.aff
	cat br.ispell|wc -l|tr -d ' ' >pt_BR.dic
	cat br.ispell >>pt_BR.dic

#
# GERAO DE ANLISES E/OU ESTATSTICAS
# -------------------------------------
#

#
# Obteno (aproximada) de estatsticas.
#
stats: br.ispell
	( n=`cat br.ispell | wc -l` ; \
	echo aproximadamente $$n lemas ou razes )
	./conjugue -v BANCO=verbos </dev/null | \
	grep lidos | \
	sed 's/lidos //' | \
	sed 's/paradigmas/paradigmas verbais/'

#
# Lista todos os paradigmas em uso e o nmero de vezes que cada
# um  utilizado.
#
# (no estou muito certo se esse target ainda funciona)
#
paradigmas: conjugue
	$(AWK) -f conjugue -v BANCO=verbos -v FORMATO=n -v CMD=T|\
            grep paradigma|sed 's/ deduzido//'|sort|uniq -c|sort -n

#
# TESTES
# ------
#

#
# Erros do separador de slabas.
#
teste_sep:
	./fl -v -s - <testesep | grep errou

#
# Encontros voclicos no previstos no separador de slabas.
#
teste_ev:
	./fl -v -S | grep -i imprevisto | sort | uniq

#
# Confronto das formas geradas pelo conjugador com as formas geradas
# via arquivo de afixos.
#
teste_v:
	echo Essa opo ainda no est implementada

#
# roda todos os testes
#
testes: teste_v teste_sep teste_ev

#
# Remove todos os arquivos construdos.
#
clean:
	rm -f v.tmp br.tmp palavras.tmp br.base.tmp
	rm -f br.aff br.hash br.ispell.cnt br.ispell.stat
	rm -f v.ispell br.ispell br.ispell.tmp
	rm -f formas
	rm -f conjugue-stamp
	rm -f pt_BR.dic pt_BR.aff
	rm -f silabas br.base br.aff
	rm -f pt_BR
	rm -f E-Rodrigo
	rm -f FAQ
	rm -f *~