Support libenchant-2

This commit is contained in:
Zane U. Ji 2022-10-08 23:12:01 +08:00
parent f80b966b21
commit 4440c13adf
5 changed files with 203 additions and 16 deletions

View File

@ -1,6 +1,7 @@
# Version number followed by the release date # Version number followed by the release date
1.3.1.0 1.3.1.0
+ Support libenchant-2
* Fix a DDE error on Windows (Bug #236) * Fix a DDE error on Windows (Bug #236)
* gdk_x11_get_server_time crashes when an invalid window is passed * gdk_x11_get_server_time crashes when an invalid window is passed
* Migrate to PCRE2 (Miriam Ruiz) * Migrate to PCRE2 (Miriam Ruiz)

View File

@ -158,7 +158,7 @@ am__define_uniq_tagged_files = \
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \ am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \
INSTALL NEWS README.md TODO compile config.guess config.rpath \ INSTALL NEWS README.md TODO compile config.guess config.rpath \
config.sub install-sh ltmain.sh missing config.sub depcomp install-sh ltmain.sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION) distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir) top_distdir = $(distdir)

184
configure vendored
View File

@ -1563,10 +1563,6 @@ Some influential environment variables:
PCRE2_CFLAGS PCRE2_CFLAGS
C compiler flags for PCRE2, overriding pkg-config C compiler flags for PCRE2, overriding pkg-config
PCRE2_LIBS linker flags for PCRE2, overriding pkg-config PCRE2_LIBS linker flags for PCRE2, overriding pkg-config
ENCHANT_CFLAGS
C compiler flags for ENCHANT, overriding pkg-config
ENCHANT_LIBS
linker flags for ENCHANT, overriding pkg-config
GTK_CFLAGS C compiler flags for GTK, overriding pkg-config GTK_CFLAGS C compiler flags for GTK, overriding pkg-config
GTK_LIBS linker flags for GTK, overriding pkg-config GTK_LIBS linker flags for GTK, overriding pkg-config
@ -17973,7 +17969,71 @@ else $as_nop
fi fi
# Check enchant is available # Check enchant-2
pkg_failed=no
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for enchant-2" >&5
printf %s "checking for enchant-2... " >&6; }
if test -n "$ENCHANT_CFLAGS"; then
pkg_cv_ENCHANT_CFLAGS="$ENCHANT_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant-2\""; } >&5
($PKG_CONFIG --exists --print-errors "enchant-2") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_ENCHANT_CFLAGS=`$PKG_CONFIG --cflags "enchant-2" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test -n "$ENCHANT_LIBS"; then
pkg_cv_ENCHANT_LIBS="$ENCHANT_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant-2\""; } >&5
($PKG_CONFIG --exists --print-errors "enchant-2") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_ENCHANT_LIBS=`$PKG_CONFIG --libs "enchant-2" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test $pkg_failed = yes; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
ENCHANT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "enchant-2" 2>&1`
else
ENCHANT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "enchant-2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$ENCHANT_PKG_ERRORS" >&5
# Check enchant
ENCHANT_CFLAGS
C compiler flags for ENCHANT, overriding pkg-config
ENCHANT_LIBS
linker flags for ENCHANT, overriding pkg-config
pkg_failed=no pkg_failed=no
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for enchant" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for enchant" >&5
@ -18061,7 +18121,119 @@ else
ENCHANT_LIBS=$pkg_cv_ENCHANT_LIBS ENCHANT_LIBS=$pkg_cv_ENCHANT_LIBS
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; } printf "%s\n" "yes" >&6; }
CXXFLAGS="$CXXFLAGS -DUSE_ENCHANT" printf "%s\n" "#define USE_ENCHANT 1" >>confdefs.h
fi
elif test $pkg_failed = untried; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
# Check enchant
ENCHANT_CFLAGS
C compiler flags for ENCHANT, overriding pkg-config
ENCHANT_LIBS
linker flags for ENCHANT, overriding pkg-config
pkg_failed=no
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for enchant" >&5
printf %s "checking for enchant... " >&6; }
if test -n "$ENCHANT_CFLAGS"; then
pkg_cv_ENCHANT_CFLAGS="$ENCHANT_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant\""; } >&5
($PKG_CONFIG --exists --print-errors "enchant") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_ENCHANT_CFLAGS=`$PKG_CONFIG --cflags "enchant" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test -n "$ENCHANT_LIBS"; then
pkg_cv_ENCHANT_LIBS="$ENCHANT_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant\""; } >&5
($PKG_CONFIG --exists --print-errors "enchant") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_ENCHANT_LIBS=`$PKG_CONFIG --libs "enchant" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test $pkg_failed = yes; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
ENCHANT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "enchant" 2>&1`
else
ENCHANT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "enchant" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$ENCHANT_PKG_ERRORS" >&5
# otherwise Check ASPELL is available
ac_fn_cxx_check_header_compile "$LINENO" "aspell.h" "ac_cv_header_aspell_h" "$ac_includes_default"
if test "x$ac_cv_header_aspell_h" = xyes
then :
ASPELL_LIBS="-laspell"
else $as_nop
as_fn_error $? "Aspell headers not found" "$LINENO" 5
fi
elif test $pkg_failed = untried; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
# otherwise Check ASPELL is available
ac_fn_cxx_check_header_compile "$LINENO" "aspell.h" "ac_cv_header_aspell_h" "$ac_includes_default"
if test "x$ac_cv_header_aspell_h" = xyes
then :
ASPELL_LIBS="-laspell"
else $as_nop
as_fn_error $? "Aspell headers not found" "$LINENO" 5
fi
else
ENCHANT_CFLAGS=$pkg_cv_ENCHANT_CFLAGS
ENCHANT_LIBS=$pkg_cv_ENCHANT_LIBS
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
printf "%s\n" "#define USE_ENCHANT 1" >>confdefs.h
fi
else
ENCHANT_CFLAGS=$pkg_cv_ENCHANT_CFLAGS
ENCHANT_LIBS=$pkg_cv_ENCHANT_LIBS
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
printf "%s\n" "#define USE_ENCHANT 1" >>confdefs.h
,
printf "%s\n" "#define HAVE_LIBENCHANT_2 1" >>confdefs.h
fi fi

