aboutsummaryrefslogtreecommitdiffstats
path: root/tree-sitter-yts/package.nix
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-11-04 20:45:29 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-11-04 20:45:29 +0100
commit676cc2b5619ecd517df42b07dbc2c22449a47179 (patch)
tree622546b5b6df3cc05171a1b016365ffd612abcd6 /tree-sitter-yts/package.nix
parentstyle(yt/main): Use consistent use qualifications (diff)
downloadyt-676cc2b5619ecd517df42b07dbc2c22449a47179.zip
refactor(tree-sitter-yts): Move in tree
Diffstat (limited to '')
-rw-r--r--tree-sitter-yts/package.nix59
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
+ '';
+}