# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = tests
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \
	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \
	$(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \
	$(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \
	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \
	$(top_srcdir)/m4/inttypes-pri.m4 \
	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
	$(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \
	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
	$(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
	$(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \
	$(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/visibility.m4 \
	$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
	$(top_srcdir)/m4/xsize.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
	$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
	html-recursive info-recursive install-data-recursive \
	install-dvi-recursive install-exec-recursive \
	install-html-recursive install-info-recursive \
	install-pdf-recursive install-ps-recursive install-recursive \
	installcheck-recursive installdirs-recursive pdf-recursive \
	ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
  distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
	distdir
ETAGS = etags
CTAGS = ctags
am__tty_colors = \
red=; grn=; lgn=; blu=; std=
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
  dir0=`pwd`; \
  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
  sed_rest='s,^[^/]*/*,,'; \
  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
  sed_butlast='s,/*[^/]*$$,,'; \
  while test -n "$$dir1"; do \
    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
    if test "$$first" != "."; then \
      if test "$$first" = ".."; then \
        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
      else \
        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
        if test "$$first2" = "$$first"; then \
          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
        else \
          dir2="../$$dir2"; \
        fi; \
        dir0="$$dir0"/"$$first"; \
      fi; \
    fi; \
    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
  done; \
  reldir="$$dir2"
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSESLIB = @CURSESLIB@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DATADIRNAME = @DATADIRNAME@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GENCAT = @GENCAT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIBC2 = @GLIBC2@
GLIBC21 = @GLIBC21@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
HAVE_ASPRINTF = @HAVE_ASPRINTF@
HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@
HAVE_SNPRINTF = @HAVE_SNPRINTF@
HAVE_VISIBILITY = @HAVE_VISIBILITY@
HAVE_WPRINTF = @HAVE_WPRINTF@
HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@
HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
LIBMULTITHREAD = @LIBMULTITHREAD@
LIBOBJS = @LIBOBJS@
LIBPTH = @LIBPTH@
LIBPTH_PREFIX = @LIBPTH_PREFIX@
LIBS = @LIBS@
LIBTHREAD = @LIBTHREAD@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBC = @LTLIBC@
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
LTLIBOBJS = @LTLIBOBJS@
LTLIBPTH = @LTLIBPTH@
LTLIBTHREAD = @LTLIBTHREAD@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
POSUB = @POSUB@
PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
RANLIB = @RANLIB@
READLINELIB = @READLINELIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WINDRES = @WINDRES@
WOE32 = @WOE32@
WOE32DLL = @WOE32DLL@
XFAILED = @XFAILED@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = suggestiontest
XFAIL_TESTS = @XFAILED@
TESTS = \
affixes.test \
condition.test \
condition_utf.test \
base.test \
base_utf.test \
allcaps.test \
allcaps_utf.test \
allcaps2.test \
allcaps3.test \
keepcase.test \
i58202.test \
map.test \
rep.test \
sug.test \
sugutf.test \
phone.test \
flag.test \
flaglong.test \
flagnum.test \
flagutf8.test \
slash.test \
forbiddenword.test \
nosuggest.test \
alias.test \
alias2.test \
alias3.test \
breakdefault.test \
break.test \
needaffix.test \
needaffix2.test \
needaffix3.test \
needaffix4.test \
needaffix5.test \
circumfix.test \
fogemorpheme.test \
onlyincompound.test \
complexprefixes.test \
complexprefixes2.test \
complexprefixesutf.test \
conditionalprefix.test \
zeroaffix.test \
utf8.test \
utf8_bom.test \
utf8_bom2.test \
utf8_nonbmp.test \
compoundflag.test \
compoundrule.test \
compoundrule2.test \
compoundrule3.test \
compoundrule4.test \
compoundrule5.test \
compoundrule6.test \
compoundrule7.test \
compoundrule8.test \
compoundaffix.test \
compoundaffix2.test \
compoundaffix3.test \
checkcompounddup.test \
checkcompoundtriple.test \
simplifiedtriple.test \
checkcompoundrep.test \
checkcompoundcase2.test \
checkcompoundcaseutf.test \
checkcompoundpattern.test \
checkcompoundpattern2.test \
checkcompoundpattern3.test \
checkcompoundpattern4.test \
utfcompound.test \
checksharps.test \
checksharpsutf.test \
germancompounding.test \
germancompoundingold.test \
i35725.test \
i53643.test \
i54633.test \
i54980.test \
maputf.test \
reputf.test \
ignore.test \
ignoreutf.test \
1592880.test \
1695964.test \
1463589.test \
1463589_utf.test \
IJ.test \
i68568.test \
i68568utf.test \
1706659.test \
digits_in_words.test \
colons_in_words.test \
ngram_utf_fix.test \
morph.test \
1975530.test \
fullstrip.test \
iconv.test \
oconv.test \
encoding.test \
korean.test \
opentaal_forbiddenword1.test \
opentaal_forbiddenword2.test \
opentaal_keepcase.test \
arabic.test \
2970240.test \
2970242.test \
breakoff.test \
opentaal_cpdpat.test \
opentaal_cpdpat2.test \
2999225.test \
onlyincompound2.test \
forceucase.test \
warn.test

EXTRA_DIST = \
test.sh \
affixes.aff \
affixes.dic \
affixes.good \
affixes.test \
condition.aff \
condition.dic \
condition.good \
condition.test \
condition.wrong \
condition_utf.aff \
condition_utf.dic \
condition_utf.good \
condition_utf.test \
condition_utf.wrong \
base.aff \
base.dic \
base.good \
base.sug \
base.test \
base.wrong \
base_utf.aff \
base_utf.dic \
base_utf.good \
base_utf.sug \
base_utf.test \
base_utf.wrong \
allcaps.aff \
allcaps.dic \
allcaps.good \
allcaps.sug \
allcaps.test \
allcaps.wrong \
allcaps2.aff \
allcaps2.dic \
allcaps2.good \
allcaps2.sug \
allcaps2.test \
allcaps2.wrong \
allcaps3.aff \
allcaps3.dic \
allcaps3.good \
allcaps3.test \
allcaps3.wrong \
allcaps_utf.aff \
allcaps_utf.dic \
allcaps_utf.good \
allcaps_utf.sug \
allcaps_utf.test \
allcaps_utf.wrong \
keepcase.aff \
keepcase.dic \
keepcase.good \
keepcase.sug \
keepcase.test \
keepcase.wrong \
map.aff \
map.dic \
map.sug \
map.test \
map.wrong \
rep.aff \
rep.dic \
rep.sug \
rep.test \
rep.wrong \
sug.aff \
sug.dic \
sug.sug \
sug.test \
sug.wrong \
sugutf.aff \
sugutf.dic \
sugutf.sug \
sugutf.test \
sugutf.wrong \
phone.aff \
phone.dic \
phone.sug \
phone.test \
phone.wrong \
alias.aff \
alias.dic \
alias.good \
alias.test \
alias2.aff \
alias2.dic \
alias2.good \
alias2.morph \
alias2.test \
alias3.aff \
alias3.dic \
alias3.good \
alias3.morph \
alias3.test \
break.aff \
break.dic \
break.good \
break.test \
break.wrong \
breakdefault.aff \
breakdefault.dic \
breakdefault.good \
breakdefault.sug \
breakdefault.test \
breakdefault.wrong \
circumfix.aff \
circumfix.dic \
circumfix.good \
circumfix.morph \
circumfix.test \
circumfix.wrong \
fogemorpheme.aff \
fogemorpheme.dic \
fogemorpheme.good \
fogemorpheme.test \
fogemorpheme.wrong \
onlyincompound.aff \
onlyincompound.dic \
onlyincompound.good \
onlyincompound.sug \
onlyincompound.test \
onlyincompound.wrong \
forbiddenword.aff \
forbiddenword.dic \
forbiddenword.good \
forbiddenword.test \
forbiddenword.wrong \
nosuggest.aff \
nosuggest.dic \
nosuggest.good \
nosuggest.sug \
nosuggest.test \
nosuggest.wrong \
germancompounding.aff \
germancompounding.dic \
germancompounding.good \
germancompounding.test \
germancompounding.wrong \
germancompoundingold.aff \
germancompoundingold.dic \
germancompoundingold.good \
germancompoundingold.test \
germancompoundingold.wrong \
needaffix2.aff \
needaffix2.dic \
needaffix2.good \
needaffix2.morph \
needaffix2.test \
needaffix3.aff \
needaffix3.dic \
needaffix3.good \
needaffix3.test \
needaffix3.wrong \
needaffix4.aff \
needaffix4.dic \
needaffix4.good \
needaffix4.test \
needaffix5.aff \
needaffix5.dic \
needaffix5.good \
needaffix5.test \
needaffix5.wrong \
needaffix.aff \
needaffix.dic \
needaffix.good \
needaffix.test \
needaffix.wrong \
zeroaffix.aff \
zeroaffix.dic \
zeroaffix.good \
zeroaffix.morph \
zeroaffix.test \
utf8.aff \
utf8.dic \
utf8.good \
utf8.test \
utf8_bom.aff \
utf8_bom.dic \
utf8_bom.good \
utf8_bom.test \
utf8_bom2.aff \
utf8_bom2.dic \
utf8_bom2.good \
utf8_bom2.test \
utf8_nonbmp.aff \
utf8_nonbmp.dic \
utf8_nonbmp.good \
utf8_nonbmp.sug \
utf8_nonbmp.test \
utf8_nonbmp.wrong \
utfcompound.aff \
utfcompound.dic \
utfcompound.good \
utfcompound.test \
utfcompound.wrong \
compoundflag.aff \
compoundflag.dic \
compoundflag.good \
compoundflag.test \
compoundflag.wrong \
compoundrule.aff \
compoundrule.dic \
compoundrule.good \
compoundrule.test \
compoundrule.wrong \
compoundrule2.aff \
compoundrule2.dic \
compoundrule2.good \
compoundrule2.test \
compoundrule2.wrong \
compoundrule3.aff \
compoundrule3.dic \
compoundrule3.good \
compoundrule3.test \
compoundrule3.wrong \
compoundrule4.aff \
compoundrule4.dic \
compoundrule4.good \
compoundrule4.test \
compoundrule4.wrong \
compoundrule5.aff \
compoundrule5.dic \
compoundrule5.good \
compoundrule5.morph \
compoundrule5.test \
compoundrule5.wrong \
compoundrule6.aff \
compoundrule6.dic \
compoundrule6.good \
compoundrule6.test \
compoundrule6.wrong \
compoundrule7.aff \
compoundrule7.dic \
compoundrule7.good \
compoundrule7.test \
compoundrule7.wrong \
compoundrule8.aff \
compoundrule8.dic \
compoundrule8.good \
compoundrule8.test \
compoundrule8.wrong \
compoundaffix.aff \
compoundaffix.dic \
compoundaffix.good \
compoundaffix.test \
compoundaffix.wrong \
compoundaffix2.aff \
compoundaffix2.dic \
compoundaffix2.good \
compoundaffix2.test \
compoundaffix3.aff \
compoundaffix3.dic \
compoundaffix3.good \
compoundaffix3.test \
compoundaffix3.wrong \
checkcompounddup.aff \
checkcompounddup.dic \
checkcompounddup.good \
checkcompounddup.test \
checkcompounddup.wrong \
checkcompoundcase.aff \
checkcompoundcase.dic \
checkcompoundcase.good \
checkcompoundcase.test \
checkcompoundcase.wrong \
checkcompoundcase2.aff \
checkcompoundcase2.dic \
checkcompoundcase2.good \
checkcompoundcase2.test \
checkcompoundcase2.wrong \
checkcompoundcaseutf.aff \
checkcompoundcaseutf.dic \
checkcompoundcaseutf.good \
checkcompoundcaseutf.test \
checkcompoundcaseutf.wrong \
checkcompoundrep.aff \
checkcompoundrep.dic \
checkcompoundrep.good \
checkcompoundrep.test \
checkcompoundrep.wrong \
checkcompoundtriple.aff \
checkcompoundtriple.dic \
checkcompoundtriple.good \
checkcompoundtriple.test \
checkcompoundtriple.wrong \
simplifiedtriple.aff \
simplifiedtriple.dic \
simplifiedtriple.good \
simplifiedtriple.test \
simplifiedtriple.wrong \
checkcompoundpattern.aff \
checkcompoundpattern.dic \
checkcompoundpattern.good \
checkcompoundpattern.test \
checkcompoundpattern.wrong \
checkcompoundpattern2.aff \
checkcompoundpattern2.dic \
checkcompoundpattern2.good \
checkcompoundpattern2.test \
checkcompoundpattern2.wrong \
checkcompoundpattern3.aff \
checkcompoundpattern3.dic \
checkcompoundpattern3.good \
checkcompoundpattern3.test \
checkcompoundpattern3.wrong \
checkcompoundpattern4.aff \
checkcompoundpattern4.dic \
checkcompoundpattern4.good \
checkcompoundpattern4.test \
checkcompoundpattern4.wrong \
checksharps.aff \
checksharps.dic \
checksharps.good \
checksharps.sug \
checksharps.test \
checksharps.wrong \
checksharpsutf.aff \
checksharpsutf.dic \
checksharpsutf.good \
checksharpsutf.sug \
checksharpsutf.test \
checksharpsutf.wrong \
conditionalprefix.aff \
conditionalprefix.dic \
conditionalprefix.good \
conditionalprefix.morph \
conditionalprefix.test \
conditionalprefix.wrong \
flaglong.aff \
flaglong.dic \
flaglong.good \
flaglong.test \
flagnum.aff \
flagnum.dic \
flagnum.good \
flagnum.test \
flag.aff \
flag.dic \
flag.good \
flag.test \
flagutf8.aff \
flagutf8.dic \
flagutf8.good \
flagutf8.test \
complexprefixes.aff \
complexprefixes.dic \
complexprefixes.good \
complexprefixes.wrong \
complexprefixes.test \
complexprefixes2.aff \
complexprefixes2.dic \
complexprefixes2.good \
complexprefixes2.test \
complexprefixesutf.aff \
complexprefixesutf.dic \
complexprefixesutf.good \
complexprefixesutf.wrong \
complexprefixesutf.test \
i35725.aff \
i35725.dic \
i35725.good \
i35725.sug \
i35725.test \
i35725.wrong \
i53643.aff \
i53643.dic \
i53643.good \
i53643.test \
i53643.wrong \
i54633.aff \
i54633.dic \
i54633.good \
i54633.sug \
i54633.test \
i54633.wrong \
i54980.aff \
i54980.dic \
i54980.good \
i54980.test \
i58202.aff \
i58202.dic \
i58202.good \
i58202.sug \
i58202.test \
i58202.wrong \
maputf.aff \
maputf.dic \
maputf.sug \
maputf.wrong \
maputf.test \
reputf.aff \
reputf.dic \
reputf.sug \
reputf.wrong \
reputf.test \
slash.aff \
slash.dic \
slash.good \
slash.test \
ignore.aff \
ignore.dic \
ignore.good \
ignore.test \
ignoreutf.aff \
ignoreutf.dic \
ignoreutf.good \
ignoreutf.test \
1592880.aff \
1592880.dic \
1592880.good \
1592880.test \
1695964.aff \
1695964.dic \
1695964.sug \
1695964.test \
1695964.wrong \
1463589.aff \
1463589.dic \
1463589.sug \
1463589.test \
1463589.wrong \
1463589_utf.aff \
1463589_utf.dic \
1463589_utf.sug \
1463589_utf.test \
1463589_utf.wrong \
IJ.aff \
IJ.dic \
IJ.good \
IJ.sug \
IJ.test \
IJ.wrong \
i68568.aff \
i68568.dic \
i68568.test \
i68568.wrong \
i68568utf.aff \
i68568utf.dic \
i68568utf.test \
i68568utf.wrong \
1706659.aff \
1706659.dic \
1706659.test \
1706659.wrong \
digits_in_words.aff \
digits_in_words.dic \
digits_in_words.test \
digits_in_words.wrong \
colons_in_words.aff \
colons_in_words.dic \
colons_in_words.test \
ngram_utf_fix.aff \
ngram_utf_fix.dic \
ngram_utf_fix.good \
ngram_utf_fix.sug \
ngram_utf_fix.test \
ngram_utf_fix.wrong \
morph.aff \
morph.dic \
morph.good \
morph.morph \
morph.test \
1975530.aff \
1975530.dic \
1975530.good \
1975530.test \
1975530.wrong \
fullstrip.aff \
fullstrip.dic \
fullstrip.good \
fullstrip.test \
iconv.aff \
iconv.dic \
iconv.good \
iconv.test \
oconv.aff \
oconv.dic \
oconv.good \
oconv.sug \
oconv.test \
oconv.wrong \
encoding.aff \
encoding.dic \
encoding.good \
encoding.test \
opentaal_forbiddenword1.aff \
opentaal_forbiddenword1.dic \
opentaal_forbiddenword1.good \
opentaal_forbiddenword1.sug \
opentaal_forbiddenword1.test \
opentaal_forbiddenword1.wrong \
opentaal_forbiddenword2.aff \
opentaal_forbiddenword2.dic \
opentaal_forbiddenword2.good \
opentaal_forbiddenword2.sug \
opentaal_forbiddenword2.test \
opentaal_forbiddenword2.wrong \
opentaal_forbiddenword2.aff \
opentaal_forbiddenword2.dic \
opentaal_forbiddenword2.good \
opentaal_forbiddenword2.sug \
opentaal_forbiddenword2.test \
opentaal_forbiddenword2.wrong \
opentaal_keepcase.aff \
opentaal_keepcase.dic \
opentaal_keepcase.good \
opentaal_keepcase.sug \
opentaal_keepcase.test \
opentaal_keepcase.wrong \
arabic.aff \
arabic.dic \
arabic.wrong \
arabic.test \
2970240.aff \
2970240.dic \
2970240.good \
2970240.wrong \
2970240.test \
2970242.aff \
2970242.dic \
2970242.good \
2970242.wrong \
2970242.test \
breakoff.aff \
breakoff.dic \
breakoff.good \
breakoff.wrong \
breakoff.test \
opentaal_cpdpat.aff \
opentaal_cpdpat.dic \
opentaal_cpdpat.good \
opentaal_cpdpat.wrong \
opentaal_cpdpat.test \
opentaal_cpdpat2.aff \
opentaal_cpdpat2.dic \
opentaal_cpdpat2.good \
opentaal_cpdpat2.wrong \
opentaal_cpdpat2.test \
2999225.aff \
2999225.dic \
2999225.good \
2999225.test \
korean.aff \
korean.dic \
korean.good \
korean.wrong \
korean.test \
onlyincompound2.aff \
onlyincompound2.dic \
onlyincompound2.good \
onlyincompound2.test \
onlyincompound2.wrong \
forceucase.aff \
forceucase.dic \
forceucase.good \
forceucase.sug \
forceucase.wrong \
forceucase.test \
warn.aff \
warn.dic \
warn.good \
warn.test

all: all-recursive

.SUFFIXES:
$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
	@for dep in $?; do \
	  case '$(am__configure_deps)' in \
	    *$$dep*) \
	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
	        && { if test -f $@; then exit 0; else break; fi; }; \
	      exit 1;; \
	  esac; \
	done; \
	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --gnu tests/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	@case '$?' in \
	  *config.status*) \
	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
	  *) \
	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
	esac;

$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh

$(top_srcdir)/configure:  $(am__configure_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs

# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
#     (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
	@fail= failcom='exit 1'; \
	for f in x $$MAKEFLAGS; do \
	  case $$f in \
	    *=* | --[!k]*);; \
	    *k*) failcom='fail=yes';; \
	  esac; \
	done; \
	dot_seen=no; \
	target=`echo $@ | sed s/-recursive//`; \
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  echo "Making $$target in $$subdir"; \
	  if test "$$subdir" = "."; then \
	    dot_seen=yes; \
	    local_target="$$target-am"; \
	  else \
	    local_target="$$target"; \
	  fi; \
	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
	  || eval $$failcom; \
	done; \
	if test "$$dot_seen" = "no"; then \
	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
	fi; test -z "$$fail"

$(RECURSIVE_CLEAN_TARGETS):
	@fail= failcom='exit 1'; \
	for f in x $$MAKEFLAGS; do \
	  case $$f in \
	    *=* | --[!k]*);; \
	    *k*) failcom='fail=yes';; \
	  esac; \
	done; \
	dot_seen=no; \
	case "$@" in \
	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
	  *) list='$(SUBDIRS)' ;; \
	esac; \
	rev=''; for subdir in $$list; do \
	  if test "$$subdir" = "."; then :; else \
	    rev="$$subdir $$rev"; \
	  fi; \
	done; \
	rev="$$rev ."; \
	target=`echo $@ | sed s/-recursive//`; \
	for subdir in $$rev; do \
	  echo "Making $$target in $$subdir"; \
	  if test "$$subdir" = "."; then \
	    local_target="$$target-am"; \
	  else \
	    local_target="$$target"; \
	  fi; \
	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
	  || eval $$failcom; \
	done && test -z "$$fail"
