Allow each tree-sitter package to specify its files to build

ida_star
Wilfred Hughes 2021-08-16 21:33:11 +07:00
parent 4a6bb3db1f
commit 49d7750285
1 changed files with 22 additions and 11 deletions

@ -1,25 +1,36 @@
use std::path::PathBuf; use std::path::PathBuf;
fn build(package_name: &str, has_scanner: bool) { fn build(package_name: &str, package_dir: &str, extra_c_files: &[&str]) {
let dir: PathBuf = ["vendor", package_name, "src"].iter().collect(); let dir = PathBuf::from(package_dir);
let mut build = cc::Build::new(); let mut build = cc::Build::new();
build.include(&dir).warnings(false); // ignore unused parameter warnings build.include(&dir).warnings(false); // ignore unused parameter warnings
build.file(dir.join("parser.c")); build.file(dir.join("parser.c"));
if has_scanner { for c_file in extra_c_files {
build.file(dir.join("scanner.c")); build.file(dir.join(c_file));
} }
build.compile(package_name); build.compile(package_name);
} }
fn main() { fn main() {
build("tree-sitter-css", true); build(
build("tree-sitter-elisp", false); "tree-sitter-css",
build("tree-sitter-go", false); "vendor/tree-sitter-css/src",
build("tree-sitter-javascript", true); &["scanner.c"],
build("tree-sitter-json", false); );
build("tree-sitter-rust", true); build("tree-sitter-elisp", "vendor/tree-sitter-elisp/src", &[]);
build("tree-sitter-go", "vendor/tree-sitter-go/src", &[]);
build(
"tree-sitter-javascript",
"vendor/tree-sitter-javascript/src",
&["scanner.c"],
);
build("tree-sitter-json", "vendor/tree-sitter-json/src", &[]);
build(
"tree-sitter-rust",
"vendor/tree-sitter-rust/src",
&["scanner.c"],
);
} }