mirror of https://github.com/Wilfred/difftastic/
48 lines
1.6 KiB
Makefile
48 lines
1.6 KiB
Makefile
WEB_TREE_SITTER_FILES=README.md package.json tree-sitter-web.d.ts tree-sitter.js tree-sitter.wasm
|
|
TREE_SITTER_VERSION=v0.20.1
|
|
|
|
all: node_modules/web-tree-sitter tree-sitter-haskell.wasm
|
|
|
|
# build parser.c
|
|
src/parser.c: grammar.js
|
|
npx tree-sitter generate
|
|
|
|
# build patched version of web-tree-sitter
|
|
node_modules/web-tree-sitter:
|
|
@rm -rf tmp/tree-sitter
|
|
@git clone \
|
|
-c advice.detachedHead=false --quiet \
|
|
--depth=1 --branch=$(TREE_SITTER_VERSION) \
|
|
https://github.com/tree-sitter/tree-sitter.git \
|
|
tmp/tree-sitter
|
|
@cp tree-sitter.patch tmp/tree-sitter/
|
|
@>/dev/null \
|
|
&& cd tmp/tree-sitter \
|
|
&& git apply tree-sitter.patch \
|
|
&& ./script/build-wasm --debug
|
|
@mkdir -p node_modules/web-tree-sitter
|
|
@cp tmp/tree-sitter/LICENSE node_modules/web-tree-sitter
|
|
@cp $(addprefix tmp/tree-sitter/lib/binding_web/,$(WEB_TREE_SITTER_FILES)) node_modules/web-tree-sitter
|
|
@rm -rf tmp/tree-sitter
|
|
|
|
# build web version of tree-sitter-haskell
|
|
# NOTE: requires patched version of web-tree-sitter
|
|
tree-sitter-haskell.wasm: src/parser.c src/scanner.c
|
|
npx tree-sitter build-wasm
|
|
|
|
CC := cc
|
|
OURCFLAGS := -shared -fPIC -g -O0 -I src
|
|
|
|
clean:
|
|
rm -f debug *.o *.a
|
|
|
|
debug.so: src/parser.c src/scanner.c
|
|
$(CC) $(OURCFLAGS) $(CFLAGS) -o parser.o src/parser.c
|
|
$(CC) $(OURCFLAGS) $(CFLAGS) -o scanner.o src/scanner.c
|
|
$(CC) $(OURCFLAGS) $(CFLAGS) -o debug.so $(PWD)/scanner.o $(PWD)/parser.o
|
|
@echo ""
|
|
@echo "-----------"
|
|
@echo ""
|
|
@echo "To use the debug build with tree-sitter on linux, run:"
|
|
@echo "cp debug.so $HOME/.cache/tree-sitter/lib/haskell.so"
|