diff options
Diffstat (limited to 'tree-sitter-yts/package.nix')
-rw-r--r-- | tree-sitter-yts/package.nix | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tree-sitter-yts/package.nix b/tree-sitter-yts/package.nix new file mode 100644 index 0000000..11ab5a8 --- /dev/null +++ b/tree-sitter-yts/package.nix @@ -0,0 +1,59 @@ +# taken from nixpgks: pkgs/development/tools/parsing/tree-sitter/grammar.nix +{ + stdenv, + nodejs, + tree-sitter, + lib, +}: +# # Build a parser grammar and put the resulting shared object in `$out/parser` +# { +# # language name +# language ? "yts", +# version ? "1.0.0", +# src ? ./., +# location ? null, +# generate ? false, +# ... +# } @ args: +stdenv.mkDerivation { + pname = "yts-grammar"; + version = "1.0.0"; + + src = ./.; + + nativeBuildInputs = [nodejs tree-sitter]; + + CFLAGS = ["-Isrc" "-O2"]; + CXXFLAGS = ["-Isrc" "-O2"]; + + stripDebugList = ["parser"]; + + configurePhase = '' + tree-sitter generate + ''; + + # When both scanner.{c,cc} exist, we should not link both since they may be the same but in + # different languages. Just randomly prefer C++ if that happens. + buildPhase = '' + runHook preBuild + if [[ -e src/scanner.cc ]]; then + $CXX -fPIC -c src/scanner.cc -o scanner.o $CXXFLAGS + elif [[ -e src/scanner.c ]]; then + $CC -fPIC -c src/scanner.c -o scanner.o $CFLAGS + fi + $CC -fPIC -c src/parser.c -o parser.o $CFLAGS + rm -rf parser + $CXX -shared -o parser *.o + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir $out + mv parser $out/ + if [[ -d queries ]]; then + cp -r queries $out + fi + runHook postInstall + ''; +} |