Build parser.c and scanner.cc separately

This commit is contained in:
Arthur Baars
2020-10-27 14:26:20 +01:00
parent 74e9829609
commit 74dd4dcc2c

View File

@@ -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");
}