View File

@ -104,11 +104,18 @@ AC_LANG(C++)
AC_CHECK_HEADER(expat.h, , AC_CHECK_HEADER(expat.h, ,
AC_MSG_ERROR([Expat headers not found])) AC_MSG_ERROR([Expat headers not found]))
# Check enchant is available # Check enchant-2
PKG_CHECK_MODULES(ENCHANT, [enchant], [CXXFLAGS="$CXXFLAGS -DUSE_ENCHANT"], PKG_CHECK_MODULES(ENCHANT, [enchant-2],
[AC_DEFINE([USE_ENCHANT]),
AC_DEFINE([HAVE_LIBENCHANT_2])
],
# Check enchant
PKG_CHECK_MODULES(ENCHANT, [enchant],
[AC_DEFINE([USE_ENCHANT])],
# otherwise Check ASPELL is available # otherwise Check ASPELL is available
[AC_CHECK_HEADER(aspell.h, [ASPELL_LIBS="-laspell"], [AC_CHECK_HEADER(aspell.h, [ASPELL_LIBS="-laspell"],
AC_MSG_ERROR([Aspell headers not found]))] AC_MSG_ERROR([Aspell headers not found]))]
)
) )
AC_SUBST(ASPELL_LIBS) AC_SUBST(ASPELL_LIBS)

View File

@ -40,9 +40,13 @@ WrapAspell::WrapAspell (
) )
{ {
#ifdef USE_ENCHANT #ifdef USE_ENCHANT
#ifdef HAVE_LIBENCHANT_2
spell_broker = new enchant::Broker();
#else // HAVE_LIBENCHANT_2
spell_broker = enchant::Broker::instance(); spell_broker = enchant::Broker::instance();
#endif // HAVE_LIBENCHANT_2
spell_checker = spell_broker->request_dict( std::string ( lang.mb_str() ) ); spell_checker = spell_broker->request_dict( std::string ( lang.mb_str() ) );
#else #else // HAVE_LIBENCHANT
spell_config = new_aspell_config(); spell_config = new_aspell_config();
#ifdef __WXMSW__ #ifdef __WXMSW__
@ -68,7 +72,10 @@ WrapAspell::~WrapAspell()
{ {
#ifdef USE_ENCHANT #ifdef USE_ENCHANT
delete spell_checker; delete spell_checker;
#else #ifdef HAVE_LIBENCHANT_2
delete spell_broker;
#endif
#else // USE_ENCHANT
delete_aspell_speller ( spell_checker ); delete_aspell_speller ( spell_checker );
delete_aspell_config ( spell_config ); delete_aspell_config ( spell_config );
#endif #endif