#!/bin/bash lang=$1 if [ $(uname) == "Darwin" ] then soext="dylib" else soext="so" fi echo "Building ${lang}" # Retrieve sources. if [ "${lang}" == "typescript" ] || [ "${lang}" == "tsx" ] then git clone "https://github.com/tree-sitter/tree-sitter-typescript.git" \ --depth 1 --quiet lang="typescript/${lang}" else git clone "https://github.com/tree-sitter/tree-sitter-${lang}.git" \ --depth 1 --quiet fi cp "tree-sitter-${lang}/grammar.js" "tree-sitter-${lang}/src" cd "tree-sitter-${lang}/src" if [ "${lang}" == "typescript/$1" ] then lang=$1 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" ] || [ "${lang}" == "tsx" ] then cp "libtree-sitter-${lang}.${soext}" .. cd .. fi mkdir -p ../../dist cp "libtree-sitter-${lang}.${soext}" ../../dist cd ../../ if [ "${lang}" == "typescript" ] || [ "${lang}" == "tsx" ] then rm -rf "tree-sitter-typescript" else rm -rf "tree-sitter-${lang}" fi