diff options
Diffstat (limited to 'admin/notes/tree-sitter/build-module')
-rw-r--r-- | admin/notes/tree-sitter/build-module/README | 17 | ||||
-rwxr-xr-x | admin/notes/tree-sitter/build-module/batch.sh | 20 | ||||
-rwxr-xr-x | admin/notes/tree-sitter/build-module/build.sh | 62 |
3 files changed, 99 insertions, 0 deletions
diff --git a/admin/notes/tree-sitter/build-module/README b/admin/notes/tree-sitter/build-module/README new file mode 100644 index 00000000000..ee6076c119c --- /dev/null +++ b/admin/notes/tree-sitter/build-module/README @@ -0,0 +1,17 @@ +To build the language definition for a particular language, run + + ./build.sh <language> + +eg, + + ./build.sh html + +The dynamic module will be in /dist directory + +To build all modules at once, run + + ./batch.sh + +This gives you C, JSON, Go, HTML, Javascript, CSS, Python, Typescript, +C#, C++, Rust. More can be added to batch.sh unless it's directory +strucure is not standard.
\ No newline at end of file diff --git a/admin/notes/tree-sitter/build-module/batch.sh b/admin/notes/tree-sitter/build-module/batch.sh new file mode 100755 index 00000000000..deed18978a1 --- /dev/null +++ b/admin/notes/tree-sitter/build-module/batch.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +languages=( + 'c' + 'cpp' + 'css' + 'c-sharp' + 'go' + 'html' + 'javascript' + 'json' + 'python' + 'rust' + 'typescript' +) + +for language in "${languages[@]}" +do + ./build.sh $language +done diff --git a/admin/notes/tree-sitter/build-module/build.sh b/admin/notes/tree-sitter/build-module/build.sh new file mode 100755 index 00000000000..16792d05cbb --- /dev/null +++ b/admin/notes/tree-sitter/build-module/build.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +lang=$1 + +if [ $(uname) == "Darwin" ] +then + soext="dylib" +else + soext="so" +fi + +echo "Building ${lang}" + +# Retrieve sources. +git clone "https://github.com/tree-sitter/tree-sitter-${lang}.git" \ + --depth 1 --quiet +if [ "${lang}" == "typescript" ] +then + lang="typescript/tsx" +fi +cp tree-sitter-lang.in "tree-sitter-${lang}/src" +cp emacs-module.h "tree-sitter-${lang}/src" +cp "tree-sitter-${lang}/grammar.js" "tree-sitter-${lang}/src" +cd "tree-sitter-${lang}/src" + +if [ "${lang}" == "typescript/tsx" ] +then + lang="typescript" +fi + +# Build. +cc -c -I. parser.c +# Compile scanner.c. +if test -f scanner.c +then + cc -fPIC -c -I. scanner.c +fi +# Compile scanner.cc. +if test -f scanner.cc +then + c++ -fPIC -I. -c scanner.cc +fi +# Link. +if test -f scanner.cc +then + c++ -fPIC -shared *.o -o "libtree-sitter-${lang}.${soext}" +else + cc -fPIC -shared *.o -o "libtree-sitter-${lang}.${soext}" +fi + +# Copy out. + +if [ "${lang}" == "typescript" ] +then + cp "libtree-sitter-${lang}.${soext}" .. + cd .. +fi + +mkdir -p ../../dist +cp "libtree-sitter-${lang}.${soext}" ../../dist +cd ../../ +rm -rf "tree-sitter-${lang}" |