fi
])
-# Macro to add for using enchant spellchecker libraries! -*- sh -*-
+AC_DEFUN([LYX_HAVE_ENCHANT2],
+[
+ AC_MSG_CHECKING([whether enchant is version 2.x at least])
+ save_CXXFLAGS=$CXXFLAGS
+ CXXFLAGS="$ENCHANT_CFLAGS $AM_CXXFLAGS $CXXFLAGS"
+
+ AC_TRY_COMPILE([#include <enchant++.h>],
+ [enchant::Broker broker;],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_ENCHANT2, 1, [Define to 1 if enchant 2.x is detected])
+ ],
+ [AC_MSG_RESULT(no)])
+ CXXFLAGS=$save_CXXFLAGS
+])
+
AC_DEFUN([CHECK_WITH_ENCHANT],
[
lyx_use_enchant=true
test "$with_enchant" = "no" && lyx_use_enchant=false
if $lyx_use_enchant; then
- PKG_CHECK_MODULES([ENCHANT], [enchant], [], [lyx_use_enchant=false])
- AC_MSG_CHECKING([whether to use enchant])
- if $lyx_use_enchant ; then
- AC_MSG_RESULT(yes)
- AC_DEFINE(USE_ENCHANT, 1, [Define as 1 to use the enchant library])
- lyx_flags="$lyx_flags use-enchant"
- else
- AC_MSG_RESULT(no)
- fi
- fi
+ PKG_CHECK_MODULES([ENCHANT], [enchant], [], [lyx_use_enchant=false])
+ AC_MSG_CHECKING([whether to use enchant])
+ if $lyx_use_enchant ; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(USE_ENCHANT, 1, [Define as 1 to use the enchant library])
+ LYX_HAVE_ENCHANT2
+ lyx_flags="$lyx_flags use-enchant"
+ else
+ AC_MSG_RESULT(no)
+ fi
+ fi
])
# Macro to add for using hunspell spellchecker libraries! -*- sh -*-
"
LYX_USE_STD_CALL_ONCE)
+if (ENCHANT_FOUND)
+ set(CMAKE_REQUIRED_INCLUDES ${ENCHANT_INCLUDE_DIR})
+ set(CMAKE_REQUIRED_LIBRARIES ${ENCHANT_LIBRARY})
+ # Check, whether enchant is version 2.x at least
+ check_cxx_source_compiles(
+ "
+ #include <enchant++.h>
+ enchant::Broker broker;
+ int main() {
+ return(0);
+ }
+ "
+ HAVE_ENCHANT2)
+ if (HAVE_ENCHANT2)
+ message(STATUS "ENCHANT2 found")
+ endif()
+endif()
+
set(USE_LLVM_LIBCPP)
set(STD_STRING_USES_COW)
set(USE_GLIBCXX_CXX11_ABI)
namespace {
+enchant::Broker & broker()
+{
+#ifdef HAVE_ENCHANT2
+ static enchant::Broker thebroker;
+ return thebroker;
+#else
+ return *enchant::Broker::instance();
+#endif
+}
+
+
struct Speller {
enchant::Dict * speller;
};
enchant::Dict * EnchantChecker::Private::addSpeller(string const & lang)
{
- enchant::Broker * instance = enchant::Broker::instance();
Speller m;
try {
LYXERR(Debug::FILES, "request enchant speller for language " << lang);
- m.speller = instance->request_dict(lang);
+ m.speller = broker().request_dict(lang);
}
catch (enchant::Exception & e) {
// FIXME error handling?
{
if (!lang)
return false;
- enchant::Broker * instance = enchant::Broker::instance();
- return (instance->dict_exists(lang->code()));
+ return broker().dict_exists(lang->code());
}