library is configurable now

This commit is contained in:
2024-05-31 12:35:29 +02:00
parent 637d87756c
commit 89a90f55b4
9 changed files with 116 additions and 10 deletions

View File

@ -199,12 +199,15 @@ impl Builder {
self.build.include(&autoconf_dir);
autoconf_dir.push("csp");
std::fs::create_dir_all(&autoconf_dir)?;
generate_autoconf_file(autoconf_dir, &self.cfg)
generate_autoconf_header_file(autoconf_dir, &self.cfg)
}
pub fn generate_autoconf_rust_file(&self, out_dir: PathBuf) -> io::Result<()> {
generate_autoconf_rust_file(out_dir, &self.cfg)
}
}
pub fn generate_autoconf_file(out_dir: PathBuf, cfg: &Config) -> io::Result<()> {
// panic!("cargo:warning=outdir for autoconf file: {:?}", out_dir);
pub fn generate_autoconf_header_file(out_dir: PathBuf, cfg: &Config) -> io::Result<()> {
let mut autoconf_file_string = String::new();
#[cfg(unix)]
autoconf_file_string.push_str("#define CSP_POSIX 1\n");
@ -307,6 +310,49 @@ pub fn generate_autoconf_file(out_dir: PathBuf, cfg: &Config) -> io::Result<()>
Ok(())
}
pub fn generate_autoconf_rust_file(out_dir: PathBuf, cfg: &Config) -> io::Result<()> {
let mut autoconf_file_string = String::new();
autoconf_file_string.push_str(&format!(
"const {}: usize = {}\n",
autoconf::CFG_CONN_RXQUEUE_LEN,
cfg.conn_rx_queue_len
));
autoconf_file_string.push_str(&format!(
"const {}: usize = {}\n",
autoconf::CFG_QFIFO_LEN,
cfg.qfifo_len
));
autoconf_file_string.push_str(&format!(
"const {}: usize = {}\n",
autoconf::CFG_PORT_MAX_BIND,
cfg.port_max_bind
));
autoconf_file_string.push_str(&format!(
"const {}: usize = {}\n",
autoconf::CFG_CONN_MAX,
cfg.conn_max
));
autoconf_file_string.push_str(&format!(
"const {}: usize = {}\n",
autoconf::CFG_BUFFER_SIZE,
cfg.buffer_size
));
autoconf_file_string.push_str(&format!(
"const {}: usize = {}\n",
autoconf::CFG_RDP_MAX_WINDOW,
cfg.rdp_max_window
));
autoconf_file_string.push_str(&format!(
"const {}: usize = {}\n",
autoconf::CFG_RTABLE_SIZE,
cfg.rtable_size
));
let out_file = out_dir.join("autoconfig.rs");
let mut file = std::fs::File::create(out_file)?;
file.write_all(autoconf_file_string.as_bytes())?;
Ok(())
}
#[cfg(test)]
mod tests {
// TODO: Unittest autoconf generator.