tags-recursive:
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
	done
ctags-recursive:
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
	done

ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
	unique=`for i in $$list; do \
	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
	  done | \
	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
	      END { if (nonempty) { for (i in files) print i; }; }'`; \
	mkid -fID $$unique
tags: TAGS

TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
		$(TAGS_FILES) $(LISP)
	set x; \
	here=`pwd`; \
	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
	  include_option=--etags-include; \
	  empty_fix=.; \
	else \
	  include_option=--include; \
	  empty_fix=; \
	fi; \
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  if test "$$subdir" = .; then :; else \
	    test ! -f $$subdir/TAGS || \
	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
	  fi; \
	done; \
	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
	unique=`for i in $$list; do \
	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
	  done | \
	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
	      END { if (nonempty) { for (i in files) print i; }; }'`; \
	shift; \
	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
	  test -n "$$unique" || unique=$$empty_fix; \
	  if test $$# -gt 0; then \
	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	      "$$@" $$unique; \
	  else \
	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	      $$unique; \
	  fi; \
	fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
		$(TAGS_FILES) $(LISP)
	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
	unique=`for i in $$list; do \
	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
	  done | \
	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
	      END { if (nonempty) { for (i in files) print i; }; }'`; \
	test -z "$(CTAGS_ARGS)$$unique" \
	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
	     $$unique

