|
|
|
|
@ -1,16 +1,36 @@
|
|
|
|
|
use std::path::PathBuf;
|
|
|
|
|
|
|
|
|
|
fn build(package_name: &str, package_dir: &str, extra_c_files: &[&str]) {
|
|
|
|
|
fn build(package_name: &str, package_dir: &str, extra_files: &[&str]) {
|
|
|
|
|
let dir = PathBuf::from(package_dir);
|
|
|
|
|
|
|
|
|
|
let mut build = cc::Build::new();
|
|
|
|
|
build.include(&dir).warnings(false); // ignore unused parameter warnings
|
|
|
|
|
let mut c_files = vec!["parser.c"];
|
|
|
|
|
let mut cpp_files = vec![];
|
|
|
|
|
|
|
|
|
|
for file in extra_files {
|
|
|
|
|
if file.ends_with(".c") {
|
|
|
|
|
c_files.push(file);
|
|
|
|
|
} else {
|
|
|
|
|
cpp_files.push(file);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
build.file(dir.join("parser.c"));
|
|
|
|
|
for c_file in extra_c_files {
|
|
|
|
|
build.file(dir.join(c_file));
|
|
|
|
|
dbg!(&c_files);
|
|
|
|
|
dbg!(&cpp_files);
|
|
|
|
|
|
|
|
|
|
if !cpp_files.is_empty() {
|
|
|
|
|
let mut cpp_build = cc::Build::new();
|
|
|
|
|
cpp_build.include(&dir).cpp(true);
|
|
|
|
|
for file in cpp_files {
|
|
|
|
|
cpp_build.file(dir.join(file));
|
|
|
|
|
}
|
|
|
|
|
cpp_build.compile(package_name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let mut build = cc::Build::new();
|
|
|
|
|
build.include(&dir).warnings(false); // ignore unused parameter warnings
|
|
|
|
|
for file in c_files {
|
|
|
|
|
build.file(dir.join(file));
|
|
|
|
|
}
|
|
|
|
|
build.compile(package_name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|