#
# Makefile para o br.ispell
#
#     make install            instala o hash e o conjugue
#     make conjugue           apenas corrige os paths do conjugue
#     make br.hash            apenas gera o hash
#     make palavras           apenas gera a lista de todas as palavras
#     make paradigmas         apenas mostra os paradigmas em ordem de uso
#

#
# Configure os seguintes paths:
#
#     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
#
BUILDHASH	=	buildhash
MAKE_SORTTMP	=	-T /var/tmp
FIX8BIT		=	../fix8bit
LANGUAGE	=	brazilian
AFFIXES		=	$(LANGUAGE).aff
HASHFILE	=	$(LANGUAGE).hash
PACKNAME	=	ispell-$(LANGUAGE)
DOCDIR		=	/usr/share/doc/packages/$(PACKNAME)
DOCSOURCE	=	README ../README.SUSE

prefix=/usr
BINDIR=$(prefix)/bin
HASHDIR=/usr/lib/ispell
VDIR=$(prefix)/lib/$(PACKNAME)
MANDIR=$(prefix)/share/man/pt_BR
AWK=/usr/bin/awk

#
# Daqui para baixo no mexa mais em nada
#

all: br.hash conjugue

#
# substitui os paths /usr/local/lib e /usr/bin/awk pelos que
# tiverem sido especificados acima.
#
conjugue: conjugue-stamp
conjugue-stamp:
	sed -e 's|/usr/bin/awk|$(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.man
	touch conjugue-stamp

#
# Gera as conjugaes de todos os verbos, com o resultado
# fatorado pelas flags do br.aff.
#
# O "pr"  tratado separadamente por causa dos acentos, que
# impedem o uso do paradigma "propor". A conjugao completa
# do "pr" consta de forma explcita do arquivo E.ispell.
#
# O segundo grep remove algumas linhas esprias que o conjugue
# gera.
#
v.ispell: conjugue
	$(AWK) -f conjugue -v BANCO=verbos -v FORMATO=ci -v CMD=T|\
            grep -vE "^(pr/|/R|$$)" >v.tmp
	mv -f v.tmp v.ispell

#
# Gera o vocabulario total, flexionado com as flags do br.aff.
#
br.hash: v.ispell
	cat v.ispell E.ispell| sort -u -t/ -k 1f,1 -k 1 $(MAKE_SORTTMP) >br.tmp
	mv -f br.tmp br.ispell
	$(BUILDHASH) br.ispell br.aff br.hash

#
# Instala o br.hash
#
install-hash: br.hash br.ispell
	install -d $(DESTDIR)$(HASHDIR)
	install --mode=644 br.hash br.aff $(DESTDIR)$(HASHDIR)
	-ln -sf br.hash $(DESTDIR)$(HASHDIR)/$(HASHFILE)
	-ln -sf br.aff  $(DESTDIR)$(HASHDIR)/$(AFFIXES)

#
# Instala o conjugue
#
install-conjugue: conjugue
	install -d $(DESTDIR)$(BINDIR)
	install --mode=755 conjugue $(DESTDIR)$(BINDIR)/conjugue
	install -d $(DESTDIR)$(VDIR)
	install --mode=644 verbos $(DESTDIR)$(VDIR)/verbos
	install -d $(DESTDIR)$(MANDIR)/man1
	install --mode=644 conjugue.man $(DESTDIR)$(MANDIR)/man1/conjugue.1
	gzip -9f $(DESTDIR)$(MANDIR)/man1/conjugue.1

#
# instala tudo
#
install: install-hash install-conjugue
	mkdir -p $(DESTDIR)$(DOCDIR)
	install -m 0444 $(DOCSOURCE) $(DESTDIR)$(DOCDIR)/

#
# Gera o vocabulrio flexionado a partir do br.hash.
#
palavras: br.hash
	cat br.ispell | ispell -e -d ./br.hash | tr " " "\n" | \
	sort -u -t/ -k 1f,1 -k 1 $(MAKE_SORTTMP) >palavras.tmp
	mv -f palavras.tmp palavras.ispell

#
# Lista todos os paradigmas em uso e o nmero de vezes que cada
# um  usado.
#
paradigmas: conjugue
	$(AWK) -f conjugue -v BANCO=verbos -v FORMATO=n -v CMD=T|\
            grep paradigma|sed 's/ deduzido//'| \
	    sort -t/ -k 1f,1 -k 1 $(MAKE_SORTTMP) | uniq -c | \
	    sort -t/ -k 1f,1 -k 1 $(MAKE_SORTTMP)

#
# Remove todos os arquivos construdos.
#
clean:
	rm -f v.tmp br.tmp palavras.tmp
	rm -f br.hash br.ispell.cnt br.ispell.stat
	rm -f v.ispell br.ispell
	rm -f palavras.ispell
	rm -f conjugue-stamp