GTAGS:
	here=`$(am__cd) $(top_builddir) && pwd` \
	  && $(am__cd) $(top_srcdir) \
	  && gtags -i $(GTAGS_ARGS) "$$here"

distclean-tags:
	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags

check-TESTS: $(TESTS)
	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
	srcdir=$(srcdir); export srcdir; \
	list=' $(TESTS) '; \
	$(am__tty_colors); \
	if test -n "$$list"; then \
	  for tst in $$list; do \
	    if test -f ./$$tst; then dir=./; \
	    elif test -f $$tst; then dir=; \
	    else dir="$(srcdir)/"; fi; \
	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
	      all=`expr $$all + 1`; \
	      case " $(XFAIL_TESTS) " in \
	      *[\ \	]$$tst[\ \	]*) \
		xpass=`expr $$xpass + 1`; \
		failed=`expr $$failed + 1`; \
		col=$$red; res=XPASS; \
	      ;; \
	      *) \
		col=$$grn; res=PASS; \
	      ;; \
	      esac; \
	    elif test $$? -ne 77; then \
	      all=`expr $$all + 1`; \
	      case " $(XFAIL_TESTS) " in \
	      *[\ \	]$$tst[\ \	]*) \
		xfail=`expr $$xfail + 1`; \
		col=$$lgn; res=XFAIL; \
	      ;; \
	      *) \
		failed=`expr $$failed + 1`; \
		col=$$red; res=FAIL; \
	      ;; \
	      esac; \
	    else \
	      skip=`expr $$skip + 1`; \
	      col=$$blu; res=SKIP; \
	    fi; \
	    echo "$${col}$$res$${std}: $$tst"; \
	  done; \
	  if test "$$all" -eq 1; then \
	    tests="test"; \
	    All=""; \
	  else \
	    tests="tests"; \
	    All="All "; \
	  fi; \
	  if test "$$failed" -eq 0; then \
	    if test "$$xfail" -eq 0; then \
	      banner="$$All$$all $$tests passed"; \
	    else \
	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
	    fi; \
	  else \
	    if test "$$xpass" -eq 0; then \
	      banner="$$failed of $$all $$tests failed"; \
	    else \
	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
	    fi; \
	  fi; \
	  dashes="$$banner"; \
	  skipped=""; \
	  if test "$$skip" -ne 0; then \
	    if test "$$skip" -eq 1; then \
	      skipped="($$skip test was not run)"; \
	    else \
	      skipped="($$skip tests were not run)"; \
	    fi; \
	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
	      dashes="$$skipped"; \
	  fi; \
	  report=""; \
	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
	    report="Please report to $(PACKAGE_BUGREPORT)"; \
	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
	      dashes="$$report"; \
	  fi; \
	  dashes=`echo "$$dashes" | sed s/./=/g`; \
	  if test "$$failed" -eq 0; then \
	    echo "$$grn$$dashes"; \
	  else \
	    echo "$$red$$dashes"; \
	  fi; \
	  echo "$$banner"; \
	  test -z "$$skipped" || echo "$$skipped"; \
	  test -z "$$report" || echo "$$report"; \
	  echo "$$dashes$$std"; \
	  test "$$failed" -eq 0; \
	else :; fi

