Wire together some of the rsyslog and bind generated code
This commit is contained in:
parent
df799519ac
commit
7f887e44cb
|
@ -0,0 +1,4 @@
|
|||
/target
|
||||
Cargo.lock
|
||||
*.sw*
|
||||
tmp/
|
|
@ -0,0 +1,11 @@
|
|||
[package]
|
||||
name = "impstatsd"
|
||||
version = "0.1.0"
|
||||
authors = ["R. Tyler Croy <rtyler@brokenco.de>"]
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
statsd = "^0.9.0"
|
||||
|
||||
[build-dependencies]
|
||||
bindgen = "0.53.1"
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
|
||||
build:
|
||||
BINDGEN_EXTRA_CLANG_ARGS="-I./contrib/rsyslog/runtime -I./contrib/rsyslog/grammar" cargo build
|
||||
|
||||
|
||||
contrib/rsyslog/configure:
|
||||
(cd contrib/rsyslog && bash autogen.sh \
|
||||
--disable-libgcrypt \
|
||||
--disable-liblogging-stdlog \
|
||||
--disable-regexp \
|
||||
--disable-klog \
|
||||
--disable-generate-man-pages)
|
||||
|
||||
rsyslogd: contrib/rsyslog/configure
|
||||
$(MAKE) -C contrib/rsyslog
|
||||
|
||||
|
||||
|
||||
.PHONY: build help
|
|
@ -0,0 +1,32 @@
|
|||
extern crate bindgen;
|
||||
|
||||
use std::env;
|
||||
use std::path::PathBuf;
|
||||
|
||||
fn main() {
|
||||
// Tell cargo to tell rustc to link the system bzip2
|
||||
// shared library.
|
||||
//println!("cargo:rustc-link-lib=bz2");
|
||||
|
||||
// Tell cargo to invalidate the built crate whenever the wrapper changes
|
||||
println!("cargo:rerun-if-changed=src/binding.h");
|
||||
|
||||
let bindings = bindgen::Builder::default()
|
||||
// The input header we would like to generate
|
||||
// bindings for.
|
||||
.header("src/binding.h")
|
||||
// Tell cargo to invalidate the built crate whenever any of the
|
||||
// included header files changed.
|
||||
.parse_callbacks(Box::new(bindgen::CargoCallbacks))
|
||||
// Finish the builder and generate the bindings.
|
||||
.generate()
|
||||
// Unwrap the Result and panic on failure.
|
||||
.expect("Unable to generate bindings");
|
||||
|
||||
// Write the bindings to the $OUT_DIR/bindings.rs file.
|
||||
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
|
||||
bindings
|
||||
.write_to_file(out_path.join("bindings.rs"))
|
||||
.expect("Couldn't write bindings!");
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
/*
|
||||
* This file is for bindgen to wrap all the rsyslog code we need
|
||||
*/
|
||||
|
||||
#include <rsyslog.h>
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
#![allow(non_upper_case_globals)]
|
||||
#![allow(non_camel_case_types)]
|
||||
#![allow(non_snake_case)]
|
||||
|
||||
|
||||
/*
|
||||
* Pull our wacky rsyslog.h generated bindings
|
||||
*/
|
||||
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
|
||||
|
||||
|
||||
fn modGetType(m: &mut eModType_t) -> rsRetVal {
|
||||
// Set ourselves up as an input module
|
||||
*m = 0;
|
||||
return 0; // ok
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
/**
|
||||
* Verify that the modGetType function works properly
|
||||
*/
|
||||
#[test]
|
||||
fn test_modGetType() {
|
||||
/*
|
||||
* Setting this to some garbage value
|
||||
*/
|
||||
let mut m: eModType_t = 2;
|
||||
assert_eq!(0, modGetType(&mut m));
|
||||
assert_eq!(0, m);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue