From 49d7750285e00568eb3c7cc48e0b1a04bf13ba93 Mon Sep 17 00:00:00 2001 From: Wilfred Hughes Date: Mon, 16 Aug 2021 21:33:11 -0700 Subject: [PATCH] Allow each tree-sitter package to specify its files to build --- build.rs | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/build.rs b/build.rs index 9b2c5332a..3f2bd9a00 100644 --- a/build.rs +++ b/build.rs @@ -1,25 +1,36 @@ use std::path::PathBuf; -fn build(package_name: &str, has_scanner: bool) { - let dir: PathBuf = ["vendor", package_name, "src"].iter().collect(); +fn build(package_name: &str, package_dir: &str, extra_c_files: &[&str]) { + let dir = PathBuf::from(package_dir); let mut build = cc::Build::new(); - build.include(&dir).warnings(false); // ignore unused parameter warnings build.file(dir.join("parser.c")); - if has_scanner { - build.file(dir.join("scanner.c")); + for c_file in extra_c_files { + build.file(dir.join(c_file)); } build.compile(package_name); } fn main() { - build("tree-sitter-css", true); - build("tree-sitter-elisp", false); - build("tree-sitter-go", false); - build("tree-sitter-javascript", true); - build("tree-sitter-json", false); - build("tree-sitter-rust", true); + build( + "tree-sitter-css", + "vendor/tree-sitter-css/src", + &["scanner.c"], + ); + 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"], + ); }