distdir: $(DISTFILES)
	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	list='$(DISTFILES)'; \
	  dist_files=`for file in $$list; do echo $$file; done | \
	  sed -e "s|^$$srcdirstrip/||;t" \
	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
	case $$dist_files in \
	  */*) $(MKDIR_P) `echo "$$dist_files" | \
			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
			   sort -u` ;; \
	esac; \
	for file in $$dist_files; do \
	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
	  if test -d $$d/$$file; then \
	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
	    if test -d "$(distdir)/$$file"; then \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
	  else \
	    test -f "$(distdir)/$$file" \
	    || cp -p $$d/$$file "$(distdir)/$$file" \
	    || exit 1; \
	  fi; \
	done
	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
	  if test "$$subdir" = .; then :; else \
	    test -d "$(distdir)/$$subdir" \
	    || $(MKDIR_P) "$(distdir)/$$subdir" \
	    || exit 1; \
	  fi; \
	done
	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
	  if test "$$subdir" = .; then :; else \
	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
	    $(am__relativize); \
	    new_distdir=$$reldir; \
	    dir1=$$subdir; dir2="$(top_distdir)"; \
	    $(am__relativize); \
	    new_top_distdir=$$reldir; \
	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
	    ($(am__cd) $$subdir && \
	      $(MAKE) $(AM_MAKEFLAGS) \
	        top_distdir="$$new_top_distdir" \
	        distdir="$$new_distdir" \
		am__remove_distdir=: \
		am__skip_length_check=: \
		am__skip_mode_fix=: \
	        distdir) \
	      || exit 1; \
	  fi; \
	done
check-am: all-am
	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am

installcheck: installcheck-recursive
install-strip:
	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	  `test -z '$(STRIP)' || \
	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:

