diff --git a/extractor/build.rs b/extractor/build.rs index c152a1f4943..53f52e6778e 100644 --- a/extractor/build.rs +++ b/extractor/build.rs @@ -1,14 +1,27 @@ use std::path::PathBuf; fn main() { - let dir: PathBuf = ["../tree-sitter-ruby", "src"].iter().collect(); - let mut build = cc::Build::new(); - build - .include(&dir) - .file(&dir.join("parser.c")) - .file(&dir.join("scanner.cc")); - if !cfg!(windows) { - build.cpp(true).compiler("clang"); - } - build.compile("tree-sitter-ruby"); + let src_dir: PathBuf = ["..", "tree-sitter-ruby", "src"].iter().collect(); + + let mut c_config = cc::Build::new(); + c_config.include(&src_dir); + c_config + .flag_if_supported("-Wno-unused-parameter") + .flag_if_supported("-Wno-unused-but-set-variable") + .flag_if_supported("-Wno-trigraphs"); + let parser_path = src_dir.join("parser.c"); + c_config.file(&parser_path); + println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap()); + c_config.compile("parser"); + + let mut cpp_config = cc::Build::new(); + cpp_config.cpp(true); + cpp_config.include(&src_dir); + cpp_config + .flag_if_supported("-Wno-unused-parameter") + .flag_if_supported("-Wno-unused-but-set-variable"); + let scanner_path = src_dir.join("scanner.cc"); + cpp_config.file(&scanner_path); + println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); + cpp_config.compile("scanner"); }