common/build-style: add build-style for building tree-sitter grammmars

This commit is contained in:
classabbyamp
2026-04-17 22:08:56 -04:00
committed by classabbyamp
parent da1ebd535d
commit bd3669c8cb
3 changed files with 59 additions and 0 deletions
+2
View File
@@ -1086,6 +1086,8 @@ matching the `build_style` name, Example:
- `texmf` For texmf zip/tarballs that need to go into /usr/share/texmf-dist. Includes
duplicates handling.
- `tree-sitter` for tree-sitter language grammars.
<a id="build_helper"></a>
### build helper scripts
+54
View File
@@ -0,0 +1,54 @@
#
# This helper is for templates using building tree-sitter grammars.
#
do_build() {
: "${treesitter_src:=./src}"
CFLAGS="-fPIC -Wall -I ./ -std=c99 $CFLAGS"
CXXFLAGS="-fPIC -Wall -I ./ -fno-exceptions $CXXFLAGS"
LDFLAGS="-shared $LDFLAGS"
if [ -z "${treesitter_lang}" ]; then
treesitter_lang="$(jq -re '.name' "${treesitter_src}/grammar.json")"
fi
cd "$treesitter_src"
msg_verbose "$CC $CFLAGS -c ./*.c\n"
$CC $CFLAGS -c ./*.c
if compgen -G "./*.cc"; then
msg_verbose "$CXX $CXXFLAGS -c ./*.cc\n"
$CXX $CXXFLAGS -c ./*.cc
msg_verbose "$CXX $LDFLAGS -o "$treesitter_lang.so" ./*.o\n"
$CXX $LDFLAGS -o "$treesitter_lang.so" ./*.o
else
msg_verbose "$CC $LDFLAGS -o "$treesitter_lang.so" ./*.o\n"
$CC $LDFLAGS -o "$treesitter_lang.so" ./*.o
fi
unset treesitter_lang
}
do_check() {
tree-sitter test
}
do_install() {
: "${treesitter_src:=./src}" "${treesitter_queries:=./queries}"
if [ -z "${treesitter_lang}" ]; then
treesitter_lang="$(jq -re '.name' "${treesitter_src}/grammar.json")"
fi
# Some programs expect grammar libs as <lang>.so in a specific
# directory, some expect libtree-sitter-<lang>.so on the library path.
vinstall "${treesitter_src}/${treesitter_lang}.so" 755 "usr/lib/tree-sitter"
ln -s "tree-sitter/${treesitter_lang}.so" "${DESTDIR}/usr/lib/libtree-sitter-${treesitter_lang}.so"
if [ -d "${treesitter_queries}" ] && compgen -G "./${treesitter_queries}/*.scm"; then
vmkdir "usr/share/tree-sitter/queries/${treesitter_lang}"
vcopy "${treesitter_queries}/*.scm" "usr/share/tree-sitter/queries/${treesitter_lang}"
elif [ -d "${treesitter_queries}/${treesitter_lang}" ] && compgen -G "./${treesitter_queries}/${treesitter_lang}/*.scm"; then
vmkdir "usr/share/tree-sitter/queries/${treesitter_lang}"
vcopy "${treesitter_queries}/${treesitter_lang}/*.scm" "usr/share/tree-sitter/queries/${treesitter_lang}"
fi
unset treesitter_lang
}
@@ -0,0 +1,3 @@
lib32disabled=yes
hostmakedepends+=" jq"
checkdepends+=" tree-sitter-cli"