clean-generic:

distclean-generic:
	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)

maintainer-clean-generic:
	@echo "This command is intended for maintainers to use"
	@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive

clean-am: clean-generic clean-libtool mostlyclean-am

distclean: distclean-recursive
	-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-local \
	distclean-tags

dvi: dvi-recursive

dvi-am:

html: html-recursive

html-am:

info: info-recursive

info-am:

install-data-am:

install-dvi: install-dvi-recursive

install-dvi-am:

install-exec-am:

install-html: install-html-recursive

install-html-am:

install-info: install-info-recursive

install-info-am:

install-man:

install-pdf: install-pdf-recursive

install-pdf-am:

install-ps: install-ps-recursive

install-ps-am:

installcheck-am:

maintainer-clean: maintainer-clean-recursive
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-recursive

mostlyclean-am: mostlyclean-generic mostlyclean-libtool

pdf: pdf-recursive

pdf-am:

ps: ps-recursive

ps-am:

uninstall-am:

.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
	ctags-recursive install-am install-strip tags-recursive

.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
	all all-am check check-TESTS check-am clean clean-generic \
	clean-libtool ctags ctags-recursive distclean \
	distclean-generic distclean-libtool distclean-local \
	distclean-tags distdir dvi dvi-am html html-am info info-am \
	install install-am install-data install-data-am install-dvi \
	install-dvi-am install-exec install-exec-am install-html \
	install-html-am install-info install-info-am install-man \
	install-pdf install-pdf-am install-ps install-ps-am \
	install-strip installcheck installcheck-am installdirs \
	installdirs-am maintainer-clean maintainer-clean-generic \
	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
	ps ps-am tags tags-recursive uninstall uninstall-am


# infixes.test

distclean-local:
	-rm -rf testSubDir

# infixes.aff
# infixes.dic
# infixes.good
# infixes.test

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
