summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorYuan Fu <casouri@gmail.com>2022-11-10 10:00:28 -0800
committerYuan Fu <casouri@gmail.com>2022-11-10 10:25:29 -0800
commitc5e3b99467dd07522f9522cc77cddbaa69222a7b (patch)
treed7b3254f0ac1840340a9deef30d6edf45898e9e7 /configure.ac
parentab4edbf60eca767775e18d8d0e318c28a74792b3 (diff)
downloademacs-c5e3b99467dd07522f9522cc77cddbaa69222a7b.tar.gz
Accept older versions of tree-sitter library
* configure.ac: Accept a tree-sitter library as long as it provides ts_set_allocator.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac31
1 files changed, 25 insertions, 6 deletions
diff --git a/configure.ac b/configure.ac
index caf3366cfd5..20259186c1d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3216,15 +3216,34 @@ TREE_SITTER_OBJ=
if test "${with_tree_sitter}" != "no"; then
dnl Tree-sitter 0.20.2 added support to change the malloc it uses
- dnl at runtime.
- dnl
- dnl Tree-sitter's Makefile has problems, until that's fixed,
- dnl tree-sitter libraries will be versioned 0.6.3. So for now
- dnl require 0.0.
- EMACS_CHECK_MODULES([TREE_SITTER], [tree-sitter >= 0.0],
+ dnl at runtime, we need that feature. However, tree-sitter's
+ dnl Makefile has problems, until that's fixed, all tree-sitter
+ dnl libraries distributed are versioned 0.6.3. We try to
+ dnl accept a tree-sitter library that has incorrect version as long
+ dnl as it supports changing malloc.
+ EMACS_CHECK_MODULES([TREE_SITTER], [tree-sitter >= 0.20.2],
[HAVE_TREE_SITTER=yes], [HAVE_TREE_SITTER=no])
if test "${HAVE_TREE_SITTER}" = yes; then
AC_DEFINE(HAVE_TREE_SITTER, 1, [Define if using tree-sitter.])
+ else
+ EMACS_CHECK_MODULES([TREE_SITTER], [tree-sitter >= 0.6.3],
+ [HAVE_TREE_SITTER=yes], [HAVE_TREE_SITTER=no])
+ if test "${HAVE_TREE_SITTER}" = yes; then
+ OLD_CFLAGS=$CFLAGS
+ OLD_LIBS=$LIBS
+ CFLAGS="$CFLAGS $TREE_SITTER_CFLAGS"
+ LIBS="$TREE_SITTER_LIBS $LIBS"
+ AC_CHECK_FUNCS([ts_set_allocator])
+ CFLAGS=$OLD_CFLAGS
+ LIBS=$OLD_LIBS
+ if test "$ac_cv_func_ts_set_allocator" == yes; then
+ AC_DEFINE(HAVE_TREE_SITTER, 1, [Define if using tree-sitter.])
+ else
+ AC_MSG_ERROR([Tree-sitter library exists but its version is too old]);
+ TREE_SITTER_CFLAGS=
+ TREE_SITTER_LIBS=
+ fi
+ fi
fi
# Windows loads tree-sitter dynamically