dictdir=`aspell config dict-dir`
datadir=`aspell config data-dir`
VERSION=$(shell cat ./VERSION)
#ISPELLDIR = /usr/lib/ispell
ISPELLDIR = $(shell ispell -d stupidd 2>&1 | sed "s/^[^/]*(\/.*\/)stupidd.*$/\1/")
#MYSPELLDIR = /usr/share/dict/ooo
#MYSPELLDIR = /usr/share/myspell/dicts
MYSPELLDIR=`bin/find_myspell_dir.sh`
DIST = dist
ASPELL_DIST = $(DIST)/aspell-uk-$(VERSION)
ASPELL_DOC_DIR = /usr/share/doc/aspell-uk-$(VERSION)
ISPELL_DIST = $(DIST)/ispell-uk-$(VERSION)
ISPELL_DOC_DIR = /usr/share/doc/ispell-uk-$(VERSION)
MYSPELL_DIST = $(DIST)/myspell-uk-$(VERSION)
MYSPELL_DICT_LST = $(PREFIX)$(MYSPELLDIR)/dictionary.lst
MYSPELL_DOC_DIR = /usr/share/doc/ispell-uk_UA-$(VERSION)
XPI_DIST = $(DIST)/mozilla-xpi-uk-$(VERSION)
OXT_DIST = $(DIST)/openoffice.org-uk-$(VERSION)
UPDATE_VERSION=sed -r "s/@VERSION@/$(VERSION)/g"
#TODO: created this dirs only for particular target
$(shell mkdir -p $(ASPELL_DIST))
$(shell mkdir -p $(ISPELL_DIST))
$(shell mkdir -p $(MYSPELL_DIST))
$(shell mkdir -p $(XPI_DIST)/dictionaries)
$(shell mkdir -p $(OXT_DIST))
KOI8U_SET = src/aspell/koi8-u-nl.cset
KOI8U_MAP = src/aspell/koi8-u-nl.cmap
wordlist_src = src/Dictionary/uk_words.lst
affixfile_src = src/Affix/uk_affix.dat
CLEANFILES = uk.rws uk.cwl uk.cwl.gz uk_words.lst uk_affix.dat *.bak uk.dat
CLEANFILES += uk.aff uk.dic tmp.header
CLEANFILES += ukrainian.aff ukrainian.hash uk_words.enc uk_words.enc.cnt uk_words.enc.stat ukrainian
CLEANFILES += aspell-uk-*.tgz myspell_uk_UA-*.zip ispell-uk-*.tgz
CLEANFILES += spell*.tgz dist/*.oxt
CLEANDIRS = aspell-uk-* ispell-uk-* dist/*spell* dist/*mozilla* dist/*office*
iconv = iconv
include encodings.inc
default: aspell
all: aspell myspell mozilla-xpi ooo
packages: aspell-rpm myspell-rpm myspell-zip mozilla-xpi ooo
install: install-aspell
install-all: install-aspell install-myspell
#
# aspell rules
#
#aspell: $(ASPELL_DIST)/uk.rws $(ASPELL_DIST)/uk_affix.dat $(ASPELL_DIST)/uk.dat uk.multi ukrainian.alias $(ASPELL_DIST)/ukrainian.kbd
aspell: $(ASPELL_DIST)/uk.rws $(ASPELL_DIST)/uk.dat src/aspell/uk.multi src/aspell/ukrainian.alias $(ASPELL_DIST)/ukrainian.kbd
cp -u src/aspell/uk.multi src/aspell/ukrainian.alias $(ASPELL_DIST)
$(ASPELL_DIST)/uk_repl.dat:
cp -u src/aspell/uk_repl.dat $(ASPELL_DIST)
$(affixfile_src):
$(MAKE) -C src/Affix
$(wordlist_src):
$(MAKE) -C src/Dictionary
aspell-tar: $(DIST)/aspell-uk-$(VERSION).tgz
$(DIST)/aspell-uk-$(VERSION).tgz: aspell
mkdir -p $(ASPELL_DIST)/doc $(ASPELL_DIST)/misc
cp -u README Copyright $(ASPELL_DIST)
cp -u README.uk COPYING.* TODO $(ASPELL_DIST)/doc
cp -u src/aspell/aspell.net/misc/*.txt $(ASPELL_DIST)/misc
tar cCvfz $(DIST) --owner=root --group=root $@ aspell-uk-$(VERSION)
aspell-rpm: srctar
bin/make_rpm.sh aspell-uk $(VERSION)
install-aspell-dict: aspell
install -m 0755 -d $(PREFIX)$(datadir) $(PREFIX)$(dictdir)
install -m 0644 $(ASPELL_DIST)/$(KOI8U_SET) $(ASPELL_DIST)/$(KOI8U_MAP) $(PREFIX)$(dictdir)
install -m 0644 $(ASPELL_DIST)/uk.dat $(PREFIX)$(datadir)
install -m 0644 $(ASPELL_DIST)/uk.rws $(ASPELL_DIST)/uk.multi $(ASPELL_DIST)/uk_affix.dat $(ASPELL_DIST)/ukrainian.alias $(ASPELL_DIST)/ukrainian.kbd $(PREFIX)$(dictdir)
install-aspell: install-aspell-dict
install -m 0755 -d $(PREFIX)$(ASPELL_DOC_DIR)
install -m 0644 README README.uk Copyright COPYING.* TODO $(PREFIX)$(ASPELL_DOC_DIR)
# dependecies for aspell
uk.cwl: $(wordlist_src)
$(iconv) -f $(SOURCE_ENC) -t $(ASPELL_ENC) < $(wordlist_src) | LC_COLLATE=C sort | LC_COLLATE=C word-list-compress c > uk.cwl
uk.cwl.gz: uk.cwl
gzip -9 < uk.cwl > uk.cwl.gz
$(ASPELL_DIST)/uk.rws: $(affixfile_src) $(wordlist_src) $(ASPELL_DIST)/uk_affix.dat $(ASPELL_DIST)/uk.dat $(KOI8U_SET) $(KOI8U_MAP)
cp -u $(KOI8U_SET) $(KOI8U_MAP) $(ASPELL_DIST)
cat $(wordlist_src) | $(iconv) -f $(SOURCE_ENC) -t $(ASPELL_ENC) | \
aspell --local-data-dir=$(ASPELL_DIST) --lang=uk create master ./$@
$(ASPELL_DIST)/uk_affix.dat: $(affixfile_src) encodings.inc
$(iconv) -f $(SOURCE_ENC) -t $(ASPELL_ENC) < $(affixfile_src) > $@
#$(ASPELL_DIST)/uk_words.lst: $(wordlist_src) encodings.inc
# $(iconv) -f $(SOURCE_ENC) -t $(ASPELL_ENC) < $(wordlist_src) > $@
$(ASPELL_DIST)/uk.dat: src/aspell/uk.dat.templ encodings.inc
sed "s/^data-encoding.*$$/data-encoding $(ASPELL_ENC_NAME)/" < src/aspell/uk.dat.templ > $@
# *.kbd file should be always in UTF-8
$(ASPELL_DIST)/ukrainian.kbd: src/aspell/ukrainian.kbd
cp -u $< $@
# official aspell.net package
aspell.net:
wget ftp://ftp.gnu.org/gnu/aspell/aspell-lang-20040810.tar.bz2
aspell-lang-20040810/aspell-lang
#
# myspell rules
#
myspell: $(MYSPELL_DIST)/uk_UA.aff $(MYSPELL_DIST)/uk_UA.dic
install-myspell-dict: myspell
install -m 0755 -d $(PREFIX)$(MYSPELLDIR)
install -m 0644 $(MYSPELL_DIST)/uk_UA.aff $(MYSPELL_DIST)/uk_UA.dic $(PREFIX)$(MYSPELLDIR)
install-myspell: install-myspell-dict
install -m 0755 -d $(PREFIX)$(MYSPELL_DOC_DIR)
install -m 0644 src/myspell/README* $(PREFIX)$(MYSPELL_DOC_DIR)
if [[ ! -f "$(MYSPELL_DICT_LST)" ]] || \
! grep -q "^DICT[ \t]*uk[ \t]*UA[ \t]*uk_UA\$$" $(MYSPELL_DICT_LST); \
then \
echo "DICT uk UA uk_UA" >> $(MYSPELL_DICT_LST); \
fi
myspell-zip: $(DIST)/myspell-uk_UA-$(VERSION).zip
myspell-rpm: srctar
bin/make_rpm.sh myspell-uk $(VERSION)
$(DIST)/myspell-uk_UA-$(VERSION).zip: myspell
rm -f $@
zip -j $@ $(MYSPELL_DIST)/uk_UA.aff $(MYSPELL_DIST)/uk_UA.dic src/myspell/README*
# myspell dependencies
$(MYSPELL_DIST)/uk_UA.aff: $(affixfile_src) src/myspell/myspell.header encodings.inc
mkdir -p $(MYSPELL_DIST)
sed s/xxENCODINGxx/UTF-8/ < src/myspell/myspell.header > tmp.header
cat tmp.header $(affixfile_src) | $(iconv) -f $(SOURCE_ENC) -t $(MYSPELL_ENC) > $@
-rm tmp.header
$(MYSPELL_DIST)/uk_UA.dic: $(wordlist_src) encodings.inc
wc -l < $(wordlist_src) > $@
cat $(wordlist_src) | $(iconv) -f $(SOURCE_ENC) -t $(MYSPELL_ENC) >> $@
mozilla-xpi: myspell
mkdir -p $(XPI_DIST)/dictionaries
cp $(MYSPELL_DIST)/uk_UA.aff $(XPI_DIST)/dictionaries/uk-UA.aff
cp $(MYSPELL_DIST)/uk_UA.dic $(XPI_DIST)/dictionaries/uk-UA.dic
cat src/mozilla/README_uk_UA.txt.header src/myspell/README_uk_UA.txt > $(XPI_DIST)/README_uk_UA.txt
cp COPYING.LGPL $(XPI_DIST)/
cp src/mozilla/*.png $(XPI_DIST)/
$(UPDATE_VERSION) < src/mozilla/install.js > $(XPI_DIST)/install.js
$(UPDATE_VERSION) < src/mozilla/install.rdf > $(XPI_DIST)/install.rdf
cd $(XPI_DIST) && zip -r ../ukrainian_dictionary-$(VERSION)-mozilla.xpi * && cd ..
# cp src/mozilla/install* $(XPI_DIST)
ooo: myspell
mkdir -p $(OXT_DIST)
cp -r src/openoffice.org/* $(OXT_DIST)
$(UPDATE_VERSION) < src/openoffice.org/description.xml > $(OXT_DIST)/description.xml
cp $(MYSPELL_DIST)/uk_UA.aff $(OXT_DIST)/uk_UA/
cp $(MYSPELL_DIST)/uk_UA.dic $(OXT_DIST)/uk_UA/
cp src/myspell/README_uk_UA.txt $(OXT_DIST)/uk_UA/
cp src/thesaurus/th_uk_UA.dat $(OXT_DIST)/uk_UA/
bin/th_gen_idx.pl < src/thesaurus/th_uk_UA.dat > $(OXT_DIST)/uk_UA/th_uk_UA.idx
-rm *.oxt
cd $(OXT_DIST) && zip --exclude=\*CVS\* -r ../dict-uk_UA-$(VERSION).oxt * && cd ..
# for myspell engine (Firefox <=2, Thunderbird <=2...)
mozilla-xpi-old: myspell
grep -v "IGNORE" $(MYSPELL_DIST)/uk_UA.aff | sed "s/$(MYSPELL_ENC_NAME)/KOI8-U/" | iconv -f $(MYSPELL_ENC) -t koi8-u > $(XPI_DIST)/dictionaries/uk-UA.aff
cat $(MYSPELL_DIST)/uk_UA.dic | iconv -f $(MYSPELL_ENC) -t koi8-u > $(XPI_DIST)/dictionaries/uk-UA.dic
cat src/mozilla/old/README_uk_UA.txt.header src/myspell/README_uk_UA.txt > $(XPI_DIST)/dictionaries/README_uk_UA.txt
cp COPYING.LGPL $(XPI_DIST)/dictionaries/
cp src/mozilla/old/install* $(XPI_DIST)
cd $(XPI_DIST) && zip -r ukrainian_dictionary-$(VERSION)-mozilla-old.xpi dictionaries install.* && cd ..
#
# ispell rules
#
ispell: $(ISPELL_DIST)/ukrainian.aff $(ISPELL_DIST)/ukrainian.hash
install-ispell-dict: ispell
install -m 0755 -d $(PREFIX)$(ISPELLDIR)
install -m 0644 $(ISPELL_DIST)/ukrainian.aff $(ISPELL_DIST)/ukrainian.hash $(PREFIX)$(ISPELLDIR)
install-ispell: install-ispell-dict
install -m 0755 -d $(PREFIX)$(ISPELL_DOC_DIR)
install -m 0644 src/ispell/README Copyright COPYING.* $(PREFIX)$(ISPELL_DOC_DIR)
ispell-tar: $(DIST)/ispell-uk-$(VERSION).tgz
$(DIST)/ispell-uk-$(VERSION).tgz: ispell
mkdir -p $(ISPELL_DIST)/doc
cp -u src/ispell/README Copyright COPYING.* $(ISPELL_DIST)/doc
tar cCvfz $(DIST) --owner=root --group=root $@ --exclude='*.enc*' ispell-uk-$(VERSION)
ispell-rpm: srctar
bin/make_rpm.sh ispell-uk $(VERSION)
# dependencies for ispell
$(ISPELL_DIST)/ukrainian.aff: $(affixfile_src) bin/affconv.pl src/ispell/ispell.header encodings.inc
(cat src/ispell/ispell.header && grep -v "REP" $(affixfile_src) | perl bin/affconv.pl ) | $(iconv) -f $(SOURCE_ENC) -t $(ISPELL_ENC) > $@
$(ISPELL_DIST)/uk_words.enc: $(wordlist_src) encodings.inc
$(iconv) -f $(SOURCE_ENC) -t $(ISPELL_ENC) < $(wordlist_src) > $@
$(ISPELL_DIST)/ukrainian.hash: $(ISPELL_DIST)/uk_words.enc $(ISPELL_DIST)/ukrainian.aff
buildhash $(ISPELL_DIST)/uk_words.enc $(ISPELL_DIST)/ukrainian.aff $(ISPELL_DIST)/ukrainian.hash
# wordlist rules
#
ukrainian: $(wordlist_src) aspell
# XXX need to sorth this somehow (and do nont use one more locale)
iconv -f $(SOURCE_ENC) -t $(ASPELL_ENC) < $(wordlist_src) |\
aspell expand --encoding=$(ASPELL_ENC_NAME) \
--local-data-dir=$(ASPELL_DIST) --lang=uk | \
tr -s ' ' '\n' | sed '/^$$/d' > $@
install-wordlist: ukrainian
install -m 0755 -d $(PREFIX)/usr/share/dict
install -m 0644 ukrainian $(PREFIX)/usr/share/dict
# common rules
#
$(affixfile_src): affix-dir
$(wordlist_src): dictionary-dir
affix-dir:
$(MAKE) -C src/Affix
dictionary-dir:
$(MAKE) -C src/Dictionary
# regression test
#
regtest: aspell $(wordlist_src)
$(MAKE) -C test regtest
regtestroll:
$(MAKE) -C test regtestroll
srctar: clean
tar cfz $(DIST)/spell-uk-$(VERSION).tgz --exclude=test/all* --exclude=dist/*spell* --exclude=dist/*openoffice* --exclude=dist/*.oxt --exclude=*.old --exclude=src_text --exclude=CVS --exclude=--exclude=.* --exclude=tools *
mkdir -p $(DIST)/spell-uk-$(VERSION)
tar xCfz $(DIST)/spell-uk-$(VERSION) $(DIST)/spell-uk-$(VERSION).tgz
tar cCfz $(DIST) $(DIST)/spell-uk-$(VERSION).tgz --owner=root --group=root spell-uk-$(VERSION)
rm -rf $(DIST)/spell-uk-$(VERSION)
# cleaning
#
clean:
rm -f $(CLEANFILES)
rm -rf $(CLEANDIRS)
$(MAKE) -C src/Affix clean
$(MAKE) -C src/Dictionary clean
$(MAKE) -C test clean
.PHONY: all regtest regtestroll clean aspell myspell ispell
.PHONY: install install-all install-aspell install-myspell install-myspell-dict install-ispell install-wordlist
.PHONY: aspell-tar myspell-zip ispell-tar srctar affix-dir dictionary-dir